2011年7月8日金曜日

開発環境

  • Mac OS X Snow Leopard (OS)
  • TextWrangler(Text Editor) (いずれはBBEditを入手したい!)
  • Script言語:Perl

『初めてのPerl 第5版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-427-9) の15章(スマートマッチとgiven-when), 15.6(練習問題)、2を解いてみる。

 

2.

やり方の1つ。(「やり方は何通りもある」(TIMTOWTDI(There Is More Than One Way To Do It.)))

コード(TextWrangler)

#!/usr/bin/perl
use 5.010;
use strict;
use warnings;

my $message="";
given(chomp(my $num=<STDIN>)){
  when($num % 3==0){$message.="Fizz ";continue}
  when($num % 5==0){$message.="Bin ";continue}
  when($num % 7==0){$message.="Sausage";}
  }
say $message;

入出力結果(Ternimal)

15でちゃんと"Fizz Bin"と表示された。

ループで1から1000までの数値を渡して"Fizz Bin Sausage"と表示する最小の数を調べる。

コード(TextWrangler)

#!/usr/bin/perl
use 5.010;
use strict;
use warnings;

foreach(1..1000){
  my $message="";
  given($_){
    when($_ % 3==0){$message.="Fizz ";continue}
    when($_ % 5==0){$message.="Bin ";continue}
    when($_ % 7==0){$message.="Sausage";}
    }
    if($message eq "Fizz Bin Sausage"){
      say "$_ $message";
      last;
      }
}

入出力結果(Ternimal)

"Fizz Bin Sausage"と表示する最小の数は105。

ついでに1から105までの数すべてを表示してみる。

コード(TextWrangler)

#!/usr/bin/perl
use 5.010;
use strict;
use warnings;

foreach(1..105){
my $message="";
  given($_){
    when($_ % 3==0){$message.="Fizz ";continue}
    when($_ % 5==0){$message.="Bin ";continue}
    when($_ % 7==0){$message.="Sausage";}
    }
    say "$_ $message";
}

入出力結果(Ternimal)

ファイルの用意が必要な場合はO'Reilly Japan - 初めてのPerl 第5版の関連ファイルのプログラム例に含まれているものを使用しています。

0 コメント:

コメントを投稿