問題タブ [accumulator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - プロローグ - ルールの修正に役立つ
次のような事実でいっぱいのデータベースがあります。
例: ニュークロスゲートからブロックリーまでの所要時間は 2 分です。
次に、クエリを入力すると istime(newcrossgate,honoroakpark,Z) になるようにルールを作成しました。プロローグは、これらの 2 つの駅間を移動するのにかかる時間を教えてくれるはずです。(私が作成したルールは、隣接する駅だけでなく、任意の 2 つの駅間の距離を計算するように設計されています)。
newcrossgate から最初の 2 駅まで、たとえば newcrossgate から foresthill または sydenham までは完璧に機能するようです。しかし、26分かかるウェストクロイドンへのニュークロスゲートをテストした後、クリスタルパレスへのニュークロスゲートを試してみたところ、プロローグは15分かかるはずだと言いました...ウェストクロイドンの次の駅であるという事実にもかかわらず。ここで明らかに何かがおかしいのですが、ほとんどのステーションで機能しますが、時々時折エラーが発生します。何が問題なのか教えてもらえますか? :S
prolog - アキュムレータと\+member関数とは何かをプロローグします
私はアキュムレータとは何か、そしてアキュムレータが何をするのかについてのチュートリアルを探していましたが、すべての説明は非常に複雑で、それを利用できるようにそれらがどのように機能するかについて十分に明確に理解できていません。アキュムレータは、他のコードによって呼び出されて変更される可能性のある数値などを保持していることを理解しているようです。問題は、アキュムレータとは何かを理解していて、いつ必要になるかはわかっているのに、実際にどのように使用するかがよくわからないことです。
私が見たチュートリアルから、アキュムレータが空のリストのように見えることもあれば、「0」のように見えることもあり、正確にアキュムレータと見なすことができるものとできないものについて疑問に思います。アキュムレータの使い方を簡単に説明してもらえますか?
また、私の質問の2番目の部分では、プロローグコードでこれを頻繁に使用している人々に気づいたようです。
リストに何かをするコード行の中で使用されているのをいつも見ているので、リストと関係があると推測できましたが、調べてみると、\+member
実際には「失敗としての否定-ではない」という意味であることがわかりました。これが何を意味するのか、あるいはその人が正しかったとしても、私は本当に理解していませんが。繰り返しになりますが、誰かが私に正確に何をする\+member
のか、そしてあなたの説明を単純にしようとしている間にそれが何に使用できるのかを説明してもらえますか、大きな言葉は私を混乱させます。
recursion - スキーム/ラケットのベスト プラクティス - 再帰と変数の累積
私はScheme(Racket経由)と(それほどではありませんが)関数型プログラミングに不慣れで、変数と再帰による累積の長所と短所についてアドバイスを使用できます。この例では、移動平均を計算しようとしています。したがって、 list'(1 2 3 4 5)
の場合、3 期間の移動平均は になります'(1 2 2 3 4)
。アイデアは、期間の前の数値はまだ計算の一部ではなく、セットの期間の長さに達すると、選択した期間に従ってリストのサブセットの平均化を開始するというものです。
したがって、私の最初の試みは次のようになりました。
これは機能します。そして、私は地図の使い方が好きです。構成可能で、リファクタリングが可能です。将来、次のようないとこがいることがわかります。
等
しかし、Scheme の精神ではありません (そうですか?)。ということで、以下のように書き直しました。
さて、このバージョンは一見すると理解するのがより困難です。だから私はいくつかの質問があります:
ラケットの組み込み反復構造のいくつかを使用して、再帰バージョンを表現するよりエレガントな方法はあり
for/fold
ますか? 書かれているように末尾再帰ですか?アキュムレータ変数を使用せずに最初のバージョンを作成する方法はありますか?
このタイプの問題は、特にSchemeでベストプラクティスが認められているより大きなパターンの一部ですか?
cuda - ネストされたループの配列の2次元の累積合計-CUDA実装?
削減を使用してCUDAでこの操作を実行する方法を考えていましたが、それを実行する方法について少し戸惑っています。Cコードは以下のとおりです。覚えておくべき重要な部分-変数precalculatedValueは両方のループイテレータに依存します。また、変数ngoはmのすべての値に固有ではありません...たとえば、 m =0,1,2はngo =1である可能性がありますが、 m =4,5,6,7,8はngo =2である可能性があります。より良い実装提案を提供するのに役立つ場合に備えて、ループイテレータのサイズを含めました。
以前のケースでは、precalculatedValueが内部ループ変数の関数のみであった場合、値を一意の配列インデックスに保存し、事後に並列削減(Thrust)を追加しました。しかし、この場合は困惑しました。mの値はngoの値に一意にマップされていません。したがって、このコードを効率的に(または実行可能に)して、削減を使用する方法がわかりません。どんなアイデアでも大歓迎です。
vb.net - For...のアキュムレータ次のループはVBの数値をスキップしています。VisualStudio2010。
For ... Nextループを作成しようとしています。これにより、12個のエントリ、またはキャンセルボタンが許可されます。
どういうわけか、intEntriesは1、3、5、7、9、および11のみを使用しています。その後、計算は12ではなく13で除算されます。何が間違っているのかわかりませんが、どうやら何か。あなたが私に与えることができるどんな援助も大いに感謝されます!
java - for ループを使用してオブジェクトとメソッドのリストを反復処理する
コード全体はこの投稿の最後にありますが、本当に気になる部分は次のとおりです。
理想的には、totesPrice、totesSize、および totesSpeed は、photoes リスト配列に格納されているオブジェクトの get メソッドの合計になります。
recursion - アキュムレータ、conj、および再帰
私は 4clojure.com から 45 の問題を解決しましたが、再帰とアキュムレータを使用していくつかの問題を解決しようとしているときに、繰り返し発生する問題に気付きました。
一部のClojurerが私が得ていないものを「得る」ことを期待して、醜い解決策に終わるために私がしていることをできる限り説明しようとします。
たとえば、問題 34 では、2 つの整数を引数として ( rangeを使用せずに) 関数を作成し、( range を使用せずに) 範囲を作成するよう求めています。簡単に言えば、(... 1 7) を実行すると、(1 2 3 4 5 6) が得られます。
さて、この質問は、この特定の問題を解決することではありません。
再帰とアキュムレータを使用してこれを解決したい場合はどうすればよいですか?
私の思考プロセスは次のようになります。
(fn [xy] )で始まる、2 つの引数を取る関数を作成する必要があります。
再帰する必要があり、リストを追跡する必要があります。アキュムレータを使用するので、追加の引数を取る最初の関数内に 2 番目の関数を記述します。
(fn [xy]
((fn g [xy acc] ...) x y '())
(明らかに、SO で Clojure コードを適切にフォーマットできません!?)
最初の関数は正確に 2 つの整数引数 (私の呼び出しではない) を取る必要があり、確信が持てません: アキュムレータを使用したい場合、作成せずにアキュムレータを使用できますか?ネストされた関数?
次に、 conjしたいのですが、できません:
そのため、最初にシーケンスを取得するために奇妙なことを行い、最終的には次のようになります。
しかし、これはこれを生成します:
これの代わりに:
そのため、追加のフラット化を行うことになり、機能しますが、完全に醜いです。
私はいくつかのことを理解し始めており、場合によっては、よりクロジュレスクな方法で「考え」始めていますが、解決策を書くのに問題があります。
たとえば、ここで私は次のように決めました。
- アキュムレータを使用するには
- yに達するまでxをインクリメントして再帰する
しかし、私は上記の怪物になってしまいます。
この問題を解決する方法はたくさんありますが、繰り返しになりますが、それは私が求めているものではありません。
私が求めているのは、cons/conj を決定し、アキュムレータを使用し、再帰することを決定した後、次のようになる方法です (私が書いたものではありません)。
これの代わりに:
いくつかの問題を解決できるようになり始めたと思いますが、私が作成する傾向がある醜い解決策に少しがっかりしています...
prolog - プロローグ deleteall が機能しない
問題を見つけようとしましたが、うまくいきませんでした。何が問題なのか教えていただけますか?
clojure - (reduce f val coll) で、val はアキュムレータですか?
reduceを呼び出して関数と 2 つの引数を渡す場合、最初の引数はアキュムレータと見なすことができますか?
それは常にアキュムレータですか?
時々アキュムレータですか?
Clojure を使用して大きなファイルを解析することに関するブログ エントリを読んでいて、次の行を見つけました。
ブログエントリへのリンク:
http://lethain.com/reading-file-in-clojure/
単純な(reduce + [1 2 3])はどうですか? アキュムレータが関係していますか?
「アキュムレータとは正確には何ですか?」
しかし、アキュムレータとreduce関数の関係も理解したいです。したがって、これらの特定の (関連する) 質問に対する回答は大歓迎です!