- 2008/10/2100:00
[Perl] Perl30分間トレーニング#概要
最近全然Perlを使ってなくて(以前本気で触ったのは、もう3年前?)、Perlのことを聞かれても、自信もって返せないことがしばしば。
ってなことで、気が向いた日に、30分だけPerlプログラミングの練習&復習をやってみることにしてみました。
主にボケ防止のために。
ただ、プログラミングをやろうにも、わかる問題がないと始められませんし、難しすぎると30分じゃ終わりませんので、かなり簡単な問題を探してみました。
ってことで、しばらくは、高校生対象のプログラミング大会の過去問題をPerlで解いていくことにしますた。
俺ルールとして、以下の制限をかけてみました。
- Google先生は出張中。
- 使っていい参考書は、家にあるPerlの書籍と、和英辞典。
- ディスプレイは、最大2枚まで使用可能。
- 問題を解くのに使ってもよい環境は、Perl 5.8.8 on FreeBSD 7.0。
- 作ったPerlプログラムは自宅鯖に転送して、実行。
- 複数行に渡る入力データは、リダイレクションで標準入力する。
- 30分たったら、いくら途中でもそこで今日はおしまい。
- 解けた問題の答案(ソース)はここに晒して、コメント欄にて皆からふるぼっこにされまくる。
[Perl] Perl30分間トレーニング#1
Perl30分間トレいちにちめ。
今回挑んだ問題は、↓これ↓。
30分もあれば結構たくさん解けると思ったけど、意外に時間がかかってしまい、6問目の途中でタイムアップでした。
問題1の答案
#! /usr/local/bin/perl $x = 'x'; for $i (1..9) { printf "$i$x$_=%d\n", $i * $_ for (1..9); }
問題2の答案
#! /usr/local/bin/perl <>>=60 and print "YES\n" or print "NO\n" ;
問題3の答案
#! /usr/local/bin/perl $[ = 1; while (<>) { chomp $_; push (@m, $_); } @n = sort { $b <=> $a } @m; print @n[$_] . "\n" for (1..3);
問題4の答案
#! /usr/local/bin/perl print $cnt = <> =~ tr/0-9/0-9/ . "\n";
問題5の答案
#! /usr/local/bin/perl $[ = 1, $i = 1; while (<>) { chomp $_; push (@hen, $_); } @s = sort { $b <=> $a } @hen; &pow($s[$i++]) == &pow($s[$i++]) + &pow($s[$i]) and print "YES\n" or print "NO\n" ; sub pow { return @_ * $_; }
問題を解く速度重視で書いたため、汚いコードになっていますが、答えはこれで合っているハズです・・・。たぶん!
- 2008/10/21 00:00
- 旧日記のアーカイブ
- Permalink
- nmio
- Comment(0)
comment