Di recente (qualche anno fa) si è verificato un certo ronzio nei siti Web di programmazione su un'implementazione di Tetris in 140 byte . ...
Si scopre che sebbene sia piccolo, è una versione semplificata di Tetris e nemmeno un'implementazione completa. Solo la funzione logica di base si adatta a 140 byte di Javascript. Per eseguirlo effettivamente, hai bisogno di altri ~ 840 caratteri di HTML.
Possiamo fare di meglio!
Questa sfida è quella di implementare una versione completa di "Binary Tetris" nel minor numero di tweet possibile.
Regole binarie di Tetris:
- Il programma deve visualizzare un campo di gioco contenente almeno 5 colonne e 6 righe di celle.
- È possibile utilizzare qualsiasi metodo di visualizzazione, purché i blocchi e i bordi del campo siano chiaramente contrassegnati.
- Ci devono essere almeno due tipi di blocchi:
#
e##
. Il supporto di blocchi aggiuntivi come###
o blocchi angolari a forma di L verrà annullato da me: P e il gioco più completo di tetris binario (il maggior numero di blocchi come le caratteristiche originali e di rotazione) vinceranno la mia felicità e un potenziale aumento di 50 rep. - Nuovi blocchi vengono aggiunti al campo nella riga superiore e una cella di blocco deve occupare la colonna centrale.
- I blocchi scendono verso la riga inferiore a una velocità fissa. I blocchi devono scendere anche senza l'input dell'utente.
- Quando i blocchi toccano la parte inferiore del campo o un blocco inferiore, smettono di cadere e vengono fissati in posizione. Viene aggiunto un nuovo blocco.
- Quando tutte le colonne della riga sono piene di blocchi, la riga viene svuotata e tutti i blocchi fissi sopra scendono di una riga.
- Il programma deve rispondere ai tasti premuti. Devono essere presenti 3 tasti univoci che svolgono le seguenti funzioni
- sposta il blocco corrente a sinistra di 1 colonna
- sposta il blocco corrente a destra di 1 colonna
- sposta il blocco corrente verso il basso di 1 riga
- Ogni tweet può contenere solo 140 caratteri. È consentito l'uso di caratteri multibyte che possono essere inseriti nei tweet.
Le regole per ciò che può essere in un tweet sono semplici. Se puoi twittarlo puoi usarlo.
Le lingue interpretate seguono le stesse regole. Ogni sezione deve seguire le specifiche. Finché non si verificano errori di runtime (e il resto è valido secondo le specifiche), la tua risposta è valida Regole del golf:
poiché l'implementazione originale era "tweetable", questa sfida richiede lo stesso. Le voci devono poter essere trasmesse come una serie di tweet (righe di 140 caratteri o meno).Il primo tweet deve contenere il nome del compilatore / interprete, il nome del programma e tutti gli argomenti della riga di comando
- verrà salvato come file "P0"
- I seguenti N tweet devono contenere il programma come una serie di righe.
- Ogni tweet verrà archiviato in un file con il nome T <n>, dove n è 1..N
- Ogni riga verrà aggiunta alle righe precedenti e compilata o interpretata. Deve produrre un file oggetto o un programma valido.
- Non è necessario che il programma sia funzionale fino a quando non viene aggiunta l'ultima riga.
Il programma verrà eseguito nel modo seguente (pseudo-bash)
interp,prog,args = split P0 /\s/ touch $prog for file in ./T* do cat $prog file > $prog $interp $prog $args die("FAIL") if $? #detect error done
L'interprete deve essere un programma eseguibile comunemente disponibile che non implementa già Tetris.
Punteggio :
minor numero di tweet, incluso P0. Legami rotti dal maggior numero di personaggi di riserva (140 * num tweet - conteggio totale dei personaggi).
Voci di esempio
chrome a.htm
<html><div id="output"></div></html>
<script>cool java script here</script>
Punteggio = 3 (334 di riserva)
cc a.c ;a.out
main(){/*cool prog here*/}
Punteggio = 2 (241 di riserva)
tetris
Punteggio = 1 (134 di riserva) se fosse legale, cosa che non lo è
Ringraziamenti speciali
Mi è stato permesso di pubblicare questo per consenso di Ashelly qui