開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs(Text Editor)
- プログラミング言語: Perl
『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2)の15章(スマートマッチとgiven-when)の15.6(練習問題)5を解いてみる。
その他参考書籍
5.
コード(BBEdit)
sample.pl
#!/usr/bin/env perl use strict; use warnings; use 5.016; use utf8; binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; my $fav = 10; given ($ARGV[0]) { say $_; when (/\D/) {die "コマンドライン引数には数を指定してください\n";} my @result = divisors($_); my @empty = (); when (@result ~~ @empty) {say "素数"; continue;} when (2 ~~ @result) {say "偶数";continue;} when (! (2 ~~ @result)) {say "奇数"; continue;} when($fav ~~ @result) {say "好きな数($fav)の倍数";continue;} default {say "約数一覧 @result"; continue;} } sub divisors { my $number = shift; my @divisors = (); for ( 2 .. ( $number / 2) ) { push @divisors, $_ unless $number % $_; } return @divisors; }
入出力結果(Terminal)
$ ./sample.pl 99 99 奇数 約数一覧 3 9 11 33 $ ./sample.pl 100 100 偶数 好きな数(10)の倍数 約数一覧 2 4 5 10 20 25 50 $ ./sample.pl perl Wide character in die at ./sample.pl line 11. コマンドライン引数には数を指定してください $
ちなみにpython3.3の場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 ## Copyright (C) 2013 by kamimura #-*- coding: utf-8 -*- import sys, re def divisors(num): divs = [] for n in range(2, num // 2 + 1 ): if num % n == 0: divs.append(n) return divs num = sys.argv[1] fav = 10 if re.search(r"\D", num): print("コマンドライン引数には数を指定してください") else: print(num) result = divisors(int(num)) if result == []: print("素数") else: if 2 in result: print("偶数") else: print("奇数") if fav in result: print("好きな数({0})の倍数".format(fav)) print("約数一覧 {0}".format(" ".join(map(lambda x: str(x), result))))
入出力結果(Terminal)
$ ./sample.py 99 99 奇数 約数一覧 3 9 11 33 $ ./sample.py 100 100 偶数 好きな数(10)の倍数 約数一覧 2 4 5 10 20 25 50 $ ./sample.py python コマンドライン引数には数を指定してください $
0 コメント:
コメントを投稿