Ein Quat ist eine Kombination aus einem Quine und dem beliebten Esolang- Katzenprogramm .
Herausforderung
Die Herausforderung besteht darin, ein Standard-Katzenprogramm zu schreiben. Unabhängig von den Benutzereingaben gibt das Programm die Eingabe als stdout aus.
Wenn die Länge der Eingabe jedoch größer als 0 und ein Vielfaches von 4 ist, sollte das Programm seinen eigenen Quellcode ausgeben. Quat kommt aus dem portugiesischen quatro , was "vier" bedeutet.
Regeln
- Es gelten Standardlücken
- Möglicherweise lesen Sie den Quellcode nicht aus einer Datei
- Eine leere Eingabe sollte eine leere Ausgabe erzeugen
Bonus
Wenn Ihre Eingabelänge ein Vielfaches von 4 ist, können Sie einen Bonus von 25% verdienen, indem Sie die Quine- length/4
Zeiten drucken . Ein weiterer 5% Bonus, wenn Sie die Ausgabe durch Leerzeichen trennen (kein Leerzeichen erlaubt).
Testfälle
Die folgenden Testfälle gelten für das Programm in%4=0?cat:self
(keine echte Sprache).
<empty input> -> <empty output>
input -> input
1234 -> in%4=0?cat:self
12345678 -> in%4=0?cat:self
0% Bonus
12345678 -> in%4=0?cat:selfin%4=0?cat:self
25% Bonus
12345678 -> in%4=0?cat:self in%4=0?cat:self
30% Bonus
Wertung
Das ist Code-Golf . Kürzester Code in Bytes gewinnt.
\n
das neue Zeilenzeichen für 1 Byte EingabeAntworten:
CJam, 23 × 0,75 = 17,25 Bytes
Standard verallgemeinertes ...
oder
Teste es hier.
Erläuterung
In der anderen Version wird die Verwendung einer Variablen mithilfe des Stapeldrehtricks vermieden
]:\
.quelle
Im Ernst,
89 BytesProbieren Sie es online
(Drücken Sie einmal die Eingabetaste im Eingabefeld, um die Leereingabe zu testen.)
Der erste Bonus kann in 12 Bytes (16 * .75) erfolgen:
Erläuterung:
Da einige Leute die Verwendung von Seriouslys integriertem Quining nicht mögen, stelle ich diese 22-Byte-Version zur Verfügung, die nicht
Q
als Referenz verwendet wird:Wenn Sie einer dieser Leute sind, betrachten Sie dies als die endgültige Version (für den Moment) und starten Sie dann einen Meta-Thread über die Verwendung von eingebauten Inhalten in Quines.
quelle
Pyth, 33 * .75 = 24,75
Test Suite
Standard-Pyth-Quine mit Join. Dies ist nur eine echte Quine für den Online-Interpreter, der keine abschließende Newline hinzufügt.
Die endgültigen Bonusergebnisse erhalten Sie mit einer Punktzahl von 39 * .7 = 27.3:
quelle
Vitsy ,
1817 BytesSo nah dran .Yus. Ich gewinne jetzt unter nicht eingebauten Quinern! starrt Ernsthaft anEs gibt keinen Grund für mich, nach den Boni zu suchen - sie würden viel mehr Bytes einwerfen.
Cheating Quine Version, 12 Bytes:
quelle
G`
ist cool! Es scheint mehr legitim als ein einfacherQ
Befehl.Emacs Lisp (323 * 0,75 = 242,25)
Hierbei wird die Zitiermechanik von Lisp verwendet, um den Quellcode als Eingabe für sich selbst zu geben.
Alte betrügerische Version
Ungolfed:
quelle
JavaScript,
575672 Bytes * 0,75 = 54Vielen Dank an @Neil für die Einsparung von einem Byte!
Die kürzeste Lösung, die ich finden konnte, war ziemlich einfach.
Also, hier sind ein paar (interessantere) Bonuslösungen:
JavaScript,
8281 Bytes * 0,75 = 60,75Dies missbraucht
repeat
die Funktionalität, eine Ausnahme auszulösen , wenn eine Nicht-Ganzzahl übergeben wird.JavaScript, 83 Byte * 0,70 = 58,1
Letzteres ist definitiv mein Favorit, indem ich die Eingabe mit dem Regex auf vier Zeichen aufteile
/.{4}/
. Wenn am Ende der Zeichenfolge noch Zeichen vorhanden sindpop
, ist dies nicht durch 4 teilbar. Warnen Sie daher die Eingabe. Andernfalls wird diepop
Länge des Arrays um eins verringert, sodass an dieser Stelle die Länge des Arrays der Eingabelänge / 4 entspricht. In diesem Fall nurfill
mit dem Quine undjoin
mit Leerzeichen.quelle
&&
auf||
, setzen Sie einen!
vor den(p=prompt())
Wert, entfernen Sie den Wert<1
und verschieben Sie denp
Wert auf die Innenseite des?:
.Perl,
6865 * 0,75 = 48,75 BytesDie Online-Testsuite finden Sie hier.
Heruntergebrochen
quelle
Mathematica, 229 Bytes
Das gesamte Leerzeichen entspricht dem
InputForm
tatsächlichen Code des Programms.quelle
Javascript ES6, 45 Bytes
Erweiterung meines 21-Byte-Bling Quine. Hoffe, dass Mischen
prompt
und Funktionsausgabe erlaubt ist.quelle
JavaScript, 33 Bytes
Andere Lösungen:
4436 Bytes38,5 Bytes
quelle