Perlでランダムで0から9の数字を出して、すべての数字が揃ったら終わるという処理を書いてみた。
プログラミングの地力を上げたいなぁと思い、数学パズルっぽいのをコードで解いています。棋力を上げるために詰将棋を解くようなノリです。ある問題を解くために「0から9の数字が全て出てきたら終了」という処理が欲しかったので書いてみました。
use strict; use warnings; use feature qw/say/; use utf8; use Data::Dumper; # 0から9の配列を作って、出た数字を抜いていき、空になったら終わる作戦 my @array = qw(0 1 2 3 4 5 6 7 8 9); my @temp_arr = @array; my $count = 0; while (@temp_arr) { my $random_one = int(rand 10); # 出た数字を確認 say $random_one; # 出た数字を抜いていく @temp_arr = grep {$_ != $random_one} @temp_arr; # 配列の要素が減っていく様子を確認 say Dumper @temp_arr; $count++; } # 何回ループしたかを確認 say "$count times Loop."; say "Finish!";
Perlの文法だけじゃなくって、データ構造どうすれば解けるのか?ってところに思いを馳せれるようになってきてて、イイ感じ。