Togetterで話題になっているJOJO問題素数のときだけ"JOJO!"って出力するプログラム - TogetterをPerlで解いてみた。
そもそもJOJO問題って?
素数のときだけ"JOJO!"って出力するプログラム - Togetter
FizzBuzzより、「素数のときだけ"JOJO!"って出力する
プログラム」のほうがネタ的にもいいと思う。
[うさみみ*´×`*エンジニア]
とりあえずベタに、入力値について入力値から1引きつつ割り切れるか判定して、
そのフラグでもって出力を分けてみた。
jojo.pl
#/bin/perl
use strict;
use warnings;
my $input = $ARGV[0];
for (my $i = $input; $i > 0 ; $i--){
my $is_jojo = 1;
for (my $j = $i - 1; $j > 1; $j--){
next unless $i % $j == 0;
$is_jojo = 0;
}
print $is_jojo ? "JOJO!\n" : "$i\n";
}
↓出力
OKそう。簡単ですね。
※入力値と同じ値で割り始めちゃったりとか、1で割っちゃったりとかして少し悩んだのはここだけの秘密。
もうちょっと効率を考えて、割る数は小さい方から判定してフラグが立ったら中のループを抜けるようにしてみた。
#/bin/perl
use strict;
use warnings;
my $input = $ARGV[0];
for (my $i = $input; $i > 0 ; $i --){
my $is_jojo = 1;
for (my $j = 2; $j < $i; $j ++){
next unless $i % $j == 0;
$is_jojo = 0;
last;
}
print $is_jojo ? "JOJO!\n" : "$i\n";
}
これもOKっぽい。
あえて正規表現とか使って難しく解くとかサブルーチン化してベンチマークしたりとかもありだと思ったけど、かったるかったので今日はここまでで。
※あとでWikiったら1は厳密には素数じゃないらしい・・・
ジョジョの奇妙な冒険 全63巻完結セット (ジャンプ・コミックス)
- 作者: 荒木飛呂彦
- 出版社/メーカー: 集英社
- 発売日: 2010/01
- メディア: コミック
- クリック: 17回
- この商品を含むブログ (1件) を見る
- 作者: 上遠野浩平,荒木飛呂彦
- 出版社/メーカー: 集英社
- 発売日: 2011/09/16
- メディア: 単行本
- 購入: 19人 クリック: 945回
- この商品を含むブログ (84件) を見る