D言語

ソート後の移動先インデックスを求める

配列をソートしたときの移動先インデックスを知りたい場合があります。 D 言語だと topNIndex 関数で知ることが出来ます。 import std; void main() { auto a = [99, 1, 100, 2, 150]; auto id = new int[a.length]; a.topNIndex(id, Yes.sortOutput); forea…

D言語: recurrence の練習

import std.experimental.all; void main() { // 初項 1, 公差 2 auto a = recurrence!((a, n) => a[n-1] + 2)(1); writeln(a.take(10)); //=> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] // 初項 3, 公比 2 auto b = recurrence!((a, n) => a[n-1] * 2)(3); writ…

D言語: foreach の変数展開の仕組みが分からない

import std.experimental.all; void main() { foreach (a; [10, 20, 30]) writeln(a); } と書くと、配列の中身が foreach の変数 a に代入されて以下のように出力されます。 10 20 30 次に foreach の変数をひとつ追加します。 すると、その追加した変数には…

D言語: 2, 3, 5, 7... のシーケンスを作る

D 言語で、2, 3, 5, 7... のシーケンスを作る方法です。 素数をふるいにかけるとき 2 で割り切れるか 3, 5, 7... で割り切れるか を試しますが、これらを分離せずにひとつのシーケンスとして扱えると便利ですね。 import std.experimental.all; void main() …