Clojure:出力を次の操作の入力として使用して操作をn回実行します(a-la reduce)

フェデリコ・トマセッティ

特定の操作(部族の生成など)を一定時間実行したい。前の反復の出力を次の反復の入力として使用するたびに。

n個の要素のコレクションに対してダミーのreduceを実行することでそれを達成しています。次に、アキュムレータのみを考慮して、コレクションから要素を破棄します。

(defn generate-game [world n-tribes]
  (let [ game (create-game world)
         game (reduce (fn [acc, _] (:game (generate-tribe acc))) game (repeat n-tribes :just_something))]
    game))

それを行うにはもっと良い方法があると思います。それを見つけるのを手伝ってくれませんか。

A.ウェッブ

質問で使用された方法は問題ありませんが、代わりに範囲を使用してください

(defn generate-game [world n-tribes]
  (reduce (fn [acc _] (:game (generate-tribe acc)))
          (create-game world)
          (range n-tribes)))

範囲オブジェクトはそれ自体をインテリジェントに縮小する方法を知っているため、これはループになります。これはreduce範囲方法です:

public Object reduce(IFn f, Object start) {
    Object ret = f.invoke(start,n);
    for(int x = n+1;x < end;x++)
            ret = f.invoke(ret, x);
    return ret;
}

とにかくゲームの状態がアトムになってしまう場合は、それdotimesを更新することも検討できます

(defn generate-game [world n-tribes]
  (let [game (atom (create-game world))]
    (dotimes [_ n-tribes] (swap! game (comp :game generate-tribe)))
    game))

反復も優れたソリューションです。seqを生成せずに、結果に関数を繰り返し適用するでの詳細な説明

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

reduceとpromiseを使用して配列内の関数を順次実行する

分類Dev

recursiveとreduceを使用して配列の合計を実行します

分類Dev

以前の要素の値を使用して各要素で操作を実行した後、Java 8 Stream Reduceを使用してリストを返す

分類Dev

独自のクラスを出力値として使用している場合、Reduceはreduceメソッドを呼び出しませんMapReduce Hadoop

分類Dev

入力関数内でis.naを使用すると、Reduce関数が誤った論理出力を返します。

分類Dev

JavaScriptでreduce関数を操作する方法は?私はそれを使用するのに少し混乱しています

分類Dev

次のbison文法でreduce / reduceの競合が発生しています

分類Dev

map-reduceの複数入力のパスとしてダミー変数を設定する方法

分類Dev

JavaScript:Reduce()を使用して、入力配列を比較する関数交差を構築します。交差する要素のみを返す

分類Dev

reduceの使用と、実際に何をしようとしているのかについて混乱しています

分類Dev

vuejsでreduceを使用して2次元配列を計算します

分類Dev

javascriptのreduceを使用して配列内の変数を合計します

分類Dev

map and reduceを使用して、単語内の各文字の値を検索します

分類Dev

reduceを使用して偶数と奇数のカウントを見つけようとしています

分類Dev

ReactReduxでcombineReducerを操作する方法は?そして、combineReducersの「sate」オブジェクトを複数のreduceに

分類Dev

関数をn回適用します。次の入力として最後の出力を使用する

分類Dev

Pythonのreduce()を使用して複数のPySparkDataFrameを結合する

分類Dev

reduceを使用して時間単位の日付差を計算します

分類Dev

Dataweave 2.0reduce関数を使用してjsonMuleの配列を削減します

分類Dev

js reduce()を使用してキーと値のペアを作成し、値として配列を作成する

分類Dev

Pythonでreduceの機能を理解しようとしています

分類Dev

Javascriptでreduceを使用して、空の配列と空でない配列の両方を合計します

分類Dev

reduce()を使用してJavascriptのサブ配列数を減らす

分類Dev

forループを使用して.reduce()の結果を取得する

分類Dev

私は次の行にアクセスして、stream.reduceを使用してjava arraylistオブジェクトの現在の行と比較しようとしましたが、エラーになりません。

分類Dev

reduceを使用してマップを実装する

分類Dev

R dplyr:group_byの後に、initを使用してReduceで変更します

分類Dev

Javascriptを `reduce`性能

分類Dev

Clojure: reduce を使用した無名関数

Related 関連記事

  1. 1

    reduceとpromiseを使用して配列内の関数を順次実行する

  2. 2

    recursiveとreduceを使用して配列の合計を実行します

  3. 3

    以前の要素の値を使用して各要素で操作を実行した後、Java 8 Stream Reduceを使用してリストを返す

  4. 4

    独自のクラスを出力値として使用している場合、Reduceはreduceメソッドを呼び出しませんMapReduce Hadoop

  5. 5

    入力関数内でis.naを使用すると、Reduce関数が誤った論理出力を返します。

  6. 6

    JavaScriptでreduce関数を操作する方法は?私はそれを使用するのに少し混乱しています

  7. 7

    次のbison文法でreduce / reduceの競合が発生しています

  8. 8

    map-reduceの複数入力のパスとしてダミー変数を設定する方法

  9. 9

    JavaScript:Reduce()を使用して、入力配列を比較する関数交差を構築します。交差する要素のみを返す

  10. 10

    reduceの使用と、実際に何をしようとしているのかについて混乱しています

  11. 11

    vuejsでreduceを使用して2次元配列を計算します

  12. 12

    javascriptのreduceを使用して配列内の変数を合計します

  13. 13

    map and reduceを使用して、単語内の各文字の値を検索します

  14. 14

    reduceを使用して偶数と奇数のカウントを見つけようとしています

  15. 15

    ReactReduxでcombineReducerを操作する方法は?そして、combineReducersの「sate」オブジェクトを複数のreduceに

  16. 16

    関数をn回適用します。次の入力として最後の出力を使用する

  17. 17

    Pythonのreduce()を使用して複数のPySparkDataFrameを結合する

  18. 18

    reduceを使用して時間単位の日付差を計算します

  19. 19

    Dataweave 2.0reduce関数を使用してjsonMuleの配列を削減します

  20. 20

    js reduce()を使用してキーと値のペアを作成し、値として配列を作成する

  21. 21

    Pythonでreduceの機能を理解しようとしています

  22. 22

    Javascriptでreduceを使用して、空の配列と空でない配列の両方を合計します

  23. 23

    reduce()を使用してJavascriptのサブ配列数を減らす

  24. 24

    forループを使用して.reduce()の結果を取得する

  25. 25

    私は次の行にアクセスして、stream.reduceを使用してjava arraylistオブジェクトの現在の行と比較しようとしましたが、エラーになりません。

  26. 26

    reduceを使用してマップを実装する

  27. 27

    R dplyr:group_byの後に、initを使用してReduceで変更します

  28. 28

    Javascriptを `reduce`性能

  29. 29

    Clojure: reduce を使用した無名関数

ホットタグ

アーカイブ