Kembalikan warna terakhir dari input di Manufactoria

10

Teka-teki ini adalah seri berikutnya dari tantangan Manufactoria saya.

Latar Belakang

Manufactoria adalah game / bahasa pemrograman dua dimensi. Pemain harus membuat program yang akan memanipulasi antrian untuk mencapai hasil yang diinginkan. Mudah dipelajari tetapi sulit untuk dikuasai, sehingga cocok untuk menciptakan berbagai macam tantangan. Jika Anda tidak tahu apa yang saya bicarakan, saya sarankan Anda memainkan beberapa level tutorial pertama dari gim ini.

Tantangan

Tantangan Anda adalah membuat mesin yang akan mengembalikan elemen terakhir dari string input. Untuk membuat ini bahkan lebih menantang, input string dapat setiap kombinasi semua empat warna .

Tingkat kustom resmi untuk digunakan ditemukan di sini:

http://pleasingfungus.com/Manufactoria/?ctm=Last_in_Line!;IN:_a_series_of_colors_OUT:_the_very_last_color;byrgyrbyrrgry:y|bbrrbryyyrrbr:r|ggryybrryr:r|rbrrrrrrrrrrrr r; 13; 3; 0 ;

Tantangan minggu ini sebagian besar terfokus pada gagasan kompresi. Saya memilih tantangan ini untuk membutuhkan sabuk konveyor yang sangat berantakan. Fakta bahwa keempat warna muncul di input berarti sangat sulit untuk menyimpan informasi.

Meskipun saya tidak mencoba kompresi, prototipe kerja pertama saya memiliki 114 bagian dan masuk ke ruang 13x13 dengan hampir tidak ada ruang kosong.

Mencetak gol

Tujuan dari tantangan ini adalah menggunakan beberapa bagian sebaik mungkin. Skor adalah jumlah bagian yang ditempatkan, dan skor terendah menang.

Meskipun hanya ada 8 kasus uji, kreasi Anda harus dapat berfungsi secara teoritis di bawah setiap kasus uji. Kasing uji yang disediakan adalah untuk keperluan debugging.

Contohnya

in:  byrgyrbyrrgry
out: y
in:  ggryybrryr
out: r
in:         #don't you love degenerate cases?
out:
in:  gyrbrygbrygbyrb
out: b
PhiNotPi
sumber

Jawaban:

6

65 bagian

masukkan deskripsi gambar di sini Sejujurnya aku bahkan tidak bisa datang dengan ide menempatkan pasangan pembaca secara langsung terhadap satu sama lain sampai aku melihatnya dalam solusi yang sudah diposting. Tetapi kemudian saya mulai menemukan banyak trik optimasi.

Tautan

feersum
sumber
... Anda dapat menempatkan ban berjalan di atas satu sama lain?
SuperJedi224
7

73 69 bagian

masukkan deskripsi gambar di sini

Pengorganisasian sebagai strip tampaknya menghemat banyak perangkat. Kiri-ke-kanan, kolomnya adalah "warna terakhir adalah kuning", "warna terakhir adalah biru", dua kolom perangkat, "warna terakhir adalah merah", "warna terakhir adalah hijau", dan "semua selesai".

http://pleasingfungus.com/Manufactoria/?lvl=35&code=c10:8f2;q11:6f5;i11:7f0;p11:8f5;i12:6f4;q12:7f5;p12:8f5;c13:8f0;i10:7f6 ; i10: 6f6; i13: 6f7; i13: 7f7; c9: 6f3; c9: 7f3; c9: 8f3; q11: 9f3; q12: 9f3; c9: 9f2; i10: 9f3; i13: 9f2; g12: 12f3; c10: : 10f1; c13: 11f1; c13: 10f1; c10: 11f1; p12: 2f3; q12: 3f3; c13: 2f3; i13: 3f5; c11: 2f0; c10: 2f3; i10: 3f1; c11: 3f0; c9: 3f3; ; p11: 11f3; p12: 10f3; i11: 10f1; i12: 11f5; c14: 3f3; c14: 6f3; c14: 7f3; c14: 8f3; c14: 9f0; i14: 4f5; c14: 5f3; i13: 4f5; c13: 4f5; c13: : 5f3; y11: 12f3; c11: 13f2; c9: 4f3; c9: 5f3; c10: 4f3; c10: 5f3; b11: 5f1; c11: 4f2; c12: 4f2; c15: 4f3; c15: 5f3; c15: 5f3; c15: 6f3; ; c15: 8f3; c15: 7f3; c15: 9f3; c15: 10f3; c15: 11f3; c15: 12f3; c15: 13f0; c14: 13f0; c13: 13f0; r12: 5f1; & ctm = Last_in_Line!; IN: _a__series_of _the_very_last_color; byrgyrbyrrgry: y | bbrrbryyyrrbr: r | ggryybrryr: ​​r | b: b |: | gyrbrygbrygbyrb: b | brbrbryyrygbrg: g | rrrrrrrrrr: r; 13 ;

