Manufactoria:可能な限り遅い受け入れプログラムを生成する


18

空の入力テープを受け入れるManufactoriaプログラムを作成します。しかし、すぐにやらないでください!つまり、プログラムをすばやく作成しますが、すぐに実行させないでください。最終的に終了する限り、プログラムが遅いほど良いです。以下のプログラム例には、3:51(シミュレーターによって報告される「合計時間」)がかかります。

ここに画像の説明を入力してください

http://pleasingfungus.com/Manufactoria/?lvl=36&code=g12:5f3;r9:8f1;p12:9f3;c13:9f0;r11:9f0;r10:9f0;r9:9f1;b11:8f0;b10:8f1 ; r9:7f2; c10:7f2; c11:7f2; c12:7f3; q12:8f3; y13:8f2; y14:8f2; y15:8f1; y15:7f0; y14:7f0; y13:7f0; g12:6f3;&ctm = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;

プログラムは空のテープから始まります。少し落書きする必要がありますが、最終的に出力スクエアに到達します。必要に応じて、テープにデータを残すことができます。7x7 Manufactoriaボードで最も遅いプログラムが勝ちます!

あなたの右矢印キーはあなたの友人です、それはシミュレータを高速化します。

シミュレーターをクラッシュさせた場合のボーナスポイント!


それでは、空のテープ以外に入力を受け入れる/拒否する要件はありませんか?
ボラティリティ

@揮発性:正しい。
キースランドール

面倒なことに、シミュレータはチャレンジの予想出力と一致しないため、最後にテープが空でない限り、実行時間を報告しません。(幸いなことに、余分なスペースをあまり必要とせずに、最後にテープを消去するのは簡単でした。)
ブレッドボックス

回答:


22

〜10 23回の繰り返し〜10 15回の繰り返し 〜10 8回の繰り返し

Manufactoriaのセットアップ

http://pleasingfungus.com/Manufactoria/?lvl=32&code=g9:7f2;b12:8f2;p13:8f5;p11:8f3;r14:8f0;q11:10f3;q13:7f1;y13:9f1;r10:10f1 ; c12:9f2; c9:9f2; i11:9f7; i10:9f4; c9:8f3; i10:8f2; c14:9f0; c15:9f0; c15:8f3; c15:7f3; c14:7f2; g12:7f0; c11 :7f3; c10:7f2; q9:6f7; r10:6f1; r9:5f3; c11:6f0; r10:5f2; r11:5f1; r9:4f3; r10:4f0; r11:4f0; y12:5f2; y13:5f2 ; y14:5f3; y14:6f0; y13:6f0; y12:6f0;&ctm = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;

機械は基本的に3を基点として走行する走行距離計で、赤、青、黄色の記号を使用して、それぞれ数字0、1、2を表します。緑色の記号は、番号の終わりを示すために使用されます。開始時に、テープは49個の赤いシンボルで初期化されます。これは、マシンの上部3行の部品によって行われます。下部の4行は、ループで数値をインクリメントするタスクを処理します。各反復で、左側の2つのブランチセルが現在の数値に増分を適用する方法を計算し、右側のブランチセルが残りの影響を受けない数字をコピーします。

以前は、マシンの実行時間を推定しようとしましたが、完了まで実行することが許可されていましたが、このレベルでは、反復回数だけを実行する方が理にかなっています。大まかに言うと、1回の反復を完了するには約1分かかりますが、1秒かかったとしても、実行時間は1桁だけ減少します。


4
OK、私はあきらめます
。–ボラティリティ

2
あきらめてはいけません!これがまだ表面を傷つけているだけであることは間違いありません。たとえば、走行距離計のロジックを1つまたは2つのセルだけで圧縮すると、実行時間を大幅に増やすことができます。
ブレッドボックス


5
それが助けになれば、それが異なるアプローチであったという理由だけで、私はしばしばリーダーの後ろにあるゴルフの答えを提出しました。このサイトで私が気に入っていることの1つは、応答の多様性を保持していることです。
パンボックス

1
@SimplyBeautifulArtシンボルのペアを数字にすることで、おそらく改善できます(この場合、4分の3ではなく16のうち15を使用できます)。もちろん、小さなボードサイズでそれを実装しようとすると、多くの困難に直面します。
feersum

8

603:25

オンラインテスト

私は今日、Manufactoriaの質問を読み直していましたが、突然、プロセスを劇的に遅くするアイデアを思いつきました。ただ50個の値を持ち、色を3回変える代わりに、新しいプログラムはそれを行いますが、その後、それは減少します値の数は1で、プログラムが停止する空のテープが存在するまで、再び色が変化します。

キューは一度に50を超える値を格納しないため、テープに多くの値をプッシュしようとしても意味がありません。すぐにプッシュされます。前と同様に、コンベアベルトは、物の走行にかかる時間を最大化することを目的としています。実際、実行時間を大幅に増加させるための微調整は最小限でした。

それでも、ブレッドボックスの答えに近いところはありません。


ソリューションがどれほど似ているか興味深い。私たちは両方とも9x6乗算器から始め、ブランチとx6グループを同じ場所に配置しました!あなたのものはもっとエレガントです-あなたはすべてのセルを使い、きれいなテープで仕上げました。
イグビーラージマン

5

33:33

これにかなりの時間を費やしました(ボラティリティはバーをかなり高く設定しました)が、33:33に到達したら、立ち止まるのにちょうどいい時間だと思いました。

戦略はかなり鈍いです。基本的にテープをある色で塗りつぶし、次に別の色で塗りつぶし、常に各書き込み(または書き込みのグループ)の間でできるだけ多くのセルをトラバースしようとします。

これをさらに進めることができる方法を見つけることができると確信しています。

忙しいビーバー

レベルリンク


+1私はそれを打ち負かすために何ができるか見ていきます;)(おそらくあまり遠くに行くつもりはありませんが)
ボラティリティ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.