Manufactoriaですばやく分割


10

バックグラウンド

Manufactoriaはゲームとして販売されてきましたが、コードゴルファーはそれが実際に何であるか、つまり2次元プログラミング言語でそれを見ることができます。Manufactoriaプログラミング言語は、一連のカラフルなマーカーを含む単一のキューをベースにしています。命令ポインターは、コンベヤーベルトを使用してゲームボード内を移動し、キューからの読み取りとキューへの書き込みを行う一連のライターとブランチに遭遇します。

言語は非常に理解しやすいので、習得する最も早い方法は、ゲームの最初の数レベルをプレイすることです(上記のリンク)。

チャレンジ

あなたの課題は、最短時間である数値を別の数値で割ることができるプログラムを作成することです。

プログラムへの入力は、Xの青のマーカーとそれに続くYの赤のマーカーの文字列になります。必要な出力は、X / Yの長さの赤いマーカーの文字列になります。

使用するゲームボードは、この公式コンテストレベルにあります。

http://pleasingfungus.com/Manufactoria/?ctm=Divide_and_Conquer;Input_will_be_X_blues_followed_by_Y_reds,_output_X/Y_reds;bbbbbbrr:rrr|bbbrrr:r|bbbbr:rrrr|r:|bbbbbbbbbbbbrrrrbbbbrbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrr rrrrr; 13; 3; 0

これは13x13(最大サイズ)で、適切なテストが事前に設定されています(スコアリングのセクションを参照)。

得点

プログラムのスコアは、プログラムが公式コンテストレベルのすべてのテストに合格するのにかかる合計時間です。合計時間はレベル完了画面に表示されます。

テストの実行中は、結果をすばやく受け取るために、左下の50x加速スライダーを使用する必要があります(時間の加速はスコアに影響しません)。

以下は、テストに関係する分割問題のリストです。

 6/2 = 3
 3/3 = 1
 4/1 = 4
 0/1 = 0
12/4 = 3
12/3 = 4
 9/3 = 3
10/2 = 5

I / Oの例

12/3=4
in:  BBBBBBBBBBBBRRR
out: RRRR

10/2=5
in:  BBBBBBBBBBRR
out: RRRRR

9/3=3
in:  BBBBBBBBBRRR
out: RRR

0/1=0
in:  R
out: 

クールなもの、そのゲーム!最近はゴルフに時間を割いてはいけませんが、覚えておいてください。
tomsmeding 2013年

回答:


6

私はこれを予測するべきでしたが、とにかく良い仕事です。ゲームエンジンで8つを超えるテストケースを作成できることを願っています。今後、Manufactoriaの課題をさらに作成する必要がありますか?
PhiNotPi 2013年

1
もちろん、私はそれらが好きです。
Keith Randall 2013年

4

スコア:15:51

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

繰り返し減算による除算を行います。Rの中でYを使用して、これまでに減算した除数を追跡します。Gsを使用して商をカウントします。

たとえば、12/4の各外部ループの開始時(最初のGライターの直後)の状態は次のとおりです。

BBBBBBBBBBBB RRRR G
BBBBBBBB RRRR GG
BBBB RRRR GGG
RRRR GGGG

Bが残っていない場合、左下のガジェットはRを取り除き、#G-1 Rを出力します。

内側のループは一度に1つのBを取り除き、Yを使用して位置を追跡します。外側のループから始めます。

BBBBBBBB RRRR GG
BBBBBBB RYRRR GG
BBBBBB RRYRR GG
BBBBB RRRYR GG
BBBB RRRR GG

内側のループは、右下の3x4ボックスです。残りのレイアウトはおそらく少し改善できますが、内側のループはきついです。

http://pleasingfungus.com/Manufactoria/?lvl=34&code=c11:13f2;g12:2f3;p12:3f7;c13:3f3;p13:4f3;b12:4f2;r14:4f3;p14:7f7;r13:7f2 ; q14:8f7; g13:8f2; p14:9f4; r13:10f2; p14:10f7; b15:10f0; q14:11f7; p15:11f3; r16:11f1; p15:8f0; r15:9f1; c16:8f0; c13 :2f0; c15:2f0; c16:2f0; c17:2f0; c11:3f3; c11:4f3; c11:6f3; c11:7f3; c11:8f3; c11:9f3; c11:5f3; p11:10f7; q11:11f6 ; q11:12f7; r10:12f2; c10:10f2; q16:10f5; y14:6f3; q14:5f3; g15:5f1; c15:4f1; c15:3f1; c17:9f1; c17:8f1; c17:7f1; c17 :6f1; c17:5f1; c17:4f1; c17:3f1; y16:9f1; g17:10f1; q14:2f4; g14:1f3;&ctm = Divide_and_Conquer; Input_will_be_X_blues_followed_by_Y_reds、_output_Xrr | bb | bb | bbr | :rrrr | r:| bbbbbbbbbbbbrrrr:rrr | bbbbbbbbbbbbrrr:rrrr | bbbbbbbbbrrr:rrr | bbbbbbbbbbrr:rrrrr; 13; 3; 0 ;


デザインのパーツを大幅に再配置することで、53パーツでスコアを13:28に減らすことができました。
PhiNotPi 2013年

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