タグ

reduceとfoldに関するkiyo_hikoのブックマーク (10)

  • 復習 Ruby: [1, 2, 3].sum ではなく,[1, 2, 3].inject(:+) と書く.

    復習 Ruby: [1, 2, 3].sum ではなく,[1, 2, 3].inject(:+) と書く. 数値が Array に格納されていて,その合計を計算したいときに sum したくなることがある. たとえば,次のように. a = [1, 2, 3] a.sum # ~> -:2:in `': undefined method `sum' for [1, 2, 3]:Array (NoMethodError) しかし,このように,Array#sum というメソッドは無いので,NoMethodError になる. Enumerable#inject(symbol)こんなときに,Ruby なら Enumerable#inject(symbol) を使う. a = [1, 2, 3] a.inject(:+) # => 6 ここで,a.inject(:+) は, 1 + 2 + 3 と同じ

    復習 Ruby: [1, 2, 3].sum ではなく,[1, 2, 3].inject(:+) と書く.
    kiyo_hiko
    kiyo_hiko 2015/11/12
    injectの別名で>>とか->的なものがあればナイスそうな気がした
  • Generic Map/Reduce List Extensions in C#

    kiyo_hiko
    kiyo_hiko 2015/07/28
    Enumerable.Range(1, 100).Aggregate(0, ((a, b) => a + b)).Dump();
  • C# で map とか reduce みたいな楽しいリスト操作をしたい

    プログラミング言語がロジックを組むのに向いているかいないかを判断するときの基準に、私はよく「文字列の操作が優れているか否か」「配列・辞書・集合の操作が優れているか否か」を評価点に挙げます。文字列や配列、辞書、集合の操作はほとんどすべてのアプリケーションで必要になり、それらの生産性が高く高速に処理してくれる言語ほど簡単で高速なロジックが組めると思うからです。 そういう意味でObjective-Cを考えると、文字列の操作はまぁまぁ良い(特にUnicode周りがなかなか優れている、正規化もできるし)のですが、配列・辞書・集合の操作がイマイチで、作るの面倒なら操作するのも面倒。さらには良く欲しくなる以下の操作が欠けています。map - 条件式を渡して、もとの集合の各要素に条件式を通した結果を新たな集合として返す。 reduce - 条件式を渡して、要素を前から順番に計算して畳み込み、集合から一つの

    kiyo_hiko
    kiyo_hiko 2015/07/15
    Xs.Aggregate(F, S => F ⊕ S);
  • Array.prototype.reduce() - JavaScript | MDN

    reduce() メソッドは、配列の各要素に対して (引数で与えられた) reducer 関数を実行して、単一の出力値を生成します。 このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。 reducer 関数は 4 つの引数を取ります。 アキュムレーター (acc) 現在値 (cur) 現在の添字 (idx) 元の配列 (src) reducer 関数の返値はアキュムレーターに代入され、配列内の各反復に対してこの値を記憶します。最終的に単一の結果値になります。 構文 arr.reduce(callback( accumulator, currentValue[, index[, array]] ) {

    Array.prototype.reduce() - JavaScript | MDN
    kiyo_hiko
    kiyo_hiko 2012/07/13
    reduceのアルゴリズム / 書いた。あとで確認。メモ 「(defun reducex (fun x xs) (if (null xs) x (reducex fun (fun x (car xs)) (cdr xs))))」
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    kiyo_hiko
    kiyo_hiko 2012/07/02
    畳み込みの各言語での比較
  • 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./」
  • LISPMEMO

    LISPUSERLISPMEMOLisp is like a ball of mud - you can throw anything you want into it, and it's still Lisp. -- Anonymous 404 Blog Not Found:Code Snippets - reduce(l|r)を実装汁! ネタ。 Common Lisp には標準であったので話にならなかった。10 分を切れてよかった。 (defun reducel (fn lst) (reduce fn lst)) (defun reducer (fn lst) (reduce fn lst :from-end t)) つまらないので Prolog 版。うむ、やっぱり Prolog はいい。call で高階関数も使えるし(funcall が許せない人には不評かもしれないが)。 % red

  • sirocco の書いてもすぐに忘れるメモ

    2014-07-26 Python: wxFormbuilder を使ってwxPythonアプリを作る。 Python wxPython wxFormBuilder PythonwxPythonGUIビルダwxFormBuilderを使って、テストアプリを作ってみました。 なぜ、wxPython なのか。 wxWidgets を使っていますので、WindowsmacOSLinux で動かすことが出来るからです。 【環境】 Python 2.7.8 wxPython 2.8 wxFormbuilder 3.… 2014-07-25 Python: win32com を使ってDBにADO接続してみる。 Python MS-Windows COM SQL server Python and ActiveX Data Objects (ADO)を参考にMS AccessのMDBにアクセスし

    sirocco の書いてもすぐに忘れるメモ
    kiyo_hiko
    kiyo_hiko 2011/10/29
    consの逆関数snoc
  • 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
  • 途中脱出のある反復計算 - HaHaHa!

    そのまえに もとネタは[id:Dekosuke:20100810]「breakのあるfor文をHaskellで書きなおす」という記事です. この記事に対して,直感的に[id:nobsun:20100118]の双方向畳み込みfoldで汎用的に表現できる」と思って,コメントを付けました.ところが,その後が波瀾万丈 < 大袈裟なやつ 途中脱出の例題を考えてみた. ちゃちゃっと書いたサンプルコードが途中脱出してくれない. あわてて取り消しのコメントを. どうも原因がよくわからない,上手くいくはずなのに. foldの定義の所為だと思い込む. 何人かにfoldを説明してみた. coolじゃないfoldの代替定義をでっちあげた. 代替foldリファクタリング. 代替foldを何人かに説明してみた. 代替foldでよいことは納得できる. でもやっぱり,元のfoldで上手くいかなり理由がわからない. よくよ

    途中脱出のある反復計算 - HaHaHa!
    kiyo_hiko
    kiyo_hiko 2011/01/12
    例えば「&&」のループを抽象化して「(and '(t t t nil t nil nil))」場合。CLの場合は短絡で抜けるが、Haskellの場合。
  • 1