エントリー

※注意:このエントリーは、旧日記「みおだいあり~」からデータを移管したものです。

[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 @_ * $_;
}

問題を解く速度重視で書いたため、汚いコードになっていますが、答えはこれで合っているハズです・・・。たぶん!

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前 *
URL
コメント *
閲覧制限 *
【スパム対策】 2 × 2 × 2 = ? (半角数字で)

ユーティリティ

user profile

calendar

102024/1112
S M T W T F S
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

tag cloud