#!/usr/bin/perl use strict; use warnings; use utf8; use open ':utf8'; binmode STDOUT, ":utf8"; binmode STDIN, ":utf8"; while (<>) { chomp; my $key = $_; my ($str, $idx) = make_quiz($key, 100); print "T:$key\nQ:$str\n"; substr($str, $idx, length($key) + 2, "*$key*"); print "A:$str (at $idx)\n"; } sub make_quiz { my ($key, $len) = @_; my @c = split(//, $key); my $klen = length($key); my ($str, @pos); while (@pos != 1) { $str = ""; @pos = (); for (my $i = 0; $i < $len; $i++) { # 文字をランダムに配置 $str .= $c[int(rand(@c))]; } if ($str !~ /$key/) { # $key が長めのとき対策 substr($str, int(rand($len - $klen)), $klen, $key) } for (my $i = 0; $i < $len - $klen; $i++) { # 正解を格納 push @pos, $i if substr($str, $i, $klen) eq $key; } } return $str, $pos[0]; }
% echo 'ありさん' | ./ranpu.pl T:ありさん Q:りありりあさんさりんさりさあさありさあんりんあんさんんさんんんあ りんさりりんあありんあんんさあんさりあさありさああさささんんああり さんんんんさああんりりんさんあありりんあささあさんりりさんありさあ あん A:りありりあさんさりんさりさあさありさあんりんあんさんんさんんんあ りんさりりんあありんあんんさあんさりあさありさああさささんんあ*あ りさん*んさああんりりんさんあありりんあささあさんりりさんありさあ あん (at 63) % echo 'スリジャヤワルダナプラコッテ' | ./ranpu.pl T:スリジャヤワルダナプラコッテ Q:ダワャラジッダリワラテッジワナルャスダワラワッラテコダララスッコ ジジヤプコダナテワテダルスリスコルジヤダココリワジスリジヤッダスヤ ルャダワスリジャヤワルダナプラコッテリスダリャラリプステジコダヤス ププ A:ダワャラジッダリワラテッジワナルャスダワラワッラテコダララスッコ ジジヤプコダナテワテダルスリスコルジヤダココリワジスリジヤッダスヤ ルャダワ*スリジャヤワルダナプラコッテ*ダリャラリプステジコダヤスプ プ (at 69) % echo 'まだ東京で消耗' | ./ranpu.pl T:まだ東京で消耗 Q:耗東消だだだ京東耗だ消でだ京東耗耗消東まだ東京で消耗東ま京ま京消 東京耗京ま京耗だま耗だででま京京消耗で耗でま耗でま京耗までで耗東で 東でまだで東京京で消東消消京耗だ消京京で耗京京京消だまま東だ耗消京 耗耗 A:耗東消だだだ京東耗だ消でだ京東耗耗消東*まだ東京で消耗*京ま京消東 京耗京ま京耗だま耗だででま京京消耗で耗でま耗でま京耗までで耗東で東 でまだで東京京で消東消消京耗だ消京京で耗京京京消だまま東だ耗消京耗 耗 (at 19)
工場研修の生産性のなさに嫌気が差してきたので「ボ」「ン」「ジョ」「ヴィ」をランダムに表示して「ジョン・ボン・ジョヴィ」が揃ったら終了するプログラム作りました pic.twitter.com/xX4pyLbq3s
— YaGi (@yagiyyyy) 2014, 6月 2