LoginSignup
25
7

More than 5 years have passed since last update.

D言語くんの繁殖についての新説

Last updated at Posted at 2016-12-02

新個体の出現

2015年に繁殖期のD言語くんが発見され、D言語くんが単為生殖で増殖するようすが明らかになった。

しかしこの繁殖方法は

  • 並列で増えることができない
  • 繁殖期のD言語くんが増えない

等の問題点を抱えており、同時にD言語くんの絶滅が危惧された。

だが、最近現地の住民の証言からD言語くんが別の繁殖方法を獲得したらしいことがわかった。その様子を撮影しようと試みたが、その姿をカメラに捉える前に12月になり、D言語くんはクリスマスの装飾に擬態して見えなくなってしまった。かわりに現地住民のスケッチを用いて紹介しよう。

2匹で行われる繁殖

D言語くんの繁殖の様子を描いた現地住民のスケッチ

現地住民から得られた情報により再現されるD言語くんの繁殖は以下のようなプロセスを経る。

  1. 2匹が密着する
  2. 餅のように伸びる
  3. 伸びた部分が膨らんでくる
  4. スライスされ、分離する

ここで注目したいのは、スケッチ上でのD言語くんの胴体に穴が開いていることである。これがD言語くんの通常個体ならば1匹しかいない繁殖期のD言語くんに頼ることなく繁殖することが可能ということで、特定の個体に依存する繁殖方法から脱したということだ。タスマニアデビルがデビル顔面腫瘍性疾患に適応したように、D言語くんが突然変異により進化しているということが考えられる。おせちのカマボコにお餅のエッセンスがmixinしたのだ。また、さらに証言を集めるととんでもない長さに伸びたD言語くんの目撃情報も得られた。

全然キモくないD言語くんの画像

超絶キモい可愛らしい。並列で増える能力を獲得したことによりD言語くんは今後ますます発展していくだろう。

それはともかく

D言語には並列処理を簡単に行う方法がある。

import std.stdio;
import std.math : log;
import std.range : iota;
import std.string : format;
import std.parallelism : TaskPool;

void main()
{
    auto pool = new TaskPool();
    foreach(index,c;pool.parallel(iota(10)))
    {
        writeln(format("%s: %s",index,log(index)));
    }
    pool.finish();
}
/*
出力:
0: -inf
3: 1.09861
5: 1.60944
8: 2.07944
9: 2.19722
6: 1.79176
4: 1.38629
1: 0
2: 0.693147
7: 1.94591
*/

数分原因がわからなくて困ったのでメモする。pool.finish()がないとプログラムが終了しない。

import std.stdio;
import std.math : log;
import std.range : iota;
import std.string : format;
import std.parallelism : parallel;

void main()
{
    foreach(index,c;iota(10).parallel())
    {
        writeln(format("%s: %s",index,log(index)));
    }
}

こんなふうにも書ける。こっちのほうがお手軽。

25
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
7