Mandoline quine

25

Schreiben Sie ein Quine ... von dem jedes andere Zeichen entfernt werden kann, ist es immer noch ein gültiges Quine. Sie können festlegen, ob beim ersten oder zweiten Zeichen Zeichen entfernt werden sollen.

Bewertungskriterien (addieren Sie Boni / Strafprozentsätze für den Gesamtprozentsatz):

  • Die Antworten müssen mindestens 4 Zeichen lang sein
  • Das Programm muss mindestens ein alphabetisches Zeichen in seiner Quelle enthalten, wird also beispielsweise 12345!@#$%^&*()disqualifiziert
  • + 750%, wenn die verwendete Sprache nicht vollständig ist (ich sehe dich an, HTML!)
  • -15%, wenn die Lösung ihre Quelle in keiner Form von irgendwoher liest
  • -20%, wenn Sie auch nur jedes fünfte Zeichen behalten und trotzdem ein Quine bilden können

Die Punktzahl wird anhand der Anzahl der Zeichen im ersten Programm gemessen.

Beispiel (keine echten Programme):

Wenn 123456789abcdefund 13579bdfbeide Quines sind, ist die Punktzahl 15. Wenn 159dauch Quine ist, ist die Endpunktzahl 12.

Dies ist Code-Golf, also gewinnt die niedrigste Punktzahl.

Jwosty
quelle
2
@ hosch250 Das ursprüngliche Programm wäre kein Quine-Programm, da es diese Leerzeichen nicht drucken würde. Gleiches gilt für unnötige Kommentare.
Jwosty
1
Ja, ich habe noch nie ein Quine programmiert und weiß nicht, wie ich es machen soll, ohne den Quellcode in C ++ zu lesen. Ich habe sie aber schon in C ++ gesehen!
Hosch250
1
Sie geben an: "-20%, wenn Sie auch alle 4 Zeichen entfernen und trotzdem ein Quine bilden können". Aber technisch ist dies nicht das, was in Ihrem Beispiel passiert. Sie meinen, Sie können es ein zweites Mal tun?
mmumboss
4
Sind die Boni additiv oder multiplikativ? Das heißt, wenn mein Programm 10 Zeichen lang ist und sich sowohl für den -15% -Bonus als auch für den -20% -Bonus qualifiziert, beträgt seine Punktzahl 10 * (1 - 0,15 - 0,2) = 6,5 oder 10 * (1 - 0,15) *. (1 - 0,2) = 6,8 & le; Letzteres habe ich angenommen, aber eine explizite Klarstellung wäre schön.
Ilmari Karonen
1
Wäre das nicht eine Mandoline, keine Guillotine? Guillotinen machen einen sauberen, meist tödlichen Schnitt und der Kopf rollt weg. Mandolinen machen mit den vielen gleichmäßig verteilten Scheiben. :)
Jonathan Van Matre

Antworten:

24

PHP, 4 Zeichen - 15% - 20% = 2,72 2,6 Punkte

ABCD

Ja, PHP ist eine Turing-vollständige Sprache. Niemand hat gesagt , ich habe zu verwenden , eine ihrer eigentlichen Programmierfunktionen. ;-)

Bearbeiten: Die Punktzahl wurde geändert, um zu verdeutlichen, dass Boni additiv und nicht multiplikativ sind.

Ilmari Karonen
quelle
Dies funktioniert möglicherweise in ASP.
Ismael Miguel
2
@ n̴̖̋h̴̖̋ã̷͉h̷̭̿d̷̰̀ĥ̷̳ Ich gebe auf. : P
Jwosty
17
Tatsächlich wird davon abgeraten, die eigentlichen Programmierfunktionen von PHP zu verwenden.
Rhymoid
1
Dies ist keine richtige Quine. Immer noch eine gute Antwort
MilkyWay90
14

TI BASIC 4 - 35% = 2,6

Ich verstehe sie vielleicht falsch, aber ich glaube, ich bin auch für die Boni -15% und -20% berechtigt, was bedeutet, dass ich die niedrigstmögliche Punktzahl habe.

Ich kann das Programm schreiben:

123i

was wird ausgegeben, 123iwo ich natürlich die imaginäre Einheit ist. Wenn Sie das 1. und 3. Zeichen entfernen, bleibt nur 2idie Ausgabe2i

mmumboss
quelle
Nicht ganz ... '12i' gibt '12i' und '2' gibt '2' für eine Mindestpunktzahl von 1,95 aus.
Intx13
Tatsächlich erhält '2i' den Wert 1,3, und wenn das leere Programm als Quine betrachtet wird, erhält 'i' den Wert 0,65.
Intx13
4
@ intx13: "Die Antworten müssen mindestens 4 Zeichen lang sein. "
Ilmari Karonen
Ah, das habe ich verpasst!
Intx13
Schlagen
13

Python - 95

Große Herausforderung. Ich fand das ziemlich clever und eigentlich eine legitime Lösung!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)
qwr
quelle
1
Nett! Beachten Sie, dass dies technisch nicht so funktioniert, wie es ist, da Sie am Ende die neue Zeile löschen, wenn Sie das alternative Quine erstellen. erfordert ein bisschen Tweaking IOW
Claudiu
3
@Claudiu Nun, ich denke, es hängt davon ab, ob OP Newline als Charakter ansieht. In diesem Fall können Sie zwischen den einzelnen Zeilen einfach eine neue Zeile einfügen. 96 Zeichen
qwr
Natürlich ist eine Newline ein Charakter ...
mbomb007
11

Golfscript, 5 Punkte

{hai}

