2012年10月7日日曜日

開発環境

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

その他参考書籍

5.

コード(TextWrangler)

sample.pl

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.012;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

sub divisors {
  my $number = shift;
  
  my @divisors = ();
  for(2..($number / 2)){
    push @divisors, $_ unless $number % $_;
  }
  return @divisors;
}

given($ARGV[0]){
  my $fav = 10;
  when(/\D/){die "コマンドライン引数には数を指定してください。";}
  my @divisors = divisors $_;
  when([] ~~ @divisors){print "素数\n";continue;}
  when(!(2 ~~ @divisors)){print "奇数\n";continue;}
  when(2 ~~ @divisors){print "偶数\n";continue;}
  when($fav ~~ @divisors){print "好きな数${fav}の倍数\n";continue;}
  default {print "@divisors\n";}
}

入出力結果(Terminal)

$ ./sample.pl 99
奇数
3 9 11 33
$ ./sample.pl 100
偶数
好きな数10の倍数
2 4 5 10 20 25 50
$ ./sample.pl 101
素数
奇数

$ ./sample.pl 102
偶数
2 3 6 17 34 51
$ ./sample.pl 103
素数
奇数

$ ./sample.pl 104
偶数
2 4 8 13 26 52
$ ./sample.pl 105
奇数
3 5 7 15 21 35
$ ./sample.pl 106
偶数
2 53
$ ./sample.pl 107
素数
奇数

$ ./sample.pl 108
偶数
2 3 4 6 9 12 18 27 36 54
$ ./sample.pl 109
素数
奇数

$ ./sample.pl 110
偶数
好きな数10の倍数
2 5 10 11 22 55
$

0 コメント:

コメントを投稿