Vor kurzem (vor einigen Jahren) wurde auf Programmierwebsites viel über eine Implementierung von Tetris in 140 Bytes geredet . ...
Es stellt sich heraus, dass es sich, obwohl es klein ist, um eine vereinfachte Version von Tetris und nicht einmal um eine vollständige Implementierung handelt. Nur die Kernlogikfunktion passt in 140 Bytes Javascript. Um es tatsächlich auszuführen, benötigen Sie weitere ~ 840 Zeichen HTML.
Wir können es besser machen!
Diese Herausforderung besteht darin, eine vollständige Version von "Binary Tetris" in möglichst wenigen Tweets zu implementieren.
Binäre Tetris-Regeln:
- Das Programm muss ein Spielfeld mit mindestens 5 Spalten und 6 Zellenreihen anzeigen.
- Es kann jede Art der Anzeige verwendet werden, solange die Blöcke und die Ränder des Feldes deutlich gekennzeichnet sind.
- Es müssen mindestens zwei Arten von Blöcken vorhanden sein:
#
und##
. Zusätzliche Blockunterstützung wie###
oder Winkelblöcke in L-Form werden von mir bewertet: P und das vollständigste Spiel mit binärem Tetris (die meisten Blöcke wie die Original- und Rotationsfunktionen) werden mein Glück und ein mögliches Kopfgeld von 50 Wiederholungen gewinnen. - Dem Feld in der oberen Zeile werden neue Blöcke hinzugefügt, und eine Blockzelle muss die mittlere Spalte einnehmen.
- Die Blöcke fallen mit einer festen Geschwindigkeit in Richtung der untersten Reihe ab. Blöcke müssen auch ohne Benutzereingabe absteigen.
- Wenn Blöcke den unteren Rand des Feldes oder einen unteren Block berühren, fallen sie nicht mehr und sind fixiert. Ein neuer Block wird hinzugefügt.
- Wenn alle Spalten in der Zeile mit Blöcken gefüllt sind, wird die Zeile geleert, und alle darüber liegenden festen Blöcke werden um eine Zeile nach unten verschoben.
- Das Programm muss auf Tastendruck reagieren. Es müssen 3 eindeutige Schlüssel vorhanden sein, die die folgenden Funktionen ausführen
- aktuellen Block um 1 Spalte nach links schieben
- aktuellen Block um eine Spalte nach rechts verschieben
- aktuellen Block um eine Zeile nach unten verschieben
- Jeder Tweet darf nur 140 Zeichen lang sein. Die Verwendung von Multi-Byte-Zeichen, die in Tweets eingefügt werden können, ist zulässig.
Die Regeln für das, was in einem Tweet sein kann, sind einfach. Wenn Sie es twittern können, können Sie es verwenden.
Interpretierte Sprachen folgen den gleichen Regeln. Jeder Abschnitt muss den Spezifikationen entsprechen. Solange keine Laufzeitfehler auftreten (und der Rest gemäß den Spezifikationen gültig ist), ist Ihre Antwort gültig. Golfregeln:
Da die ursprüngliche Implementierung "tweetbar" war, erfordert diese Herausforderung dasselbe. Einträge müssen als eine Reihe von Tweets (Zeilen mit maximal 140 Zeichen) übertragen werden können.Der erste Tweet muss den Namen des Compilers / Interpreters, den Namen des Programms und alle Befehlszeilenargumente enthalten
- es wird als Datei "P0" gespeichert
- Die folgenden N Tweets müssen das Programm als eine Reihe von Zeilen enthalten.
- Jeder Tweet wird in einer Datei mit dem Namen T <n> gespeichert, wobei n für 1..N steht
- Jede Zeile wird zu den vorherigen Zeilen hinzugefügt und kompiliert oder interpretiert. Es muss eine gültige Objektdatei oder ein gültiges Programm erstellt werden.
- Das Programm muss erst funktionsfähig sein, wenn die letzte Zeile hinzugefügt wurde.
Das Programm wird wie folgt ausgeführt (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
Der Interpreter muss ein allgemein verfügbares ausführbares Programm sein, das Tetris noch nicht implementiert.
Wertung :
Wenige Tweets, einschließlich P0. Unentschieden durch die größte Anzahl von Ersatzzeichen (140 * Anzahl Tweets - Gesamtzahl der Zeichen).
Beispieleinträge
chrome a.htm
<html><div id="output"></div></html>
<script>cool java script here</script>
Punktzahl = 3 (334 übrig)
cc a.c ;a.out
main(){/*cool prog here*/}
Punktzahl = 2 (241 übrig)
tetris
Score = 1 (134 Spare), wenn es legal wäre, was es nicht ist
Besonderer Dank
Ich durfte dies mit Ashellys Zustimmung hier posten