Mac OS X 10.4.11でPerlを使ってみる

nesys Add comments
タグ: ,
add to hatena hatena.comment (2) add to del.icio.us (1) add to livedoor.clip (1) add to Yahoo!Bookmark (0) Total: 4

MacもUNIXであるため、Perlが使える。
MacBookではデフォルトでインストールされているため、それを利用しよう。

Perlのディレクトリパスを特定する

$ which perl

以上のコマンドでperlの位置を確認しよう。
/usr/bin/perl にあった。

スクリプトを書く

Perlスクリプトをコマンドラインで実行してもいいが、今回はファイルを作成して実行してみよう。

$ vi fizzbuzz.pl
#!/usr/bin/perl -w
for ($i=1; $i<=100; $i++) {
	if (($i%3) && ($i%5)) { print $i; }
	if (($i%3) eq 0) { print "Fizz"; }
	if (($i%5) eq 0) { print "Buzz"; }
	print "\n";
}

スクリプトの最初には特定したPerlのパスを指定する。
-wオプションを付けることで、色々と有益な警告を表示するようになるため、特に理由がない場合、付けることが推薦されている。

Fizz-Buzz問題とは

ちなみこのスクリプトは見て明らかのようにFizz-Buzz問題をどんな初心者にも分かりやすく(?)書いてみた。これ以上分かりやすくできるのかね。
Fizz-Buzz問題とは以下のようなプログラムのこと。

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
どうしてプログラマに・・・プログラムが書けないのか?
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

一行のコマンドライン内に収めて最短60kb前後でも書けるので興味があればやってみるといい。Perlに限らず、他の言語でもやって、どの言語で一番短く書けるかなんて競ってみるのも面白そうだ。
ちなみに短く書くとこんな感じになる。

print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..1e2

TAKESAKO @ Yet another Cybozu Labs: FizzBuzz - Golf Challenge
http://labs.cybozu.co.jp/blog/takesako/2007/05/fizzbuzz.html

あと、現状におけるFizz-Buzz問題の最短コードはBashによる43kbらしい。どんなコードなんだろう。
anarchy golf - FizzBuzz
http://golf.shinh.org/p.rb?FizzBuzz#ranking

実行する

実行権限を与え、実行する。

$ chmod 755 fizzbuzz.pl
$ ./fizzbuzz.pl
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
31
32
Fizz
34
Buzz
Fizz
37
38
Fizz
Buzz
41
Fizz
43
44
FizzBuzz
46
47
Fizz
49
Buzz
Fizz
52
53
Fizz
Buzz
56
Fizz
58
59
FizzBuzz
61
62
Fizz
64
Buzz
Fizz
67
68
Fizz
Buzz
71
Fizz
73
74
FizzBuzz
76
77
Fizz
79
Buzz
Fizz
82
83
Fizz
Buzz
86
Fizz
88
89
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz

以上。MacでPerlを使い、さらにFizz-Buzz問題もやってみた。
よくよく考えてみたらMac関係なく、基本的にUNIX環境で行っているようなことをしただけという……w

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン