Divida rapidamente em Manufactoria


10

fundo

O Manufactoria foi comercializado como um jogo, mas nós, jogadores de código, podemos vê-lo como realmente é: uma linguagem de programação bidimensional. A linguagem de programação Manufactoria é baseada em uma única fila , que contém uma série de marcadores coloridos. O ponteiro de instruções se move pelo tabuleiro de jogo usando correias transportadoras e encontra uma série de gravadores e ramificações que lêem e gravam na fila.

O idioma é muito fácil de entender; portanto, a maneira mais rápida de aprender é jogar os primeiros níveis do jogo (link acima).

Desafio

Seu desafio é criar um programa que possa dividir um número por outro na menor quantidade de tempo.

A entrada para o programa será uma sequência de marcadores azuis X seguidos por marcadores Y vermelhos. A saída necessária será uma sequência de marcadores vermelhos com um comprimento de X / Y.

O tabuleiro de jogo a ser usado é encontrado neste nível oficial do concurso:

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:|bbbbbbbbbbbbrrrr:rrr|bbbbbbbbbbbbrrr:rrrr|bbbbbbbbbrrr:rrr|bbbbbbbbbbrr: rrrrr; 13; 3; 0

É 13x13 (tamanho máximo) e é pré-equipado com os testes corretos (consulte a seção de pontuação).

Pontuação

A pontuação do seu programa é a quantidade total de tempo que leva para o programa passar em todos os testes no nível oficial da competição. O tempo total é fornecido na tela de nível completo.

Durante a execução dos testes, você provavelmente precisará usar o controle deslizante de aceleração de 50x no canto inferior esquerdo para receber os resultados rapidamente (a aceleração do tempo não afeta a pontuação).

Aqui está uma lista de problemas de divisão envolvidos nos testes:

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

Exemplo de E / S

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: 

Coisas legais, esse jogo! Realmente não deu tempo para jogar golfe hoje em dia, mas lembre-se disso.
tomsmeding

Respostas:


6

Eu deveria ter previsto isso, mas de qualquer maneira um bom trabalho. Eu gostaria que o mecanismo de jogo me permitisse criar mais de 8 casos de teste. Devo criar mais desafios de Manufactoria no futuro?
PhiNotPi

11
Claro, eu gosto deles.
Keith Randall

4

Pontuação: 15:51

insira a descrição da imagem aqui

Divide por subtração repetida. Usa um Y entre o R para acompanhar quanto divisor subtraímos até agora. Usa Gs para contar o quociente.

Por exemplo, o estado no início de cada loop externo (logo após o gravador G inicial) para 12/4 é:

BBBBBBBBBBBB RRRR G
BBBBBBBB RRRR GG
BBBB RRRR GGG
RRRR GGGG

Quando não há Bs restantes, o gadget na parte inferior esquerda retira Rs e depois gera # G-1 Rs.

O loop interno retira um B de cada vez e usa Y para controlar a posição. Começando no loop externo:

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

O loop interno é a caixa 3x4 no canto inferior direito. O layout do resto provavelmente pode ser melhorado um pouco, mas o loop interno é apertado.

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, rbb: r : rrrr | r: | bbbbbbbbbbbbrrrr: rrr | bbbbbbbbbbbbrrr: rrrr | bbbbbbbbbrrr: rrr | bbbbbbbbbbrrr: rrrrr; 13; 3; 0 ;


Reorganizando drasticamente as partes do seu design, consegui reduzir a pontuação para 13:28 com 53 partes.
PhiNotPi

2
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.