この命令的な関数を、K(またはQ)のような機能的な配列ベースの言語で表現するにはどうすればいいですか?ずさんなC++のでK(またはQ)のような機能的な配列ベースの言語で、この命令的な関数をどのように表現できますか?
:
vector<int> x(10), y(10); // Assume these are initialized with some values.
// BTW, 4 is just a const -- it's part of the algorithm and is arbitrarily chosen.
vector<int> result1(x.size() - 4 + 1); // A place to hold a resulting array.
vector<int> result2(x.size() - 4 + 1); // A place to hold another resulting array.
// Here's the code I want to express functionally.
for (int i = 0; i <= x.size() - 4; i++) {
int best = x[i + 0] - y[i + 0];
int bad = best;
int worst = best;
for(int j = 0; j < 4; j++) {
int tmp = x[i + j] - y[i + 0];
bad = min(bad, tmp);
if(tmp > best) {
best = tmp;
worst = bad;
}
}
result1[i] = best
result2[i] = worst
}
私が最もkdbとQでこれを見たいのですが、他の関数型言語は歓迎されています。 Clojure(Lispの方言)で
このコードは何をしようとしていますか? –
これは2つのことを計算しようとしています:まず、xの各ポイントで、次の4つの要素の最大値を求めます(Px = 0..3の位置PxでこのNx = max xの各点で、次のPx点に対して最小値を求めます。 – Badmanchild