Created
November 5, 2010 17:52
-
-
Save koba04/664527 to your computer and use it in GitHub Desktop.
Closure Sample (AKBを使って)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl | |
use utf8; | |
use strict; | |
use warnings; | |
use Encode; | |
use List::Util qw/shuffle/; | |
# AKB 48 って48人ではない? | |
my @AKB48 = (1..47, '前田敦子'); # 数値でごめんなさい。 | |
# CDを買うとメンバーの誰かに会えるとする。 | |
# 関係者のコネもなし。(やらせで配列に直接アクセスすることは出来ない) | |
# 一度会ったメンバーは除外していくことが出来る。 | |
my $cd = sub { | |
my @shuffled_akb = shuffle(@AKB48); | |
return sub { | |
return shift @shuffled_akb; | |
} | |
}; | |
# 3人のファンが前田敦子に会いたいとする。 | |
for my $fan_no (1..3 ) { | |
my $buy_cd = $cd->(); | |
my $pay = 0; | |
my $member; | |
do { | |
$pay += 1000; | |
$member = $buy_cd->(); | |
} while ($member ne '前田敦子'); | |
print encode_utf8("前田敦子ファン${fan_no}は総額${pay}円支払いました。\n"); | |
} | |
# 1回目 | |
# 前田敦子ファン1は総額15000円支払いました。 | |
# 前田敦子ファン2は総額32000円支払いました。 | |
# 前田敦子ファン3は総額15000円支払いました。 | |
# 2回目 | |
# 前田敦子ファン1は総額29000円支払いました。 | |
# 前田敦子ファン2は総額48000円支払いました。 | |
# 前田敦子ファン3は総額3000円支払いました。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment