Perl
-- 2010/03/05 00:26
今日らくだ本とか言うのを立ち読みしてPerlの普段使わない膨大な複雑さを知った
具体的に言うとリファレンスとか。
某Perlマスターっぽい人に出してもらったクイズ。
1.
$max = [$x => $y]->[$x <= $y];
これで$maxには大きい方の数が入ります。
回答:
前者[$x , $y]的ななかで後者「$x <= $y」 は0か1がかえるからそのリファレンスで
2.
sub uniq { keys %{{map { $_ => "moe" } @_}} }
このサブルーチンは、@uniqarray = uniq(@array) として重複したスカラ値を除去してくれます。
回答:
例
@_ = (2,3,3,4);
↓
$tmp = {map { $_ => "moe" } @_};
↓とするとこのとき
$tmp = {2 => "moe", 3 => "moe", 4 => "moe"};
ゆえに
%{{map { $_ => "moe" } @_}} = %$tmp
つまり
keys %$tmp = 2,3,4
3.
@sorted_textfiles = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [$_, -s] } grep /\.txt$/, @unordered_files;
この動作を説明せよ。
回答:
例
@unordered_files = (1.txt,2.txt,3.nar,ワンダースリー.mp3);
↓
grep /\.txt$/, @unordered_files > [1.txt,2.txt]
map { [$_, -s] } [a.txt,b.txt] > [[1.txt,(1.txtのファイルサイズ)],[2.txt,(2.txtのファイルサイズ)]]
sort { $a->[1] <=> $b->[1] } [云々] > ファイルサイズ(二次元配列?第二項)によってソートさる
map { $_->[0] } [云々] > ファイル名(二次元配列?第一項)をとりだした配列を返す。
↓
渡されたファイル名の中からテキストファイルを抜き出し、それを容量順に並べる。
これらは今日らくだ読んでなかったらわからなかった問題。
らくだ本に感謝。
まあ普段使わんけどね。
具体的に言うとリファレンスとか。
某Perlマスターっぽい人に出してもらったクイズ。
1.
$max = [$x => $y]->[$x <= $y];
これで$maxには大きい方の数が入ります。
回答:
前者[$x , $y]的ななかで後者「$x <= $y」 は0か1がかえるからそのリファレンスで
2.
sub uniq { keys %{{map { $_ => "moe" } @_}} }
このサブルーチンは、@uniqarray = uniq(@array) として重複したスカラ値を除去してくれます。
回答:
例
@_ = (2,3,3,4);
↓
$tmp = {map { $_ => "moe" } @_};
↓とするとこのとき
$tmp = {2 => "moe", 3 => "moe", 4 => "moe"};
ゆえに
%{{map { $_ => "moe" } @_}} = %$tmp
つまり
keys %$tmp = 2,3,4
3.
@sorted_textfiles = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [$_, -s] } grep /\.txt$/, @unordered_files;
この動作を説明せよ。
回答:
例
@unordered_files = (1.txt,2.txt,3.nar,ワンダースリー.mp3);
↓
grep /\.txt$/, @unordered_files > [1.txt,2.txt]
map { [$_, -s] } [a.txt,b.txt] > [[1.txt,(1.txtのファイルサイズ)],[2.txt,(2.txtのファイルサイズ)]]
sort { $a->[1] <=> $b->[1] } [云々] > ファイルサイズ(二次元配列?第二項)によってソートさる
map { $_->[0] } [云々] > ファイル名(二次元配列?第一項)をとりだした配列を返す。
↓
渡されたファイル名の中からテキストファイルを抜き出し、それを容量順に並べる。
これらは今日らくだ読んでなかったらわからなかった問題。
らくだ本に感謝。
まあ普段使わんけどね。
