Retorna a última cor da entrada no Manufactoria

10

Este quebra-cabeça é o próximo da minha série de desafios da Manufactoria.

fundo

Manufactoria é uma linguagem de programação de jogos / bidimensional. O jogador deve criar programas que manipularão uma fila para chegar à saída desejada. É fácil de aprender, mas difícil de dominar, por isso se presta a criar uma ampla variedade de desafios. Se você não sabe do que estou falando, aconselho que jogue os primeiros níveis de tutorial do jogo.

Desafio

Seu desafio é criar uma máquina que retorne o último elemento da string de entrada. Para tornar isso ainda mais desafiador, a sequência de entrada pode ser qualquer combinação das quatro cores .

O nível personalizado oficial a ser usado é encontrado aqui:

http://pleasingfungus.com/Manufactoria/?ctm=Last_in_Line!;IN:_a_series_of_colors_OUT:_the_very_last_color; r; 13; 3; 0 ;

O desafio desta semana está principalmente focado na ideia de compressão. Eu escolhi esse desafio para exigir uma enorme bagunça de correias transportadoras. O fato de todas as quatro cores aparecerem na entrada significa que é muito difícil armazenar informações.

Embora eu não tenha tentado compactar, meu primeiro protótipo de trabalho tinha 114 partes e se encaixava no espaço 13x13, quase sem espaço de sobra.

Pontuação

O objetivo deste desafio é usar o menor número possível de partes. A pontuação é o número de peças colocadas e a pontuação mais baixa vence.

Embora haja apenas 8 casos de teste, sua criação deve poder funcionar teoricamente em qualquer caso de teste. Os casos de teste fornecidos são para fins de depuração.

Exemplos

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

Respostas:

6

65 partes

insira a descrição da imagem aqui Para ser sincero, eu não conseguia nem pensar em colocar pares de leitores diretamente um no outro até ver isso nas soluções já postadas. Mas depois comecei a criar muitos truques de otimização.

Ligação

feersum
fonte
... você pode colocar correias transportadoras em cima umas das outras?
precisa saber é o seguinte
7

73 69 partes

insira a descrição da imagem aqui

Organizar como uma tira parece economizar muitos dispositivos. Da esquerda para a direita, as colunas são "a última cor era amarela", "a última cor era azul", duas colunas de dispositivos, "a última cor era vermelha", "a última cor era verde" e "todas concluídas".

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_OUT _the_very_last_color; byrgyrbyrrgry: y | bbrrbryyyrrbr: r | ggryybrryr: ​​r | b: b |: | gyrbrygbrygbyrb: b | brbrbryyrygbrg: g | rrrrrrrrrr: r; 13; 3 ;

Keith Randall
fonte
11
Criei cinco soluções diferentes para essa e elas tinham mais de 100 peças. Sua solução me surpreende.
breadbox
4

91 88 partes

insira a descrição da imagem aqui

O gadget superior esquerdo lida com verde / azul, o gadget inferior direito lida com vermelho / amarelo.

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
fonte
+1 - várias ideias: mudar o vermelho para cima / divisor azul três lugares ao sul, você pode salvar a parte inferior esquerda (shift uma para a esquerda)
Howard
4

99 90 84 81 Peças

último na fila - otimizações adicionais

Sim - isso é uma bagunça de correias transportadoras. Mas, finalmente, consideravelmente menos de 100 partes - também graças à Volatilidade.

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_colors_OUT: byrgyrbyrrgry: y | bbrrbryyyrrbr: r | ggryybrryr: ​​r | b: b |: | gyrbrygbrygbyrb:b | brbrbryyggg: g | rrrrrrrrrr: r; 13; 3; 0;

Howard
fonte
Uma pequena reorganização das correias transportadoras reduziu isso para 81 partes. Veja aqui . Além disso, alterar as cores ao redor parece torná-lo mais rápido (embora realmente não importe) das 6:23 às 5:38. Veja este colar para o URL.
Volatilidade
@ Volatility Obrigado pelas 3 partes. O parece mais rápido depende totalmente os casos de teste, por isso realmente não importa ;-)
Howard
2

75 partes

Captura de tela do programa Manufactoria de 75 partes para extrair a última cor 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!; IN: _a_series_of_colors_OUT: _the_very_last_color; byrgyrbyrrgry: y | bbrrbryyrrbr: r | ggryybrryr: ​​r | by g | rrrrrrrrrr: r; 13; 3; 0;

Sim, eu sei, são seis partes a mais que a solução de Keith Randall , mas o que posso dizer? Eu gosto da simetria.

Ilmari Karonen
fonte