Devuelve el último color de la entrada en Manufactoria

10

Este rompecabezas es el siguiente en mi serie de desafíos de Manufactoria.

Antecedentes

Manufactoria es un juego / lenguaje de programación bidimensional. El jugador debe crear programas que manipulen una cola para llegar a la salida deseada. Es fácil de aprender pero difícil de dominar, por lo que se presta para crear una amplia variedad de desafíos. Si no sabes de lo que estoy hablando, te aconsejo que juegues los primeros niveles tutoriales del juego.

Desafío

Su desafío es crear una máquina que devuelva el último elemento de la cadena de entrada. Para hacer esto aún más desafiante, la cadena de entrada puede ser cualquier combinación de los cuatro colores .

El nivel personalizado oficial que se utilizará se encuentra aquí:

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

El desafío de esta semana se centra principalmente en la idea de la compresión. Elegí este desafío para requerir un gran lío de cintas transportadoras. El hecho de que aparezcan los cuatro colores en la entrada significa que es muy difícil almacenar información.

Aunque no intenté la compresión, mi primer prototipo de trabajo tenía 114 piezas y cabía en el espacio de 13x13, casi sin espacio de sobra.

Puntuación

El objetivo de este desafío es utilizar algunas partes como sea posible. El puntaje es el número de partes colocadas, y gana el puntaje más bajo.

Aunque solo hay 8 casos de prueba, su creación debería poder funcionar teóricamente en cualquier caso de prueba. Los casos de prueba provistos son para propósitos de depuración.

Ejemplos

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

Respuestas:

6

65 partes

ingrese la descripción de la imagen aquí Para ser honesto, ni siquiera se me ocurrió la idea de poner pares de lectores directamente uno contra el otro hasta que lo vi en las soluciones ya publicadas. Pero luego comencé a idear muchos trucos de optimización.

Enlace

Feersum
fuente
... puedes poner cintas transportadoras una encima de la otra?
SuperJedi224
7

73 69 partes

ingrese la descripción de la imagen aquí

Organizarse como una tira parece ahorrar muchos dispositivos. De izquierda a derecha, las columnas son "el último color era amarillo", "el último color era azul", dos columnas de dispositivos, "el último color era rojo", "el último color era verde" y "todo listo".

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 : 5f3; y11: 12f3; c11: 13f2; c9: 4f3; c9: 5f3; c10: 4f3; c10: 5f3; b11: 5f1; c11: 4f2; c12: 4f2; c15: 4f3; 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_colors_: _the_very_last_color; byrgyrbyrrgry: y | bbrrbryyyrrbr: r | ggryybrryr: ​​r | b: b |: | gyrbrygbrygbyrb: b | brbrbryyrygbrg: g | rrrrrrrrrr: r; 13; 3 ;

Keith Randall
fuente
1
He construido como cinco soluciones diferentes para esta y todas tenían más de 100 piezas de tamaño. Tu solución me deja sin aliento.
breadbox
4

91 88 partes

ingrese la descripción de la imagen aquí

El gadget superior izquierdo maneja verde / azul, el gadget inferior derecho maneja rojo / amarillo.

http://pleasingfungus.com/Manufactoria/?lvl=35&code=q8:6f5;c8:7f2;c9:5f2;p9:6f4;q9:7f2;i10:5f7;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; i11 : 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 : 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 | rrrrrrrrrr: r; 13; 3; 0;

Keith Randall
fuente
+1 - varias ideas: desplaza el divisor superior rojo / azul tres lugares hacia el sur, puedes guardar la parte inferior izquierda (desplaza una a la izquierda)
Howard
4

99 90 84 81 Piezas

último en la fila - optimizaciones adicionales

Sí, esto es un desastre de cintas transportadoras. Pero finalmente, considerablemente menos de 100 partes, también gracias a la volatilidad.

http://pleasingfungus.com/Manufactoria/?lvl=33&code=p12:9f3;i12:2f1;c11:9f0;c9:8f2;c10:8f2;i11:8f7;i12:8f5;i12:4f5;i12:5f5 ; c12: 6f3; i12: 7f1; i13: 9f3; c14: 8f3; i13: 8f3; q12: 3f3; q15: 4f7; p15: 5f7; c14: 5f3; i14: 6f1; i14: 7f1; i13: 7f0; i13 : 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; c8 : 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_series_of_colvery_OUT: _; byrgyrbyrrgry: y | bbrrbryyyrrbr: r | ggryybrryr: ​​r | b: b |: | gyrbrygbrygbyrb:b | brbrbryyrygbrg: g | rrrrrrrrrr: r; 13; 3; 0;

Howard
fuente
Un pequeño reordenamiento de las cintas transportadoras redujo esto a 81 partes. Vea aquí . Además, cambiar los colores parece acelerarlo (aunque realmente no importa) de 6:23 a 5:38. Ver esta pasta para la URL.
Volatilidad
@Volatility Gracias por las 3 partes. El parece más rápido depende totalmente de los casos de prueba, por lo que realmente no importa ;-)
Howard
2

75 partes

Captura de pantalla del programa Manufactoria de 75 partes para extraer el último color de entrada

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 : 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: 2f3; c14 : 2F3; C13: 2F2; C11: 2f0; i10: 3F1; & CTM = Last_in_Line; EN: _a_series_of_colors_OUT: _the_very_last_color; byrgyrbyrrgry: y | bbrrbryyyrrbr: r | ggryybrryr: ​​r | b: b |: | gyrbrygbrygbyrb: b | brbrbryyrygbrg: g | rrrrrrrrrr: r; 13; 3; 0;

Sí, lo sé, son seis partes más que la solución de Keith Randall , pero ¿qué puedo decir? Me gusta la simetría.

Ilmari Karonen
fuente