Keith Randall
sumber
1
Saya telah membangun seperti lima solusi berbeda untuk yang satu ini dan mereka semua berukuran lebih dari 100 bagian. Solusi Anda membuat saya terkejut.
kotak roti
4

91 88 bagian

masukkan deskripsi gambar di sini

Gadget kiri atas menangani hijau / biru, gadget kanan bawah menangani merah / kuning.

http://pleasingfungus.com/Manufactoria/?lvl=35&code=q8:6f5;c8:7f2;c9=f2;p9:6f4;q9:7f2;i10 5-10f7;c10:6f0;p10:7f3;i12:6f6 ; i13: 6f6; c13: 11f0; i14: 6f6; p14: 10f3; r14: 11f0; c15: 6f0; p15: 9f6; q15: 10f0; c15: 11f2; c16: 6f0; q16: 9f5; c16: 10f0; i16: : 11f3; c17: 6f0; c17: 7f1; c17: 8f1; c17: 9f1; c17: 11f1; b10: 8f2; i11: 8f7; c12: 4f3; c12: 7f3; c12: 8f3; i12: 9f5; i12: 10f1; ; c12: 11f3; i12: 12f5; c14: 3f3; c14: 4f3; c9: 4f2; i10: 4f7; i11: 4f7; c7: 8f2; i8: 8f3; c9: 8f3; c9: 9f2; c10: 9f2; c10: 9f2; c11: 9f2; : 9f7; i13: 9f7; c14: 9f2; c13: 10f0; i11: 10f6; c10: 10f0; c9: 10f0; c8: 10f1; c8: 9f1; c15: 7f0; i14: 7f6; i13: 7f6; c15: 8f0; ; i14: 8f6; c13: 8f3; c8: 4f2; c16: 7f0; g8: 5f1; y16: 8f1; q12: 3f7; c13: 2f3; i13: 3f5; c13: 4f3; i11: 3f6; c10: 3f3; p12; p12 : 2f7; c11: 2f3; c7: 6f3; c7: 7f3; c11: 5f3; i11: 6f6; c11: 7f3; c12: 5f3; c13: 5f3; c14: 5f3; c17: 10f1; c11: 11f3; c11: 12f2; ; c13: 12f2; c14: 12f2; c15: 12f2; c16: 12f1; & ctm = Last_in_Line!; IN: _a_series_of_colors_OUT: _the_very_last_color; byrgyrbyrrgry:y | bbrrbryyyrrbr: r | ggryybrryr: ​​r | b: b |: | gyrbrygbrygbyrb: b | brbrbryyrygbrg: g | rrrrrrrrrrr: r; 13; 3; 0;;

Keith Randall
sumber
+1 - beberapa ide: menggeser pembagi atas merah / biru tiga tempat ke selatan, Anda dapat menyimpan bagian kiri bawah (menggeser satu ke kiri)
Howard
4

99 90 84 81 Bagian

terakhir sejalan - optimisasi lebih lanjut

Ya - ini adalah sabuk pengangkut yang berantakan. Namun akhirnya jauh lebih sedikit dari 100 bagian - juga berkat Volatilitas.

