Jetzt mit BONUS zur Laufzeitplatzierung.
Schreiben Sie ein Programm, um ein Textfeld mit den in Ihrem Programm verwendeten Bezeichnern zu füllen, während Sie Ihr Programm klein halten. Füllen Sie mit allen Bezeichnern, die Sie in Ihrem Programm verwendet haben (mit Ausnahme der von Ihnen erstellten), ein 12x6-Feld mit so vielen wie möglich. Sie erhalten zusätzliche Punkte für gekreuzte Bezeichner (Kreuzworträtselstil), die sich jedoch nicht durchgängig verbinden können.
Ausgabe
Ihr Programm sollte ein 12x6-Zeichenfeld mit Ihren gepackten Kennungen und einem #
Rand drucken (um es zu stdouten) . Das Feld sollte Spalten mit dem Buchstaben AL und die Zeilen 1-6 enthalten (wie im folgenden Beispiel beabstandet). Drucken Sie dann eine Zeile für jede verwendete Kennung. Jede Zeile enthält die Position des ersten Buchstabens, die Kennung selbst und die Punktzahl. Die Punktzahl entspricht der Anzahl der Buchstaben in der Kennung, wobei ein möglicher '+ Bonus' hinzugefügt wird. Die Kennung erhält einen Bonus von 5 Punkten für jeden Buchstaben, der mit einer Kreuzungskennung geteilt wird. In der letzten Zeile wird 'TOTAL:' und die Summe der Bezeichnerwerte angezeigt. Eine Beispielausgabe für ein mögliches Python-Programm würde folgendermaßen aussehen:
ABCDEFGHIJKL
##############
1 # pinsert #
2 # o #
3 # print #
4 # not #
5 # #
6 #import #
##############
C1 pop 3+5
D1 insert 6
C3 print 5+10
E3 in 2+10
E4 not 3+5
A6 import 6
TOTAL: 55
Anmerkungen:
- Bezeichner können (wie
import
oben) nicht angehängt werden . - Sie können nicht beitreten
pop
undprint
inline gehenpoprint
. - Die Zeichenfolge im
in
Innereninsert
kann nicht verwendet werden. Das Verbinden von Wörtern muss orthogonal sein. - Bezeichner können nebeneinander platziert werden (wie
pop
undinsert
darüber).
Ihre Antwort sollte Ihre Programmausgabe mit Ihrem Quellcode und einem Titel enthalten, der aus dem Namen der Sprache und Ihrer Punktzahl besteht.
Ergebnis
Ihre Punktzahl für die Herausforderung ergibt sich aus dem Quadrat der Puzzle-Punktzahl geteilt durch die Größe Ihres Quellcodes (in Bytes). Beispiel: Das obige Puzzle mit einem 300-Byte-Programm würde punkten 55*55/300 = 10.08
. Die höchste Punktzahl gewinnt.
Regeln
- Sie können jeden Bezeichner in Ihrem Programm verwenden, der nicht von Ihnen definiert wurde. Schlüsselwörter, Klassennamen, Methodennamen, Bibliotheksnamen und integrierte Funktionsnamen sind Beispiele für geeignete Bezeichner.
- BEARBEITET: Sie dürfen nur Standardbibliotheken verwenden, die in der Mindestversion der Sprache enthalten sind. Erweiterte Sprachpakete und die Verwendung externer Bibliotheken sind (jetzt) verboten. Die große Auswahl an Bibliotheken mit umfangreichen Listen von Kennungen würde diese Herausforderung aus dem Gleichgewicht bringen. Wenn Sie sich nicht sicher sind, wie dies mit Ihrer Sprache funktioniert, hinterlassen Sie bitte eine Frage in den Kommentaren.
- Bezeichner dürfen nur aus [a-zA-Z_] Zeichen bestehen und mindestens 2 Zeichen enthalten.
- Sie dürfen jede Kennung nur einmal im Puzzle verwenden.
- Bezeichner können nur von links nach rechts oder nach unten verwendet werden.
Dynamischer Bonus!
Wenn Ihr Code bestimmt, wo zur Laufzeit Kennungen platziert werden sollen, beträgt der Bonus für gemeinsam genutzte Buchstaben 20 statt 5. Sie können angeben, welche Kennungen verwendet werden sollen, aber Ihr Code muss entscheiden, wo in der Box sie platziert werden sollen. Ihr Code muss auch die Score-Liste berechnen und ausdrucken. Wenn Ihre Platzierungen von der Reihenfolge der Identifikatorliste, fest codierten Paarungen oder anderen nicht dynamischen Platzierungsverknüpfungen abhängen , haben Sie keinen Anspruch auf den dynamischen Bonus.
In der obigen Beispielausgabe würde die Puzzle-Punktzahl für ein Laufzeit-Platzierungsprogramm 145 werden. Wenn der Code dann 800 Bytes wäre, wäre die Punktzahl 145*145/800 = 26.28
.
Der dynamische Bonus wurde entwickelt, um clevere Algorithmen anstelle von statischen fest codierten Lösungszeichenfolgen zu belohnen und die größere resultierende Quellcodegröße zu kompensieren.
EDITS:
- Geänderte Bibliotheken, die nur in der Mindestversion verwendet werden.
- Die dynamische Bonusoption wurde hinzugefügt.
xyzw
rgba
stpq