Wir hatten viele Herausforderungen mit Quines , aber viele der Quine-Formate sind ähnlich. Lassen Sie uns einige Unterschiede in unseren Quines erzeugen.
Ihre Aufgabe ist es, eine Auswahl von Programmen in derselben Sprache (mindestens 2) zu erstellen, die alle ihren eigenen Quellcode ausgeben. Keines dieser Programme kann jedoch Zeichen gemeinsam haben.
Zum Beispiel, wenn Sie ein Programm erstellen mit:
printf+qw(printf+qw(%s)x2)x2
Ihr nächstes Programm kann Folgendes nicht enthalten:
%()+2finpqrstwx
und so weiter.
Regeln
- Sie können Unicode-Zeichen verwenden, müssen jedoch immer noch in Bytes punkten.
- Alle Programme müssen der Community-Definition eines geeigneten Quines entsprechen . Dies bedeutet, dass der leere String unter anderem nicht als gültiger Quine zählt.
- Standardlücken sind verboten.
- Funktionen oder vollständige Programme sind zulässig, solange sie der obigen Definition entsprechen.
- Symbolunabhängige Sprachen (einschließlich Lenguage und Headsecks) sind nicht zulässig.
- Die meisten Programme gewinnen mit dem kürzesten Gesamtcode als Unentschieden.
code-challenge
restricted-source
quine
Dom Hastings
quelle
quelle
Antworten:
V ,
3, 5 Quines, 46 BytesProbieren Sie es online!
Hexdump:
Erläuterung:
Probieren Sie es online!
Hexdump:
Erläuterung:
Probieren Sie es online!
Hexdump:
Erläuterung:
Hier fangen sie an, flippig zu werden ...
Probieren Sie es online!
Hexdump:
Erläuterung:
Probieren Sie es online!
Hexdump:
Erläuterung:
Diese Antwort steckt voller schwarzer Magie. Die Quines 1 und 4 sind nicht neu, aber die anderen 3 wurden noch nie gefunden, so dass mehr als die Hälfte dieser Quines erst heute entdeckt wurde.
quelle
normie :p
"REEEEEE--
Jelly ,
2 3 45 quines,14 18 81 65 59 56 326 265 247 229216 Bytes3 Bytes
Probieren Sie es online!
Standard Quine.
”Ṙ
ist das Ein-Zeichen-Literal fürṘ
.Ṙ
druckt die String-Darstellung davon, dann wird der StringṘ
implizit gedruckt.4 Bytes
Probieren Sie es online!
⁾
Beginnt ein zweistelliges Zeichenkettenliteral undḤ
verdoppelt das Argument. Wird mit einer ZeichenfolgeeingabeḤ
jedem Zeichen zugeordnet. Wenn man alsoḤ
auf den String einwirkt,⁾Ḥ
erhält⁾⁾ḤḤ
man den Quellcode.11 Bytes
Probieren Sie es online!
Auf der rechten Seite
“ȮṾṖƊ}
steht das String-Literal fürȮṾṖƊ}
. Das Zeichen zum Schließen der Zeichenfolge wird bei EOF stillschweigend hinzugefügt.Auf der linken Seite des Stringliteral,
Ɗ
WrapsȮṾṖ
in einen einzigen Monade und}
verwandelt es in eine Dyade , die sie verwendet stimmt Argument, das Stringliteral.Ȯ
druckt die Zeichenfolge (ȮṾṖƊ}
),Ṿ
erstellt eine Zeichenfolgendarstellung der Zeichenfolge (“ȮṾṖƊ}”
) undṖ
entfernt das”
Zeichen. Die Zeichenfolge“ȮṾṖƊ}
wird nach der Monade belassen und implizit gedruckt.38 4936 BytesProbieren Sie es online!
Zum ersten Mal habe ich einen Platz beim Jelly-Golfen benutzt.
Die Liste der Zahlen am Anfang enthält
ord
die restlichen Zeichen des Codes. Nachdem:270 198 180162 BytesProbieren Sie es online!
Verwendet 250er-Zahlen und -Indizes für die Jelly-Codepage. 72 Bytes durch Änderung des Algorithmus eingespart. Wurde mit Seite jede Zahl zu indizieren in Jelly Code aber jetzt ist Umwandlung der Ganzzahl zurück zur Basis 250 dann die Indizierung in Jelly Codepage, im Grunde die Anzahl der Literale Halbiert ich in der ersten Zeile muß. Dies reduziert auch die Anzahl der benötigten eindeutigen Zeichen, aber mir fällt keine Möglichkeit mehr ein, Quines zu erstellen.
Ich habe verbraucht,
⁾“”
welche ZeichenfolgenliteraleỌ
undØJ
welche Zeichenfolgen aus Zahlen erstellen. Ich kann mir keine anderen Möglichkeiten für die Herstellung von Saiten vorstellen. Ich habe immer noch die Ziffer9
und sie ist‘’
verfügbar. Wenn es also eine andere Möglichkeit gibt, Zeichenfolgen aus Zahlen zu erstellen, ist es möglicherweise möglich, eine weitere Quine zu erstellen.quelle
Haskell , 3 Quines, 1119 Bytes
Quine 1, 51 Bytes
Eine anonyme
IO
Aktion, die direkt auf stdout gedruckt wird.Probieren Sie es online!
Quine 2, 265 Bytes
Die Funktion
f
akzeptiert ein Dummy-Argument und gibt eine Zeichenfolge zurück.Probieren Sie es online!
Quine 3, 803 Bytes
Alles nach dem
LANGUAGE
Pragma ist eine beliebige Funktion, die ein Dummy-Argument verwendet und einen String zurückgibt.Probieren Sie es online!
Zeichen
Quine 1:
Quine 2:
Quine 3:
Wie es funktioniert
Quine 1
Quine 1 ist eine modifizierte Version meines Golfs. Sie ist eine quine Antwort (mit Verbesserungen von H.PWiz):
main=
wurde entfernt.<>
und$
wurden durch ihre Beinahe-Synonymemappend
und ersetztid
.Dies macht die lebenswichtigen Charaktere
=<>
und den hilfreichen Operator$
für die anderen Quines frei.Quine 2
Quine 2 verwendet ähnliche Methoden wie das Programm 2 meiner kürzlich erschienenen Antwort " Gegenseitig ausschließende Quines" , ist jedoch angepasst, um sich selbst direkt zu quinen und insbesondere die Verwendung von Zeichenliteralen zu vermeiden, die für Quine 3 benötigt werden. Beides wird mit Hilfe der
show
Funktion erreicht. was zum Glück noch keinen seiner Charaktere verwendet hat.Diese Quine verwendet Tabulatoren anstelle von Leerzeichen, aber ich habe Leerzeichen zur besseren Lesbarkeit verwendet.
g
ist die Quine-Daten als eine Liste von ganzen Zahlen am Ende des Codes. Jede Zahl steht für ein Zeichen aus dem Rest des Codes.9
, so dass die Registerkarte ist0
. Dadurch wird die Codierung etwas kürzer, da die Kleinbuchstaben für die Funktions- und Variablennamen zweistellig sind.b c=[[[show 9!!0,show 1!!0..]!!6..]!!c]
ist eine Funktion, um eine Zahl in ein Zeichen umzuwandeln (eigentlich eine Zeichenkette aus einem Zeichen).[[show 9!!0,show 1!!0..]!!6..]
ist ein Zeichenbereich, der mit einem Tabulatorzeichen beginnt, das mit indiziert wird!!c
.[show 9!!0,show 1!!0..]
, wobei mit den Ziffern begonnen wird'9'
und'1'
in Schritten von 8 nach unten gesprungen wird.show
Zeichenfolge der entsprechenden Ziffer erzeugt.f c=[b=<<g]!!0++show g
ist die Hauptfunktion.c
ist ein Scheinargument.b=<<g
verwendet=<<
, um jede Zahl ing
ihr Zeichen umzuwandeln . (Die Verwendung von=<<
anstelle von z. B.map
ist, warumb
das zurückgegebene Zeichen in eine Liste eingeschlossen werden muss.)show g
Gibt die Zeichenfolgendarstellung derg
Liste von an und++
verkettet die Zeichenfolgen.=<<
eine niedrigere Priorität als hat++
, ist eine gewisse Belichtungsreihe erforderlich. Indiziert eine Liste mit einem Element, um die Verwendung von()
(für Quine 3 reserviert) zu vermeiden[...]!!0
.Quine 3
Aufgrund des Designs der anderen Quines hat Quine 3 weiterhin Zugriff auf Klammern, Lambda-Ausdrücke, Zeichenliterale und den String / List-Konstruktor
:
. Dies reicht aus, um eine Funktion zu erstellen, die den Code der Quine einer Zeichenfolge voranstellt .Leider wurden alle Vokale in Kleinbuchstaben (außer manchmal
y
) verwendet, sodass keine nützlichen alphanumerischen Funktionen vorhanden waren. Auch[]""
sind verschwunden. Diese Blätter keine normale Art und Weise eine leere Zeichenfolge zu bauen zu beginnen vorgibt , um den Code zu.Fast alle Großbuchstaben sind jedoch noch verfügbar, sodass ein
LANGUAGE
Pragma für eine Spracherweiterung möglich ist. Auch hier istCPP
(enable C preprocessor) die einzige Spracherweiterung, die nur mit Großbuchstaben benannt wird. CPP-Makros haben häufig Namen in Großbuchstaben.Um den wesentlichen leeren String zu erhalten, aktiviert das quine
CPP
, verwendet das__TIME__
Makro, um eine String-Konstante des Formulars zu erhalten"??:??:??"
(die bequemerweise garantiert immer die gleiche Länge hat) und Musterübereinstimmungen darauf.Nach dem Sprach-Pragma besteht das Quine aus einem Lambda-Ausdruck, der seine Parameter an diese vier Argumente bindet (wobei ein letzter Dummy-Parameter
_
für die spätere Anwendung übrig bleibt ):q
gebunden an'\''
, ein einfaches Anführungszeichen gebend;_:_:_:_:_:_:_:_:z
gebunden an__TIME__
, auch bekannt als eine Zeichenkette"??:??:??"
, wodurchz
eine leere Zeichenkette entsteht;y
gebunden an(\(?)v k x->v$k?x)
einen Lambda-Kombinator, der verwendet wird, um das Konvertieren der Quine-Daten von der links zugeordneten ("foldl") in die rechts zugeordnete ("foldr") Form zu unterstützen;(#)
gebunden\(&)(%)v->v&'{'&'-'&...
, die Daten quine selbst.Die Quine-Daten werden in Form einer Church-Codierung angegeben, einem Lambda-Ausdruck mit Parametern
(&)(%)v
.(&)
,(%)
undv
kann diese Codierung entweder verwendet werden , um den Kerncode des quine zu bauen oder die Datendarstellung quine selbst umzubauen.&
und%
assoziative Operatoren im Lambda belassen. Somit werden die Zeichenparameter mit dem Anfangsbuchstabenv
von links beginnend kombiniert .k
gibt es eine entsprechende&'k'
.k
ist'
oder\
, die innerhalb Zeichenliterale werden müssen entkommen, ist die Codierung statt%'\k'
.Da die Datencodierung linksassoziativ ist, Zeichenfolgen jedoch rechtsassoziativ aufgebaut sind, wird der Kombinator
y = (\(?)v k x->v$k?x)
eingeführt, um die Nichtübereinstimmung zu überbrücken.y(...)
soll geeignete Funktionen für die Verwendung als Quine-Daten(&)
und(%)
Operatoren erstellen .v
ist eine Funktion von Zeichenkette zu Zeichenkette (die beabsichtigtenv
Quinedaten sind Beispiele).k
ist ein Zeichen,x
eine Zeichenfolge und?
ein Operator, der sie zu einer neuen Zeichenfolge kombiniert. (Für den Kerncode(?)=(:)
. Um die quine-Datendarstellung tatsächlich zu rekonstruieren, ist es komplizierter.)y(?)v k = \x->v$k?x
ist eine andere Funktion von Zeichenketten zu Zeichenketten.Als Beispiel dafür, wie dies die Assoziativität ändert, wenn
(&)=y(:)
:Im Allgemeinen gilt: Wann
(#)
ist die Quine-Datenfunktion und wannf1,f2
sind Funktionen, die Zeichen mit Zeichenfolgen kombinieren:Anwenden der Quine-Datenfunktion mit
(&)=y(f1)
und(%)=y(f2)
, und dies verwendet die vorgeschriebenenf1
undf2
, um die Zeichen der Quine-Daten mit zu kombinierenx
, und übergibt dann den resultierenden String anv
.Der Hauptteil des Lambda-Ausdrucks fügt dies zusammen:
'&':q:k:q:x
Ein Zeichenk
wird&'k'
der Zeichenfolge vorangestelltx
, während die ursprünglichen Quine-Datenformen'%':q:'\\':k:q:x
vorangestellt%'\k'
werden.y(\k x->'&':q:k:q:x)#y(\k x->'%':q:'\\':k:q:x
sind die richtigen Parameter für die Neuerstellung der Quine-Datendarstellung vorhanden, die dem finalz
(der leeren Zeichenfolge) vorangestellt und dann an die folgende Funktion übergeben werden.y(:)#y(:)
sind die richtigen Parameter, um den Kerncode des Quines ohne weitere Modifikation einem String voran zu stellen.\x->x
bekommt nichts mit dem konstruierten quine zu tun, die zurückgegeben wird.quelle
Perl 6 , 3 Quines, 274 Bytes
Quine 1, 52 Bytes
Probieren Sie es online!
Quine 2, 102 Bytes
Probieren Sie es online!
Quine 3, 120 Bytes
Probieren Sie es online!
Überprüfung verschiedener Bytesätze
Es war viel zu manövrieren, diese dritte Quine zu bekommen. 6 Perl verfügt über 4 Methoden der Ausgabe (das ich kenne),
say
,put
,print
undprintf
. Beidesay
undput
Ausgabe von Zeilenumbrüchen, da ich nicht beide verwenden kann.put
,print
,printf
Alle enthaltenp
undt
. Wir können dies teilweise umgehen, indem wirEVAL
Großbuchstaben verwendenPRINT
. Von dort aus glaube ich nicht, dass es möglich ist, 4 Quines zu bekommen ... (obwohl vielleicht so etwas klappenshell "echo 'quine'"
könnte)Wir können dann Abstandsprobleme umgehen, indem wir verschiedene Arten von Leerzeichen verwenden, um Operatoren, Leerzeichen, Tabulatoren und Zeilenumbrüche zu trennen.
Erklärungen:
Quine 1:
Quine 2:
Dies ist ein Quine im Format
printf |(q[printf q[%s]]xx 2)
, dh es formatiert eine Kopie des Strings in sich. Wir können es jedoch nicht verwenden,s
da es in der vorherigen Quine verwendet wurdesay
. Also benutzen wir den String OR-Operator (~|
) für@
und!3
, um den%s
Teil zu produzieren , aber wir können das nicht sowohl für den Format-String als auch für den einzufügenden String tun, also haben wir esZ~
mit dem Extra-String und einem leeren String zu tun. obwohl wir dann nicht verwenden können,
, um die beiden zu trennen, müssen wir dannXx qw[1 0]
mit 1 und 0 multiplizieren.Quine 3:
Dies ist ein EVAL-Quine, der sein Bestes tut, um Konflikte mit den anderen Quines zu vermeiden. Dies beinhaltet eine Menge von
EVAL
s sowie eine ganze Reihe vonlc
unduc
zwischen Fällen zu konvertieren.quelle
MathGolf ,
4 56 Quines, 193.535 Bytes9 Bytes
Probieren Sie es online!
45 Bytes
Probieren Sie es online!
49 Bytes
Probieren Sie es online!
99 Bytes
Probieren Sie es online!
4488 Bytes
Probieren Sie es online!
188.845 Bytes
Ich kann nicht wirklich auf dieses Programm verlinken, daher hier ein Perl 6-Programm, das das eigentliche Quine generiert
Überprüfung der Unterscheidbarkeit
Ich kann definitiv eine weitere Quine daraus pressen, obwohl ich glaube, dass ich keine Möglichkeit mehr habe, Strings direkt auf den Stack zu schieben, sodass ich auf fremde Methoden zurückgreifen muss. Noch seltsamere Methoden kommen auf mich zu, als ich mich um eine sechste Quine bemühe. In einigen Fällen könnten die Quines kürzer sein, aber ich reduziere die in Vorbereitung verwendeten Bytes.Okay, ich könnte technisch in der Lage sein, noch eine Quine zu machen, da ich noch ein paar Operatoren habe (Push-String, Inkrement-String, Duplizieren, Mappen, Poppen), ist es die Schleife, die uns einschränkt. Dies
{}
sind die einzigen Operatoren, die einen Codeblock beliebiger Länge angeben können, und ich brauche sie wirklich im sechsten Quine. Ich könnte einige der anderen Codeblöcke verwenden, aber sie sind begrenzt, und ich bezweifle, dass die Schleifenabschnitte so kurz sein werden, da uns die einfachen Operatoren ausgehen.Okay, einige verspätete Erklärungen:
Alle Quines haben fast die gleiche Struktur:
Quine 1:
Dies ist im Grunde das Gleiche wie das, was ich in der normalen Quine-Frage gepostet habe.
Quine 2
Quine 3:
Quine 4:
Quine 5:
Quine 6:
Der Grund, warum dieses Quine so viel länger ist als die anderen, ist, dass beim Inkrementieren von Strings Unicode-Darstellungen verwendet werden, was für einige der Zeichen im Code wirklich schade ist, besonders wenn wir versuchen, das Zeichen
⌂
im Code zu erstellen, das den Code aufbläht um über 8000 Zeichen, die dann den Darstellungsteil um einen sehr großen Betrag aufblasen.Dieses letzte Quine würde erheblich reduziert, wenn MathGolf konsistent wäre, ob Zeichenfolgen die native Codepage verwenden oder nicht.
quelle
chr/ord
eine davon verwendete. Ich sollte beide veranlassen, stattdessen die Codepage zu verwenden.Python 2, 2 Quines,
434353349446 BytesDies war meistens nur, um zu sehen, ob ich es in Python schaffen konnte.
30 Bytes (einschließlich einer nachgestellten Newline):
und 416 Bytes ohne nachfolgende Newline:
(Ich habe dank Lynn 81 Bytes Golf gespielt, aber eine Ladung hinzugefügt, weil ich mich um die Newline gekümmert habe.)
Erläuterung
Das erste ist nur das Standard- Short-Python-Quine , wurde jedoch so modifiziert, dass es nicht verwendet werden kann
_
. Da dies Python 2 ist, wird auch(
oder nicht verwendet)
.Der zweite dachte nach. Die lange Zeichenfolge wird mit dem
hex
Codec codiert (wodurch sichergestellt wird, dass sie nur0
-9
unda
- enthältf
) und als decodiertDiese nutzt quine Tricks seinen eigenen Quellcode zu erhalten, dann codiert sie mit
hex_codec
, und dann druckt er umgeben vonexec"".decode("hex")
, mitsys.stdout.write
Druck ein Newline zu vermeiden. Wenn Sie diesen Code ausführen, wird das zweite Quine ausgegeben. So habe ich es generiert.Ich vermute, dass mehr als zwei in Python unmöglich sind, obwohl ich es gerne sehen würde, wenn ich mich irre!
Wenn es Ihnen nichts ausmacht, Quines auszuwerten
Ørjan Johansen schlug für die vorkodierte zweite Quine Folgendes vor
Dies würde 30 + 248 = 278 Bytes für die folgende Ausgabe ergeben:
Die Verwendung von
exec
auf diese Weise ist kein Schummeln gemäß den PPCG- Regeln, aber es fühlt sich für mich etwas schummelhaft an (elegant und clever, aber immer noch schummelhaft), weil einige Zeichen sowohl als Code als auch als Daten verwendet werden. (Obwohl meine Version verwendet wirdexec
, sind der Code und die Daten getrennt.) Also werde ich meine Punktzahl bei 446 halten.quelle
"hex"
funktioniert stattdessen"hex_codec"
, was dir ein paar bytes ersparen sollte!print '<tab>',
fügt am Ende kein Leerzeichen hinzu. HiermitJapt ,
23 Quines,106172 BytesDie erste ist eine ziemlich ausführliche Version meiner N char quine Antwort .
Probieren Sie es hier aus .
Die zweite Quine ist die bessere Quine von ETHProduction , eine gute Standard-Quine für Japt.
Probieren Sie es hier aus .
Der dritte verwendet
``
und Char-Code-XORing, um die Daten zu speichern.Probieren Sie es hier aus .
Da
()'
es noch verfügbar ist, könnte es möglich sein, noch eine Quine herauszudrücken.quelle
"'[+U+']+R+(Umd)¬"q mc
Sie die erste Zeile für schnelle Aktualisierungen, falls dies hilfreich ist.Gol> <> ,
23 Quines,17 28 2726 Bytes6 Bytes
Probieren Sie es online!
11 109 BytesProbieren Sie es online!
11 Bytes
Probieren Sie es online!
Gol> <> hat drei Möglichkeiten, Zeichen zu drucken:
o
Geben Sie einen Wert ein und drucken Sie ihn als ZeichenH
Pop alles, drucke als Zeichen und halte anS"..."
Gibt ein String-Literal aus, ohne den Stack zu beeinflussenDa ich jedoch keine Möglichkeit gefunden habe, einen Quine mit
S"..."
der einzigen Ausgabemethode zu schreiben , habe ich mir die beiden oben genannten Methoden ausgedacht und die beiden Arten von String-Literalen verwendet.Die dritte (von Jo King) verwendet den
p
Befehl, um das"
InS"
on the Fly zu erstellen , das am Ende alles außer der Null ausgibt. DannEh
druckt die Null und beendet.Nachdem wir nun alle Ausgabebefehle UND den
p
Befehl aufgebraucht haben , glaube ich, dass es unmöglich ist, ein weiteres Quine zu erstellen (es sei denn, jemand kommt mit demS"
Quine ohnep
).quelle
S"..."
?Ruby , 2 Quines, 27 + 44 = 71 Bytes
Probieren Sie es online!
Probieren Sie es online!
Ich bin hier hauptsächlich durch Ausgabemethoden eingeschränkt. Es gibt einige Möglichkeiten, Zeichenfolgen zu manipulieren, aber abgesehen von
$><<
all den verwendbaren Ausgabemethoden scheint es zu viele Überschneidungen zu geben. Ich denke, es könnte einen Ausweg geben,eval
aber es ist schwierig, mehrere Zeichenfolgenmanipulationen unterschiedlicher Art zu verschachteln.quelle
Javascript ES6, 2 Quines, 43 + 22 = 65 Bytes
Quine 1:
Quine 2:
quelle
g=z=>"g="+g
also eine gültige JS-Quine?> <> , 2 Quines, 8 + 16 = 24 Bytes
8 Bytes
Probieren Sie es online!
Aus dieser Antwort entnommen .
16 Bytes
Probieren Sie es online!
Dies basiert auf der
'r3d*>o<
quine, mit der Ausnahmeo
und<
nicht verwendet werden kann, so ersetzt I<
mit|
und dynamisch erstellto
(111 = 8 * 13 + 7) , und es dort platziert , wo die 2.>
ist.2 Quines ist die Grenze
Leider sind wir durch die Anzahl der Ausgabebefehle begrenzt.
n
ist nicht sinnvoll, da es nur Zahlen ausgibt und dahero
in jedem Quine ausgeführt werden muss. Die einzige Möglichkeit, dynamisch zu erstellen,o
ist mitp
. Ein Quine kann also verwendeto
werden und ein anderer kann es mit erstellenp
, aber es kann kein drittes Quine geben.Es könnte möglich sein, dass eine dritte Quine den Quellcode auf dem Stack belässt, wenn dies zählt.
quelle
Java 10, 2 Quines,
1448 -1248 Byte13501122 BytesProbieren Sie es online aus.
Gleichwertig:
Erläuterung:
126 Bytes
System.console()
wird zurückgegeben,null
wenn keine angegeben ist, daher gibt TIONullPointerException
in diesem Fall a zurück .Um zu beweisen , es ist ein Arbeits quine, ersetzen
System.console()
mitSystem.out
: Versuchen Sie es online.Erläuterung:
Allgemeine Erklärung:
In Java läuft eine Quine normalerweise so ab:
String s
enthält den unformatierten Quellcode.%s
wird verwendet, um diesen String in sich selbst mit dem einzugebens.format(...)
.%c
,%1$c
Und die34
werden verwendet , um die doppelten Anführungszeichen zu formatieren.s.format(s,34,s)
setzt alles zusammen.In diesem Fall wäre die kürzeste Lambda-Funktion in Java 10 die folgende ( 82 Byte ):
Probieren Sie es online aus.
Da die einzige Möglichkeit, zwei Quines in Java zu haben, darin besteht, die Unicode-Version mit zu verwenden
\uHEXA
, die beim Kompilieren in Zeichen umgewandelt wird, kann ich die Zeichen0123456789ABCDEF\u
in der Nicht-Unicode-Version nicht verwenden. Daher wird die kleinere Nicht-Unicode-VersionSystem.console()
anstelle vonreturn
oderSystem.out
(beide mit einem 'u')'}'-'['
und zweimal und%c
anstelle von34
und verwendet%1$c
.Einige Dinge, die Sie über die Unicode-Version beachten sollten:
%04X
anstelle von%04x
(für Hexadezimal-Großbuchstaben anstelle von Kleinbuchstaben).92
,%c
und%3$c
die Schrägstriche zu formatieren.\U
anstelle von Kleinbuchstaben\u
ist anscheinend nicht zulässig, da ich sonst nurreturn
die kürzere Nicht-Unicode-Version verwendet hätte.quelle