プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

1
ピザを公平に共有する
友人とピザを共有することの難しさは、スライスで全員が同じ量のペパロニを確実に摂取できるようにするのが難しいことです。だから、あなたの仕事は、みんなが幸せになるようにピザをどのように公正にスライスするかを決めることです。 行き方 円形ピザのペパロニの位置と作成するスライスの数のリストを指定して、各スライスが同じ量のペパロニになるようにピザをカットする角度のリストを出力するプログラムを作成しますそれ。 ピザのトッピングはペパロニのみです。 お友達は、ペパロニからだまされないというだけで、スライスのサイズを気にしません。 ピザは、原点(0, 0)を中心とし、半径が1の円です。 ペパロニは、入力が中央にあり、半径が0.1 入力を、作成するスライスの数を表す整数、およびデカルト座標系でのペパロニの位置を表す順序ペアのリストとして受け取ります。(合理的な形式で) 出力は、ピザの「カット」の位置を表すラジアン単位の角度のリストである必要があります(範囲内0 <= a < 2pi)。(合理的な形式で)(精度は少なくともでなければなりません+/- 1e-5。) スライスにペパロニの部分的な部分を置くことができます(例えば、ピザにペパロニが1つあり、10人で共有する必要がある場合、ピザを10回カットします。 !) カットは、複数のペパロニを切ることができます(必要な場合があります)。 ペパロニスは重複する場合があります。 例 入力: 8 people, pepperonis: (0.4, 0.2), (-0.3, 0.1), (-0.022, -0.5), (0.3, -0.32) 可能な有効な出力: slices at: 0, 0.46365, 0.68916, 2.81984, 3.14159, 4.66842, 4.86957, 5.46554 この例の視覚化を次に示します(全員がペパロニの半分を取得します)。 その他の例: Input: 9 people, 1 pepperoni …

6
反復除数ツイスト
定義 ましょうmとn正の整数です。私たちは、すなわちmある除数のねじれのn整数が存在するかの1 < a ≤ bようにn = a*bとm = (a - 1)*(b + 1) + 1。ゼロまたはそれ以上の除数ツイストをそれに適用するmことで取得できる場合、はの子孫です。すべての数字はそれ自身の子孫であることに注意してください。nmn たとえば、検討してくださいn = 16。私たちは、選択することができますa = 2し、b = 8以来、2*8 = 16。それから (a - 1)*(b + 1) + 1 = 1*9 + 1 = 10 これ10はの約数のねじれであることを示しています16。とa = 2とb = 5、私たちは、その参照7の除数ねじれです10。したがって7、はの子孫です16。 タスク 正の整数nを指定すると、の子孫をn、重複することなく昇順でリストします。 ルール 数値の約数を計算する組み込み操作を使用することはできません。 完全なプログラムと関数の両方が受け入れられ、コレクションデータ型(何らかの種類のセットなど)を返すことは、並べ替えられ、重複がない限り許可されます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース 1 …

3
自動メタコードゴルフ
あなたはすべてのcodegolfの課題にうんざりしています。そのため、Pythonコードを自動的にゴルフするプログラムを作成することにします。3つのテストケースがあります。 print quickSort([0,7,3,-1,8,10,57,2]) def quickSort(arr): less = [] pivotList = [] more = [] if len(arr) <= 1: return arr else: pivot = arr[0] for i in arr: if i < pivot: less.append(i) elif i > pivot: more.append(i) else: pivotList.append(i) less = quickSort(less) more = quickSort(more) return less + pivotList …
13 python  metagolf 

2
コンテキストで文字列を連結する
コンテキスト付きの文字列 この課題のために、コンテキストを含む文字列は、左コンテキスト、データ部分、および右コンテキストと呼ばれるトリプルの文字列です。長い文字列の部分文字列を表します。|セパレータとして垂直パイプを使用するため、コンテキストのある文字列の例はcod|e-go|lfで、左のコンテキストはcod、データはe-go、右のコンテキストはlfです。この例は、の部分文字列e-goを表しcode-golfます。 ここで、2つの文字列をコンテキストに連結するには、とを使用してaa|bcc|dee、次のように進めますcc|de|eee。図のように文字列を揃えます a a|b c c|d e e c c|d e|e e e データ部分が隣接するようにします。連結のデータ部分は、この場合、データ部分の連結ですbccde。左のコンテキストは、最初のデータ部分の左側にこの部分を拡張する部分です(この場合)aa。同様に、正しいコンテキストはeeeですので、連結はcontextの文字列aa|bccde|eeeです。第二の例では、考えるa|bb|cdと、aabb|cd|2番目の単語は空の右コンテキストを有する場合、。配置図は a|b b|c d a a b b|c d| ここで、2番目の単語の左側のコンテキストは、最初の単語のコンテキストよりもさらに広がっています。連結はaa|bbcd|です。 しかし、ちょっと待ってください。アライメント図の文字が一致しない場合、連結は存在しません。例としての図aa|bb|cc及びc|c|cIS a a|b b|c c c|c|c どこbとc4列目には同意できないので、それらを連結することができません。 タスク あなたの仕事は|、上記のように部分で区切られたコンテキストを持つ2つの文字列を取り込み、存在する場合は連結を、存在しない場合は他の何かを出力するプログラムを作成することです。「その他」は、コンテキストを含む有効な文字列でなく、すべての場合で同じである限り、出力なしを含む任意の値にできます。ただし、エラーをスローすることはできません。STDINからSTDOUTへのプログラムまたは関数を指定でき、匿名関数も受け入れられます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース aa|bcc|dee cc|de|eee -> aa|bccde|eee a|bb|cd aabb|cd| -> aa|bbcd| a|b|cccd aab|cc|c -> aa|bcc|cd a|b|c b||cd -> a|b|cd …
13 code-golf  string 

