3
疫学者になろう!
チャレンジ 病気が人々のグループの周りに広がる方法の簡単なモデルを作成する必要があります。 ルールと要件 モデルは、各要素が異なる人物である1000 x 1000の2D配列でなければなりません。 ユーザーはargvを使用して3つの変数を入力する必要があります。伝送の確率(誰かが他の人に感染する可能性)、突然変異の可能性、シミュレーションを実行する期間の数です。 最初の期間(t=0)では、4人を無作為に選択し、病気に感染させる必要があります。 病気の振る舞いは、次の規則によって管理されます。 この病気は垂直方向と水平方向にしか移動できず、隣の人に移動します。 感染はすべての人で3期間続きます。免疫不全を考慮することはできません。 人が3回感染した後、彼らは免疫であり、再び感染することはできません。 この病気は突然変異の影響を受けており、以前は免疫がなかった人々をこの新しい突然変異の病気に対して脆弱にします。変異した病気はまったく同じ特徴を持ち、元の病気と同じルールに従います。 突然変異が発生した場合、病気全体は変化せず、伝播時に特定の「パケット」のみが変化します。 人が1つのウイルスに感染すると、現在の感染が終わるまで再び感染することはできません。 人が感染すると、感染期間の開始から終了まで感染します。 免疫のレベルはありません-人は免疫があるかどうかです。 メモリーの過負荷を防ぐために、最大800個の突然変異の制限があります。 指定された期間数の終わりに、結果を出力する必要があります。 結果は、感染している人と感染していない人を示す1000 x 1000のグリッドでなければなりません。これは、テキストファイル、画像ファイル、またはグラフィック出力として出力できます(#FFFFFFは健康な人で、#40FF00は感染者です)。 回答に言語名とそれを実行するコマンドを含めてください。 勝ち コンピューターで実行する最速のコードが勝ちます。その時間は、次のPythonコードで測定されます。 import time, os start = time.time() os.system(command) end = time.time() print(end-start) このスクリプトを実行するときは、次のデフォルトを使用することに注意してください。 Probability of transmission = 1 Chance of mutation = 0.01 Number of periods …