2012年7月5日木曜日

開発環境

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

5.

コード(TextWrangler)

#!/usr/bin/env perl
use strict;
use warnings;
use 5.012;

given($ARGV[0]){
  when(!/^\d*$/){die "コマンドライン引数に数を指定";}
  my @divisors = divisors($_);
  print "好きな数を入力: ";
  chomp(my $fav = <STDIN>);
  when(!(2 ~~ @divisors)){say "奇数";continue;}
  when(2 ~~ @divisors){say "偶数";continue;}
  when($fav ~~ @divisors){say "好きな数の倍数";continue;}
  when([] ~~ @divisors){say "素数";continue;}
  default{say "約数一覧: @divisors";}
}

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

入出力結果(Terminal)

$ ./sample.pl 99
好きな数を入力: 10
奇数
約数一覧: 3 9 11 33
>$ ./sample.pl 99
好きな数を入力: 11
奇数
好きな数の倍数
約数一覧: 3 9 11 33
>$ ./sample.pl 50
好きな数を入力: 5
偶数
好きな数の倍数
約数一覧: 2 5 10 25$ ./sample.pl 50
好きな数を入力: 6
偶数
約数一覧: 2 5 10 25
$

0 コメント:

コメントを投稿