11
逆XORを計算する
させるfビットフィールド(マップする関数である{0 1}大きさの)のn+1大きさのビットフィールドにn適用することによりXORにi目とi+1目のビットと新しいビットフィールドに結果を書き込むこと。 例: f("0101") = "111" 非公式の計算: 0 XOR 1 = 1 1 XOR 0 = 1 0 XOR 1 = 1 ましょうf_inverseの逆関数になりfます。逆行列は一意ではないため、f_inverse1つの有効なソリューションを返します。 入力:文字列としてのビットフィールド(つまり"0101111101011")および指定された自然数k 出力:文字列としてのビットフィールド。入力ビットフィールドに時間をf_inverse適用すると、文字列に結果が含まれますk。(すなわちf_inverse(f_inverse(f_inverse(input)))) 受賞基準:最少キャラクター ボーナス: -25文字f_inverseが再帰的/反復的に適用されない場合、代わりに出力文字列が直接計算されます テストスクリプト: a = "011001" k = 3 def f(a): k = len(a) r = "" for i in xrange(k-1): r += str(int(a[i]) …
13 code-golf 

4
BattleBlock Theaterパズルを解く
ゲームBattleBlock Theaterには、Lights Outの一般化バージョンであるパズルが含まれることがあります。隣接する3つのブロックがあります。各ブロックは、バーを含む1〜4のレベルを示します。例: | |||| || ブロックにタッチすると、そのブロックと隣接するブロックのレベルが増加します(4から1に戻ります)。パズルは、3つのブロックすべてが同じレベルを示すときに解決されます(どのレベルでもかまいません)。ブロックをタッチする順序は重要ではないため、各ブロックがタッチされる頻度によってソリューションを示します。上記の入力の最適なソリューションは次のとおりです201。 | --> || --> ||| ||| |||| | || ||| || || || --> ||| ゲームは非常に簡単に任意の数のブロックを一般化しますが、一部の数では、すべての構成が解決可能ではありません。 チャレンジ ブロックレベルのシーケンスが与えられたら、パズルを解くために各ブロックをタッチする必要がある頻度を返します。例えば、上記の例はとして与えられ、結果として142生じる可能性があり201ます。解決策がない場合は、選択した一貫した出力を返します。これは、すべての潜在的な解決策、-1または空の文字列などと区別できます。 関数またはプログラムを記述し、STDIN、コマンドライン引数または関数引数を介して入力を任意の便利なリスト形式または文字列形式で取得し、同様に戻り値を介して出力するか、STDOUTに出力します。 コードは、妥当なマシンで1分以内にすべてのテストケースに対して正しい結果を返す必要があります。(これは完全に厳密な制限ではないため、ソリューションに1分10秒かかる場合は問題ありませんが、3分かかる場合はそうではありません。優れたアルゴリズムは数秒で簡単に解決できます。) これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 例 ソリューションは一意ではないため、異なる結果が得られる場合があります。 Input Output 1 0 11 00 12 No solution 142 201 434 101 222 000 4113 0230 32444 No solution …

3
コンピューター:あなたは数学をする
この課題は、一部はアルゴリズムの課題であり、いくつかの数学が関与し、一部は単に最速のコードの課題です。 何らかの正の整数のために、長さのsとs のn一様にランダムなストリングを考えて、それを呼び出してください。また、値がまたはである2番目の一様に選ばれた長さのランダムストリングを考えて、それを呼び出してください。今聞かせても+ 。それはそれ自体に連結されます。10nAn-10,1B_preBB_preB_preB_pre 今の内積を考えるAとB[j,...,j+n-1]、それを呼び出すZ_jから、インデックスを1。 仕事 出力は、n+1分数のリストである必要があります。i出力のth番目の項は、すべての最初の項が等しいという正確な確率でなければなりません。iZ_jj <= i0 スコア n私のマシンでは、コードが10分以内に正しい出力を提供する最大のもの。 タイ・ブレーカー 2つの回答のスコアが同じ場合、最初に提出された方が勝ちです。 誰かが無制限のスコアを取得する方法を見つけるという(非常に)まれなイベントでは、そのようなソリューションの最初の有効な証拠が受け入れられます。 ヒント この問題を数学的に解決しようとしないでください。難しすぎます。私の考えでは、高校からの確率の基本的な定義に戻って、可能性を徹底的に列挙するコードを取得するスマートな方法を見つけることが最善の方法です。 言語とライブラリ 自由に利用できるコンパイラ/インタープリター/などを備えた任意の言語を使用できます。LinuxおよびLinuxでも自由に利用できるライブラリ用。 私のマシン タイミングは私のマシンで実行されます。これは、AMD FX-8350 8コアプロセッサへの標準のUbuntuインストールです。これは、コードを実行できる必要があることも意味します。結果として、簡単に入手できる無料のソフトウェアのみを使用し、コードをコンパイルして実行する方法の完全な指示を含めてください。 いくつかのテスト出力。それぞれの最初の出力だけを考えてくださいn。そのときi=1です。以下のためにn1から13まで、彼らはする必要があります。 1: 4/6 2: 18/36 3: 88/216 4: 454/1296 5: 2424/7776 6: 13236/46656 7: 73392/279936 8: 411462/1679616 9: 2325976/10077696 10: 13233628/60466176 11: 75682512/362797056 12: 434662684/2176782336 13: 2505229744/13060694016 あなたはまたのための一般的な式を見つけることができるi=1でhttp://oeis.org/A081671。 …

6
12日間のゴルフマス
チャレンジ クリスマスの12日間のそれぞれで、日付に応じて「クリスマスの12日間」の適切な詩を出力します。 先頭および/または末尾の改行(\n)および末尾のスペースは許可されます。外部ソースから読み取ることはできません。 基本的にあなたがしなければならないことは、システム日付を読み、「12日間のクリスマス」の節を出力することです。 クリスマスの12日間 クリスマスの12日間は、クリスマスの日(12月25日)から1月5日までのキリスト教のお祝いの季節です。 例 日付が12月25日の場合(最短/最初の詩を印刷): On the first day of Christmas my true love sent to me: a Partridge in a Pear Tree 日付が12月31日の場合(7節目を印刷): On the seventh day of Christmas my true love sent to me: 7 Swans a Swimming 6 Geese a Laying 5 Golden Rings …

2
何を待っていますか?(麻雀ソルバー)
チャットでのディスカッションから@MartinBüttnerに感謝します 麻雀は、アジアで非常に人気のあるタイルゲームです。通常、4人のプレイヤーでプレイされ、ゲームの目標は、タイルを使用して有効なハンドを完了する最初の人になることです。この課題では、ゲームの簡易バージョンであるPPCG麻雀を検討します。 PPCG麻雀には3つのスーツがあります- m、pそしてs-タイルはから1まで番号が付けられてい9ます。各タイルのコピーは正確に4つあり、タイルは番号とそれに続くスーツ(たとえば3m、9s)で示されます。 完成したPPCG麻雀ハンドは、3セットと4セットで構成され、合計14タイルです。 3つのセットは次のいずれかです。 同じタイルの3つ(たとえば4s 4s 4s、ではない4m 4p 4s)、または 同じスーツ内の3つの連続したタイルのシーケンス(例:1s 2s 3sor 6p 7p 8pnot 3s 4m 5mor or 3p 5p 7p)。シーケンスはラップしません(9m 1m 2m無効です)。 ペアは、単純に2つの同一のタイルです(例:)5s 5s。 チャレンジ プログラムには、13個のタイルのスペースで区切られた手が届き、各タイルは4回までしか表示されません。完全なプログラムまたは文字列を受け取る関数のいずれかを記述できます。 あなたの仕事は、ハンドに追加すると完成したPPCG麻雀ハンドを形成する可能性のあるすべての14番目のタイル(「待機」)を見つけることです。出力されるタイルはスペースで区切る必要がありますが、順序は任意です。先頭または末尾の空白は許可されます。 プログラムは、1分以内で妥当な時間内に実行する必要があります。 例 Input: 1m 1m 1m 4s 4s 4s 7p 7p 7p 3m 3m 3m 9s Output: 9s Input: …
13 code-golf  game 

3
4色の定理
四色定理 4つ以下の色がマップの領域を色付けする必要があると述べています。 チャレンジ 州の境界のリストを指定すると、各州IDに色が割り当てられ、隣接する2つの州が同じ色にならないようにします。出力は、色を州の2文字のIDコードに割り当てるCSSスタイルシートである必要があります。スタイルシートを適用できるSVGマップを次に示します。http://upload.wikimedia.org/wikipedia/commons/3/32/Blank_US_Map.svg ルール 最短のコードが勝つ 任意の州境リストを使用できます 使用できるのは4色のみです。 状態リストはハードコーディングできます アドバイス:CSS fill:プロパティを使用して色を変更します。たとえば、#AL{fill:green} 州境のリストはこちら AL-FL AL-GA AL-MS AL-TN AR-LA AR-MO AR-MS AR-OK AR-TN AR-TX AZ-CA AZ-CO AZ-NM AZ-NV AZ-UT CA-NV CA-OR CO-KS CO-NE CO-NM CO-OK CO-UT CO-WY CT-MA CT-NY CT-RI DC-MD DC-VA DE-MD DE-NJ DE-PA FL-GA GA-NC GA-SC GA-TN IA-MN IA-MO IA-NE …

9
ショートドロープログラム
あなたはリベラルアーツ専攻をあなたの家に招待しただけで、彼/彼女に言っています 「ご存知のように、私は素晴らしいプログラマーであり、x、y、zを実行できます...」 S /彼はすぐに退屈し、あなたに尋ねます: 「あなたが本当に素晴らしいプログラマーなら、私に絵を描かせるプログラムを作ってもらえますか。マウスを使って、さまざまな色を選択して、画面に線を描くだけです。」 コードで標準ライブラリをインポートできます。コードでは、キーボードで色を選択する必要がある場合があります。 これはcode-golfです。最短のコードが勝ちます。 箇条書き 左ボタンを押しながらマウスを動かして線を描きます。 BresenhamのLine Algorithmは必要ありません。組み込みアルゴリズムはトリックを行います ユーザーが何らかの方法で線の太さを変更できる場合は、* 0.8のボーナスが得られますが、必須ではありません。 自分で線描画を実装する方が良いと思いますが、必要な場合は、コードの説明でそれを言うだけでライブラリをインポートできます。 最小は5色(赤、緑、青、白、黒)です。ランダムに変更すると、ペナルティが* 1.2になります。必要に応じてそれらを変更できます(ボタンとキーを押すことはどちらもOKです)。 ポイント間またはフリーハンドでマウスを押して描くのが最善です(つまり、ペイントで行うように)* 0.7のボーナスが得られますが、他の方法は大丈夫です:(例)2つのポイントをクリックして、それらのポイント間に線を引きます? 描画キャンバスは600x400でなければなりません 色を変更すると、将来描画される線の色のみが変更されます。 「すべてクリア」コマンドの実装は必須ではありませんが、実装すると* 0.9のボーナスが得られます。

2
グラフの張力、パートII:ラバーバンド
これは、「関数をピンと張る」ことに関する2つの課題のうちの2番目です。これが少し単純なパートIです。 (x 1、y 1)から(x m、y m)の位置でm個の釘をボードに打ち込みましょう。それらの最初と最後にゴムバンドを結び、他の釘の周りに伸びて、バンドがすべての釘を順番に横切るようにします。ラバーバンドは、2D空間で区分的線形パラメーター化関数(x(t)、y(t))を記述することに注意してください。 次に、位置(x 1、y 1)から(x n、y n)で、ボードに別のn個の釘を打ち込みます。最初と最後の(ゴムの端が結び付けられている)爪以外のすべての元の爪を削除すると、ゴムバンドは新しい爪の周りにぴんと張るまで短くなり、別の区分的線形関数が生成されます。 一例として、取るM = 12本の位置で最初の爪(0,0)、(2、-1)、(3/2、4/3)、(7/2、1/3)、(11/2を16/3)、(1、16 / 3)、(0、1)、(7、-2)、(3、4)、(8、1)、(3、-1)、(11、0)、およびn = 10は、位置(1、1)、(3、1)、(4、4)、(1、3)、(2、2)、(5、-1)、(5、0 )、(6、2)、(7、1)、(6、0)。次の3つのプロットは、上記のプロセスを示しています。 大きなバージョンの場合:右クリック->新しいタブで開く また、ラバーバンドを視覚化するのが困難な場合の締め付けのアニメーションを次に示します。 チャレンジ 「釘」の2つのリストが与えられた場合、最初のリストのすべての釘を横断する形状から始まる場合、2番目のリストの周りにピンと張った輪ゴムをプロットします。 プログラムまたは関数を記述し、STDIN、ARGV、または関数引数を介して入力を取得できます。結果を画面に表示するか、画像をファイルに保存できます。 結果をラスタライズする場合、各辺が少なくとも300ピクセルである必要があります。最終的な輪ゴムと爪は、画像の水平および垂直範囲の少なくとも75%をカバーする必要があります。xとyの長さスケールは同じでなければなりません。2番目のセット(少なくとも3x3ピクセルを使用)と文字列(少なくとも1ピクセルの幅)に爪を表示する必要があります。軸を含めても含めなくてもかまいません。 色は選択できますが、少なくとも2つの区別できる色が必要です。1つは背景用、もう1つは爪と文字列用です(ただし、色は異なる場合があります)。 2番目のリストのすべての爪は、ゴムバンドの初期形状から少なくとも10 -5ユニット離れていると仮定できます(そのため、浮動小数点の不正確さを心配する必要はありません)。 これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 その他の例 さらに2つの例を示します。 {{1, 1}, {3, 3}, {2, 4}, {1, 3}, {4, 0}, {3, -1}, {2, 0}, {4, 2}} {{2, 1}, {3, …

9
無人島での宝探し
前書き あなたは何人かの召使と無人島に取り残され、宝物を探しています。長く検索するほど、より多くの宝物が見つかります。検索する人が少ないほど、一人一人が見つけます。 供給が限られているため、リーダーは、グループの4分の1までの数人が毎晩死ぬことを決定しました。彼は、事前に特定の日に死亡する人数を正確に誰にも伝えないことにしました。 あなたは5人の小さなグループを管理しており、彼らはあなたのために宝物を見つけるためにキャンプから出なければなりません。 目的 この競技の目的は、できるだけ多くの宝物を集めることです。召使いがキャンプに戻ろうとしないすべてのターンで、彼らは一定数の宝物を見つけます。あなたの召使は、異なる時間にキャンプに戻るかもしれません。 労働者が宝物を探すために外に出るたびに、労働者は宝物を見つけ1+Rます。ここRで、既にキャンプに戻っている(すべてのボットのうち)労働者の数です。死んだボットはこの計算に含まれません。 それぞれの日の開始時に、乱数(nから)2には、max(3, floor(num_live_players/4))選択されます。(1日目の10人の選手のために、これはある2にmax(3,50/4)=121日目の20人の選手のために、これは次のようになります。2にmax(3,100/4)=25この番号は、その日のために死ぬために残される選手の数を表します。)、およびプログラムに渡されることはありません。 使用人が最後nに戻る人の一人である場合、彼/彼女は死に、彼/彼女が見つけた宝をあなたの所持品に移すことができなくなります。さらに、召使は残りの冒険のために宝探しに参加することはできません。 最終スコアは、冒険(コントローラーの実行)ごとに獲得した宝の平均量です。 同じスロットに空きスロットがあるよりも多くの人がキャンプに戻ることを試みた場合、誰が入場し、誰が死亡するかは乱数によって決まります。 この島での日の出から日没までの1日は30ターン続きます。夜には多くの危険な動物がいるため、日没までに帰れないということは、キャンプに入れないことを意味します。 入出力 シミュレーション全体でプログラムを実行する必要があります。 シミュレーションの開始時にINDEX Iが入力されIます。これは、ボットのインデックスです(このインデックスは1からカウントされます)。 それぞれの日の開始時に、START_DAY D/Nあなたのプログラムに入力されますD(から始まる日番号がある1)、およびNに等しくmax(3, floor(num_live_players/4))、その特定の日に死ぬことがあり、人々の最大数です。 各ターンの開始時に、START_TURN Tがプログラムに入力されます。ここTで、ターン番号(から始まる1)です。 プログラムはこれを受け取ると、使用人の動きのリストをコンマで区切って応答する必要があります。 有効な動きは次のとおりです。 R:キャンプに戻りましょう。 S:宝物を探し続けてください。 N:使用人はすでに死んでいるか、キャンプにいます。 無効な動きを入力するとS、ボットが生きていてキャンプにいないと解釈されNます。 各ターンの終わりに、文字列がプログラムに渡されます: END_TURN [Turn #] [Bot 1 Moves] [Bot 2 Moves] ... 各ボットの使用人の動きはカンマで区切られています。 これらの動きは次のいずれかです。 R:そのターンにキャンプに戻りました。 r:そのターンにキャンプに戻ることができませんでした。 S:まだ宝を探しています。 D:前のターンで死亡しました。 N:すでにキャンプに戻っています。 ボットとサーバントは、シミュレーション全体を通して同じ順序のままです。 例えば: INDEX 2 …

11
コッホスノーフレークのグラフィカル表現
Kochスノーフレークを生成する コッホスノーフレークは、nそれぞれの辺の中央に別の等辺点が追加される三角形です:http : //en.wikipedia.org/wiki/Koch_snowflake#Properties すでにkolmogrov-complexity Koch Snowflakeチャレンジがありましたn=4。新しい課題はn、1との間にあるコッホ雪片を描くこと10です。 ルール 雪片は、プログラムやファイルにハードコーディングされていない場合があります-プログラムで生成する必要があります。 プログラムはn、1〜10のすべてのサイズをサポートする必要があります。 サイドの数は、std-inを介してユーザーが入力する必要があります。 スノーフレークのグラフィック表現を画面に印刷する必要があります。 n1、2、3、および4に等しいKochスノーフレークのサンプル(わかりやすくするために緑の線のみを使用し、再現しません): タイブレーカーが発生した場合、アップ投票数が最も多いプログラムが勝ちます(ポップコンテスト)。

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 …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.