Schreiben Sie ein Programm, das so kurz wie möglich ist (gemessen an der Anzahl der Bytes), keine Eingaben vornimmt, keine Kommentare enthält und eine Zeichenfolge / -folge ausgibt, sodass die verkettete Programm- + Ausgabe genau 95 Zeichen lang ist und jedes druckbare ASCII-Zeichen enthält genau einmal , dh Programm + Ausgabe ist eine Permutation der 95 Zeichen mit den ASCII-Codes 32-126:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Im Falle eines Unentschieden ist der Gewinner der Eintrag, dessen (95 Zeichen) verkettetes Programm + Ausgabe der obigen Zeichenfolge am nächsten kommt, gemessen an der Levenshtein-Bearbeitungsentfernung (dh der Anzahl der Einzelzeichen-Löschungen, -Einfügungen oder Ersetzungen erforderlich, um es in ASCII-Reihenfolge zu bringen).
echo $0
disqualifiziert wird.Antworten:
GolfScript, 14 Zeichen
Ausgabe :
quelle
),
- Wow. Ich liebe das.Perl, 89 Zeichen
Dies ist das Beste, was ich bisher konnte:
Für diejenigen, die mit Perl nicht vertraut sind, können die beiden Argumente für die
print
Anweisung als~(-($=)) . (73 * 2)
und dargestellt werdentr///
.Das Programm gibt 6 Zeichen aus:
Leider gibt es in Perl jedes einzelne Iterationskonstruktion dass ich mir vorstellen kann (
for
,while
,until
,map
,grep
) Aktien mindestens ein Zeichen mitprint
. Wenn Zeilenumbrüche in der Ausgabe erscheinen dürfen, könnte ich mit Perl 5.010 eine Lösung mit 87 Zeichen finden:quelle
$=
ist die Anzahl der horizontalen Linien im aktuellen Ausgabegerät. Standardmäßig ist 60~-$=
die bitweise Inversion des Zweierkomplementnegativs von 60, was zufällig ist59
.73*2
ist 146..
und,
mach was du von ihnen erwartest.y[]{}
ist eine andere Art zu sagentr///
, welches der transliterate Operator ist. Es braucht$_
und tut nichts, weil Sie ihm keine zu ersetzenden Zeichen gegeben haben. Es gibt die Anzahl der ersetzten Zeichen zurück0
. Wir haben also~-$= . 73*2 , y[]{}
=59 . 146 , 0
= "591460".PHP 67 Bytes
Ausgabe:
Es scheint, dass es eine 65-Byte-Lösung geben sollte, die 30 Zeichen anstatt nur 28 ausgibt, aber ich konnte es nicht zum Ausrichten bringen. Die 6 nicht verwendeten Zeichen
OSXouz
wurden stattdessen auf eines der String-Literale geheftet.Bearbeiten: Bei weiterer Überlegung ist es nicht möglich, mehr als 28 Zeichen auf diese Weise zu generieren.
UPPER ^ lower
ergibt immer ein Zeichen zwischen 32 und 63, daher werden für alle 10 Stellen benötigt@[\]_`{|}~
. Vier der verbleibenden 22 werden im Skript selbst verwendet, so dass nur 18 übrig bleiben, die nur mit Buchstaben erhalten werden können. Der Tiebreaker könnte jedoch deutlich verbessert werden.quelle
Rubin, 91 Zeichen
Ausgänge
6273
.%{...}
Trick von Jan Dvorak gestohlenquelle
%{ !"#$&\',-/450:<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcefghijklmnqvwxyz|~};puts([email protected]*98+1)
Ich denke, Sie möchten (für 91 Zeichen), dass das Semikolon als druckbares Trennzeichen (anstelle einer neuen Zeile) und die Buchstaben "ord" aus den geschweiften Klammern entfernt werden.Perl, 61 Zeichen
Ausgabe:
$:
Standardeinstellung ist" \n-"
.x8
wiederholt es achtmal; Das 24-stellige Ergebnis wird dann bitweise mit einem 23-stelligen Barestring (der letzte-
bleibt unverändert) gespeichert . Der zweite Teil besteht aus einer 12-stelligen Q-Zeichenfolge (bitweise) und einer 10-stelligen Barestring (die letzten 2 Zeichen werden verworfen).quelle
Ruby, 95 Zeichen, 6 Änderungen
Ja. Das ist es. Nur ein frei schwebendes String-Literal, das niemals gedruckt wird. Ruby unterstützt Zeichenfolgenliterale (von Perl entlehnt, glaube ich) in der Form eines Prozent-Typ-Begrenzers - der Begrenzer ist ein nicht alphanumerisches Zeichen, und wenn der öffnende Begrenzer eine öffnende Klammer ist (eine von
[({<
) ist, ist der schließende Begrenzer der entsprechende schließende Klammer (geschachtelte Klammern sind erlaubt).Mir ist klar, dass dies eher eine Basisübermittlung ist, aber es sei denn, jemand schafft es tatsächlich, etwas zu drucken, oder es gibt eine Sprache mit einem Freiform-String-Literal mit zwei Zeichen und einem anderen Öffnungs- und Schließbegrenzer. Dies ist das Beste, was es gibt.
quelle
Tcl 96, Abstand bearbeiten 12
quelle
join {!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghklmpqrstuvwxyz|~}
scheint mit 95 Zeichen zu arbeiten? (Vielen Dank für Ihren Eintrag Tut mir leid , das Chamäleon -. Leider habe ich in Eile bearbeitet und sollte anders gemacht Dinge haben.)