タグ

Foldとperlに関するkiyo_hikoのブックマーク (3)

  • join

    #!/usr/bin/perl use strict; use warnings; my @items = (1, 2, 4, 8, 16, 32); my $str = join ',', @items; print $str, "\n"; #!/usr/bin/perl use strict; use warnings; my @items = (1, 22, 333, 4444, 55555); my $str = join "\n", @items; print $str, "\n";

    join
    kiyo_hiko
    kiyo_hiko 2012/03/23
    Reduce使って書けるということを徒然なるままに思いついた だからなんだというわけでもない 「use List::Util qw/reduce/; sub joint {my ($glue, @xs) = @_; reduce {"$a$glue$b"} @xs} print joint ', ', qw/a quick brown fox jumps over a lazy dog./」
  • Code Snippets - reduce(l|r)を実装汁! : 404 Blog Not Found

    2007年05月28日03:30 カテゴリ一日一行野郎 Code Snippets - reduce(l|r)を実装汁! FizzBuzzにももうええかげん傷してきたので、次のネタをないかと思ったら、yuguiさんがtwitterで私を登録したので、ごぶさた〜と思ってblogを見に行って格好の素材を(再)発見したという前回までのあらすじ。 inject + Symbol#to_proc = fold @ 2007年05月 @ ratio - rational - irrational @ IDM (1..10).inject(&:*) => 3628800 うーむ。素晴らしい。 reduce(l|r) というわけで問題。reducelとreducerを実装せよ。制限時間はあわせて10分。ただし、reducelとreducerは、Haskellにおいて次の挙動を示すものとする。 *Main

    Code Snippets - reduce(l|r)を実装汁! : 404 Blog Not Found
    kiyo_hiko
    kiyo_hiko 2011/11/22
    Perlでfoldl/foldr。関連 -> CLだとfoldrは:from-endでいける。 (reduce #'cons '(1 2 3 4 5) :from-end t :initial-value ())
  • Perl の reduce (List::Util) で配列を作る方法 | フッ君の日常

    SICP の2.2.3節あたりを読んでいたら、思いついたのでメモ。 いままで reduce で配列を作る方法がいまいち分かってなかったんだけど、以下のようにすればいい。 例えば、1から3までの数字について、元の数字とその数字を2乗した数の対の配列を作る場合はこう。 my @array = 1 .. 3; my $array_ref = reduce { [ @{$a}, [ $b, $b**2 ] ] }[], @array; print YAML::Dump($array_ref); 実行結果 --- - - 1 - 1 - - 2 - 4 - - 3 - 9 初期値に空の配列リファレンスを入れておいてやるのが(個人的な)ポイント。 Perl の(というより List::Util の)reduce は初期値を設定できなくて使いづらいと思ってたんだけど、ただ単に、配列の先頭に初期値を突っ込

    Perl の reduce (List::Util) で配列を作る方法 | フッ君の日常
    kiyo_hiko
    kiyo_hiko 2011/10/29
    これ、やろうとして失敗してた。{[@{$a},$f->($b)]}なるほど。Perlのリスト連結とかはまだ若干苦手だ。pushとかすれば一発なのであんまり考えたことなかった。関係ないが配列の長さ思い付いたのでおまけ length=reduce{$a+1} 0,@xs
  • 1