ist eine Funktion, die beim Ausführen die (nicht vorhandene) Funktion ausführt hai. Es wird jedoch nicht ausgeführt, sondern am Ende des Programms gedruckt - einschließlich der äußeren Klammern. Das Entfernen der anderen Zeichen führt zu folgenden Ergebnissen:

{a}

Lahm, ich weiß :-)

John Dvorak
quelle
Ich glaube, dass Sie sich auch für beide Boni qualifizieren: Ihr Programm liest keinen eigenen Quellcode und {}ist auch ein Quine.
Ilmari Karonen
@IlmariKaronen Es ist schwer zu sagen, was als Lesen des eigenen Quellcodes gilt. Zählen nicht bewertende Funktionen? Zählt die Bewertung von Zeichenfolgen? Was den anderen Bonus angeht - vielleicht ist er nur schlecht formuliert, aber ich lese "Entferne alle vier Zeichen" als "Behalte jedes fünfte Zeichen", was mich mit nur einer Klammer belassen würde (obwohl {ab0}qualifiziert, wenn 0es die sein kann, die behalten wird)
John Dvorak
Es ist in der Tat falsch formuliert, aber das Beispiel deutet darauf hin, dass es "jedes vierte Zeichen behalten" bedeutet. Wie Sie bemerken, {ab0}qualifiziert sich sowieso .
Ilmari Karonen
Es scheint {hi}auch zu funktionieren, ist kürzer (4 Zeichen) und qualifiziert sich auch für alle Boni. (Scheint, das Skript wird aus irgendeinem Grund {iausgewertet {i...)
Claudiu
8

HQ9 + - 4 * 7,5 * 0,8 = 24 Punkte

Q+++

Immer noch ein Quin mit jedem zweiten Charakter:

Q+

... und jeder fünfte:

Q

Entschuldigung, ich konnte nicht widerstehen. :)

Smallhacker
quelle
7

HTML / Markdown, 4 * 7,5 = 30

HHHH

Ich gebe zu, das ist lahm, aber es verstößt nicht wirklich gegen eine Regel in der Frage. Abgesehen davon, dass HTML / Markdown möglicherweise nicht als echte Programmiersprache angesehen wird.

n̴̖̋h̴̖̋ã̷͉h̷̭̿d̷̰̀ĥ̷̳
quelle
Ich nehme an, ich habe nicht angegeben, dass Programme, die nicht kleiner aufgeteilt werden können, ungültig sind. Überarbeitende Herausforderung ...
Jwosty
@Jwosty: dann würde "HHHH" in HTML gewinnen. Hinweis 5555funktioniert nicht, weil es kein alphabetisches Zeichen hat
Claudiu
Sie benötigen ein alphabetisches Zeichen.
Qwr
@qwr: Vergaß das beim Betrachten von GolfScript. Entfernt.
n̴̖̋h̷͉̃a̷̭̿h̷̭̿d̷̰̀ĥ̷̳
Hmm ... ich nehme an, dass dies gültig ist: P
Jwosty
5

! / bin / sh

Ich mochte die qwr-Lösung so sehr, dass ich schamlos einen Port für die POSIX-Shell erstellt habe. Bitte speichern Sie es nicht in einem Dateinamen, der Leerzeichen enthält.

: '#';cat $0

#c a t   $ 0

Beginnen Sie mit dem Entfernen bei Zeichen 1 und zählen Sie die Zeilenumbrüche als Zeichen. Die zweite Quine ist natürlich:

 #;a 0
cat $0

Bitte stimme der Antwort von qwr zu!

joeytwiddle
quelle
3

Bash, 23

Newline ist ein Charakter!

Einige unordentliche Kommentare funktionieren so, dass, wenn jedes andere Zeichen ab dem ersten entfernt wird, der Kommentar zum Code und der Code zum Kommentar wird:

#cRaRtR R$R0R R#
cat $0

Nachdem alle anderen Zeichen ( einschließlich der neuen Zeile ) entfernt wurden:

cat $0 #ct$

quelle
Es ist jedoch kein Quine, wenn es seine eigene Quelle liest.
Daniero
@daniero „-15% , wenn die Lösung nicht seine Quelle in irgendeiner Form von überall liest“ bedeutet , dass Sie sich die Programmquelle lesen erlaubt (aber bekommt man nicht den Bonus)
@ Daniero Oh, ich schaute auf Wikipedia Ich nehme an, es ist Betrug ... aber es ist Code-Golf
Ich stimme Katzen immer zu!
Antonio Ragagnin
2

Brainf ** k, 37 - 15% = 31,45

Missbrauch des tragbaren Brainfuck-Interpreters

+A[B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]

Beginnen Sie mit dem Entfernen aus dem zweiten Zeichen.

Timtech
quelle
Wenn ich dies ausführe, erhalte ich B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]als Ausgabe, so dass einige Zeichen fehlen.
Sylwester
Ist es Brainfuck oder ein bestimmter Dialekt von Brainfuck, der nur für einen Dolmetscher funktioniert?
user253751
@immibis Es ist normal (diese Großbuchstaben können Leerzeichen oder Symbole oder irgendetwas sein). Sie müssen jedoch den tragbaren Interpreter verwenden, der aus der Antwort hervorgeht.
Timtech
1
Der erste Teil geht nach links, bis das ÿ gefunden wird und der verknüpfte Interpreter den Code 5000 Bytes vor dem Start des Datenbands speichert. Das ist kaum tragbares Brainfuck.
user253751
0

HQ9 + T, - 4 * 0,8 = 3,2 Punkte

qqqq

Es ist ein gültiges Quine (ish) und jedes zweite und fünfte Zeichen ein Quine. Ich konnte nicht widerstehen. . . .

Gavriel Feria
quelle