Dividi rapidamente in Manufactoria


10

sfondo

Manufactoria è stato commercializzato come un gioco, ma noi golfisti del codice possiamo vederlo per quello che è realmente: un linguaggio di programmazione bidimensionale. Il linguaggio di programmazione Manufactoria si basa su una singola coda , che contiene una serie di marcatori colorati. Il puntatore alle istruzioni si sposta sul tabellone usando i nastri trasportatori e incontra una serie di scrittori e rami che leggono e scrivono in coda.

La lingua è molto facile da capire, quindi il modo più veloce per impararla è giocare ai primi livelli del gioco (linkato sopra).

Sfida

La tua sfida è quella di creare un programma in grado di dividere un numero per un altro numero nel minor tempo possibile.

L'input per il programma sarà una serie di marcatori X blu seguiti da marcatori Y rossi. L'output richiesto sarà una serie di marcatori rossi con una lunghezza di X / Y.

Il tabellone di gioco da utilizzare si trova in questo livello ufficiale del concorso:

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 (la dimensione massima) ed è pre-equipaggiato con i test corretti (vedere la sezione punteggio).

punteggio

Il punteggio del tuo programma è il tempo totale impiegato dal programma per superare tutti i test nel livello ufficiale del concorso. Il tempo totale è indicato nella schermata di completamento del livello.

Durante l'esecuzione dei test, molto probabilmente dovrai utilizzare il cursore di accelerazione 50x in basso a sinistra per ricevere rapidamente i risultati (l'accelerazione del tempo non influisce sul punteggio).

Ecco un elenco di problemi di divisione che sono coinvolti nei test:

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

Esempio di 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: 

Roba interessante, quel gioco! In questi giorni non ho davvero dato il tempo al golf, ma lo ricorderò.
tomsmeding,

Risposte:


6

Avrei dovuto prevederlo, ma comunque un buon lavoro. Vorrei che il motore di gioco mi permettesse di creare più di 8 casi di test. Dovrei creare più sfide Manufactoria in futuro?
PhiNotPi

1
Certo, mi piacciono.
Keith Randall,

4

Punteggio: 15:51

inserisci qui la descrizione dell'immagine

Fa divisione per sottrazione ripetuta. Usa una Y tra le R per tenere traccia di quanto divisore abbiamo sottratto finora. Usa Gs per contare il quoziente.

Ad esempio, lo stato all'inizio di ciascun loop esterno (subito dopo il writer G iniziale) per 12/4 è:

BBBBBBBBBBBB RRRR G
BBBBBBBB RRRR GG
BBBB RRRR GGG
RRRR GGGG

Quando non ci sono più B, il gadget in basso a sinistra rimuove Rs e quindi emette # G-1 Rs.

L'anello interno rimuove una B alla volta e utilizza Y per tenere traccia della posizione. A partire dal ciclo esterno:

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

L'anello interno è la scatola 3x4 in basso a destra. Il layout del resto può probabilmente essere migliorato un po ', ma il circuito interno è stretto.

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; & MC = Divide_and_Conquer; Input_will_be_X_blues_followed_by_Y_reds, _output_X / Y_reds; bbbbbbrr: RRR | bbbrrr: r | bbbbr : rrrr | r: | bbbbbbbbbbbbrrr: rrr | bbbbbbbbbbbbrrr: rrrr | bbbbbbbbbrrr: rrr | bbbbbbbbbbrr: rrrrr; 13; 3; 0 ;


Riorganizzando drasticamente le parti del tuo progetto, sono stato in grado di ridurre il punteggio a 13:28 con 53 parti.
PhiNotPi

2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.