http://pleasingfungus.com/Manufactoria/?lvl=33&code=p12:9f3;i12:f1;c11:9f0;c9:8f2;c10:8f2;i11:8f7;i12:8f5;i12:4f5;i12:f5 ; c12: 6f3; i12: 7f1; i13: 9f3; c14: 8f3; i13: 8f3; q12: 3f3; q15: 4f7; p15: 5f7; c14: 5f3; i14: 6f1; i13: 7f0; i13: 7f0; i13: 7f0; i13: 7f0; : 6f0; i13: 5f4; c11: 7f3; c10: 7f2; c15: 7f0; c16: 5f3; c16: 7f0; c11: 2f3; c13: 2f0; c14: 2f0; c15: 2f0; c16: 3f1; c16: 4f1; ; c16: 2f0; c17: 4f0; c17: 5f1; c17: 7f1; c17: 8f1; c8: 8f1; c8: 7f1; c8: 5f1; c8: 4f2; c16: 6f3; c17: 6f1; g15: 6f0; c15: : 6f1; c8: 9f1; c8: 10f1; c9: 9f1; c9: 10f0; p10: 9f7; q10: 10f3; b10: 11f2; c11: 10f2; c11: 11f2; i12: 10f5; c12: 11f3; c13: 10f1; ; c13: 11f0; c16: 10f2; c17: 9f1; c17: 10f1; c12: 12f3; p14: 9f7; q14: 10f7; r14: 11f0; c15: 9f1; c15: 8f1; c15: 10f2; c11: 3f3; q11; : 4f3; p11: 5f3; y11: 6f2; c10: 5f3; c10: 6f3; c9: 4f2; c10: 4f2; c13: 3f3; c13: 4f2; c14: 4f2; & ctm = Last_in_Line!; IN: _a_ser_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ byrgyrbyrrgry: y | bbrrbryyyrrbr: r | ggryybrryr: ​​r | b: b |: | gyrbrygbrygbyrb:b | brbrbryyrygbrg: g | rrrrrrrrrr: r; 13; 3; 0;

Howard
sumber
Sedikit penataan ulang sabuk konveyor mengurangi ini menjadi 81 bagian. Lihat di sini . Juga, mengubah warna di sekitar tampaknya membuatnya lebih cepat (meskipun sebenarnya tidak masalah) dari 6:23 hingga 5:38. Lihat tempel ini untuk URL.
Volatilitas
@Vatilitas Terima kasih atas 3 bagian. The tampaknya lebih cepat benar-benar tergantung pada kasus uji, sehingga benar-benar tidak peduli ;-)
Howard
2

75 bagian

Cuplikan layar program Manufactoria 75 bagian untuk mengekstraksi warna input terakhir

http://pleasingfungus.com/Manufactoria/?lvl=34&code=c11:9f1;q11:11f3;p11:12f7;g11:13f2;i12:9f1;i12:10f1;i12:11f1;i12:12f5;p13:9f7 ; i13: 11f1; i13: 12f5; i14: 11f0; q13: 10f3; c14: 9f0; c15: 11f0; c14: 12f1; i14: 10f4; c15: 9f3; c15: 10f3; c10: 12f1; i10: 11f0; i10: 11f0; i10: 11f0; : 10f0; c10: 9f1; c9: 11f1; c9: 10f1; c9: 9f1; b13: 13f0; c11: 10f0; c9: 6f2; c9: 7f1; c9: 8f1; c10: 5f3; i10: 6f5; i10: 7f1; ; c10: 8f2; r11: 4f2; i11: 5f0; i11: 6f4; q11: 7f5; p11: 8f1; c12: 4f3; i12: 5f1; i12: 6f5; i12: 7f5; i12: 8f5; y13: 4f0; p13; : 5f1; q13: 6f5; c13: 7f2; c13: 8f3; c14: 5f3; i14: 6f5; i14: 7f5; c14: 8f3; c15: 6f3; c15: 7f3; c15: 8f3; p12: 2f7; q12: 3f3; ; c11: 3f0; i14: 3f5; c13: 3f2; c15: 3f3; c15: 4f3; c15: 5f3; c14: 4f3; c10: 4f3; c9: 5f3; c9: 4f3; c9: 3f3; c10: 3f3; c10: 2f3; c14: 3f3; c14: 3f3; : 2f3; c13: 2f2; c11: 2f0; i10: 3f1; & ctm = Last_in_Line!; IN: _a_series_of_colors_OUT: _the_very_last_color; byrgyrbyrrgry: y | bbrrbryyrrbry | bry | brb | | | g | rrrrrrrrr: r; 13; 3; 0;

Ya, saya tahu, ini enam bagian lebih dari solusi Keith Randall , tapi apa yang bisa saya katakan? Saya suka simetri.

Ilmari Karonen
sumber