Die ASCII-Zeichen vom Dezimalcode 33 bis 126 sind:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Beachten Sie, dass in den meisten Schriftarten 25 dieser Zeichen "Löcher" aufweisen: (eine Gattung, die größer als 0 ist , könnte man sagen)
#$%&04689@ABDOPQRabdegopq
Die anderen 68 "unholed" Zeichen sind:
!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~
Ihre Aufgabe ist es, das kürzestmögliche Programm zu schreiben, indem Sie nur die ungelochten Zeichen verwenden, die jedes der gelochten Zeichen genau einmal in beliebiger Reihenfolge ausgeben.
Da Leerzeichen, Tabulatoren und Zeilenumbrüche (Zeilenvorschub und / oder Wagenrücklauf) Leerzeichen sind, werden sie möglicherweise in Ihrem Programm oder seiner Ausgabe angezeigt. Sie zählen weiterhin zur Anzahl der Zeichen. Andere ASCII-Zeichen dürfen nicht verwendet werden (und schon gar nicht Nicht-ASCII-Zeichen).
Anmerkungen
- Sie müssen nicht alle ungelösten Zeichen oder nur jeweils eines verwenden.
- Die Ausgabe darf keine ungelochten Zeichen enthalten.
- Die Whitespace-Sprache kann verwendet werden.
- Die Ausgabe sollte nach stdout gehen oder kann in eine Datei gehen. Es sollte keine Eingabe geben.
Bonus: Versuchen Sie zum Spaß, alle nicht gelochten Zeichen mit den gelochten Zeichen zu drucken. Ich bin skeptisch, dass dies in einer vorhandenen Sprache möglich ist.
quelle
main
.~
?Antworten:
Pyth ,
4335 ZeichenProbieren Sie es hier aus .
Gibt die Zeichen in der angegebenen Reihenfolge aus, mit der Ausnahme, dass 9 am Anfang steht und durch Zeilenumbrüche getrennt ist.
Die Zeichenfolge enthält alle Zeichen 7, die größer als die erforderlichen sind, mit der Ausnahme, dass 9 zu @ werden würde. Algorithmus dank @Howard.
Erläuterung:
quelle
GolfScript,
3736 ZeichenProbieren Sie den Code hier aus .
Die Zeichenfolge enthält die verbotenen Zeichen, die mit 25 xor'ed sind. Glücklicherweise werden alle Zeichen gültigen Zeichen zugeordnet.
quelle
Brainfuck 119
quelle
--
am Anfang ... Radeln Sie dort auf dem ersten Register zurück zu 254?Bonus - dc, 179 Zeichen
Oh gut, eine weitere Herausforderung mit eingeschränktem Zeichensatz, wo dies
P
zulässig ist.Da
dc
es anscheinend dunkel genug ist zu erklären (seltsam für mich, wenn man die seltsamen Dinge hier betrachtet!), Folgt hier eine Übersicht:Es ist in erster Linie ein RPN-Rechner mit Arithmetik mit willkürlicher Genauigkeit. Aber für diese Herausforderung verwende ich den
P
Befehl, der eine Zahl als eine Reihe von Zeichen in der Basis 256 interpretiert und diese ausgibt. Beispiele:65 P
AusdruckeA
(ASCII-Code 65).16706 P
DruckeAB
(16706 = 65 * 256 + 66).Abgesehen davon ist das einzig interessante Merkmal, dass es alle hexadezimalen Ziffern erkennt,
0-9A-F
auch wenn sie nicht in einer hexadezimalen Zahl enthalten sind. Dezimaleingabe ist der Standard, so dass die Eingabesignal-999
Mittel9 hundreds + 9 tens + 9
undABC
Mittel10 hundreds + 11 tens + 12
sie äquivalent zu machen1122
.Die Fähigkeit, die Ziffern
ABD
in Dezimalzahlen zu verwenden12357
, macht die Unfähigkeit, sie zu verwenden , teilweise wett , und die Wahl der Reihenfolge und Gruppierung erledigt den Rest. (Wenn ich ein paar Zahlen müssenx
,y
,z
und sie sind nicht mit dem erlaubten Ziffern darstellbar, dann versuche ich darstellenx*256*256+y*256+z
statt.)Das Programm kann wahrscheinlich durch Verwendung größerer Gruppen etwas kürzer gemacht werden. Ich habe 3 Bytes pro Nummer nicht überschritten.
quelle
dc bonus.dc
. dc ist eine der ältesten sprachen überhaupt und seit buchstäblich Jahrzehnten ein fester bestandteil von * nix. Es ist jedoch nicht bekannt, wahrscheinlich aufgrund seiner arkanen und nicht sehr lesbaren RPN-Syntax. Toll für ein paar Code-Golf- Herausforderungen ;-)Bash + Coreutils, 56 Bytes
Wenn Sie zum ASCII-Wert der durchbrochenen Zeichen eine 7 addieren, erhalten Sie alle nicht durchbrochenen Zeichen (mit Ausnahme von "9"). Also machen wir diese Transformation nur in umgekehrter Reihenfolge, dann eine ähnliche Transformation (subtrahieren Sie 12 von "E"), um die "9" zu erhalten.
Ausgabe:
quelle
-7
auffallend angezeigtes Interpunktionszeichen enthält , und diese beiden Fakten haben nichts miteinander zu tun.Perl - 49 Bytes
Dies ist so ziemlich eine Perl-Version von Howards Lösung. XOR-Verknüpfung der Zeichenkette mit 25. Die Ausgabe ist eine Datei mit dem Namen
#$%&04689@ABDOPQRabdegopq
. Ich hatte die Idee,symlink
den Dateinamen als Ausgabeformat zu verwenden, da alles andere verboten ist.Hier ist eine andere Perl-Lösung, die ich mir ausgedacht habe. Es kann wahrscheinlich sehr viel verbessert werden und es ist ziemlich lang, also lasse ich es jetzt in einem lesbaren Format.
Dieser gibt viele Dateien aus, der Name jeder Datei ist eines der Zeichen. Ich konnte nicht herausfinden, wie man Zeichenfolgen anfügt, ohne ein verbotenes Zeichen zu verwenden.
for
,while
,map
,say
,print
,eval
,s///e
, Und jeder Variablenname nicht verwendet werden kann (Variablen mit Start@
oder$
in Perl) , die dies erschwert.Hoffentlich sind Dateinamen als Ausgabeformat in Ordnung, da ich mir ziemlich sicher bin, dass bei jeder anderen Art der Ausgabe von Informationen eines der verbotenen Zeichen verwendet wird.
quelle
-p
Flag zu speichern und*_=\(
...)
: Probieren Sie es online aus!-p
Flagge wäre allerdings verboten, da diep
ein Loch hat.MATLAB, 36 Bytes
SO SCHLIESSEN SIE .... Nur 1 Byte mehr als der aktuelle Gewinner (isaacg)! Was bei weiterer Betrachtung bereits das tat, was ich mir vorgenommen hatte. Nun, kein Schaden bei der Neuerfindung des Rades ...
Ich weiß, dass dies eine alte Herausforderung ist, aber ich habe das erst gemerkt, nachdem ich mich dafür interessiert hatte.
Wenn ich MATLAB nur verstehen lassen könnte, dass ich einen String ohne separate
''
... Vorschläge haben möchte , wer?quelle
Brainfuck
303275Brainfuck, die ultimative uneingeschränkte esoterische Sprache (abgesehen von Whitespace);)
quelle
Ctrl
+K
:)`
Das ist ein Backtick. (Wird auch als schwerwiegender Akzent bezeichnet, obwohl " Zitat-Dinger " für mich neu ist: P)JS - 196 - probier es aus
quelle
h=1-1;j=3+3;k='\\x';m=!i+k;c=m[1];f=m[i=2+2];l=k+3;n=k+j;r=k+i;this[f+'v'+c+'l'](c+'l'+f+'rt("\\x23\\x2'+i+k+25+k+2+j+l+h+l+i+l+j+l+2*i+l+3*3+r+h+r+1+r+2+r+i+r+'f\\x5'+h+k+51+k+52+c+n+2+n+i+f+n+7+n+'f\\x7'+h+k+'71")')
- Inlinel
, gekürztm
,i
bei der ersten Verwendung deklariert , ein paar zusätzliche Vars für wiederholte Muster erstellt (Sie könnten dies möglicherweise verbessern, indem Sie die Reihenfolge der ausgegebenen Zeichen anpassen, aber das ist nicht meine Geduld: P).GolfScript, 89 Zeichen
Erstellt einfach ein Array aller ASCII-Zeichen und subtrahiert die nicht "gelochten" Zeichen von ihnen.
quelle
Befunge 98 - 69 Bytes
Macht es in 3 Teilen. Eine, bei der sich die Werte für nicht gelochte Zeichen von den Werten für gelochte Zeichen um 5 unterscheiden. Dann die Werte, die sich um 1 unterscheiden, und schließlich eine Liste der nicht gelochten Zeichen, die sich um 3 von den Werten für gelochte Zeichen unterscheiden. Die Programmbeendigungsanweisung in Befunge ist "@" (Zeichenwert 64), also lade ich am Ende "?" (char value 63) addiere 1 und füge das in den Code mit der Anweisung 's' ein.
Ich könnte vielleicht mehr Golf spielen, indem ich die drei zusammenlege
Abschnitt, aber wahrscheinlich nicht viel.
quelle
JavaScript
240228Ersteinreichung:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;1[_="c\157nstruct\157r"][_](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()
Nun, dies ist ein großartiger Anfang, hier ist, wie es zusammenbricht ...
Und dann dachte ich ... "Es muss einen einfacheren Weg geben ..." und da ist ...
Überarbeitete Einreichung:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;this[y+"v"+z+"l"](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')
Nachdem ich gesehen habe, dass ich es nutzen kann
eval
(indem ich es zusammensetze, Inspiration von @bebe; das ist viel schneller als dasconstructor
von aconstructor
von anumber
...), habe ich es auf 228 heruntergebohrt ... ich weiß, dass es diese bestimmte Golf Challenge möglicherweise nicht gewinnen wird , aber dies ist nur meine Art zu zeigen, wie oft Sie JavaScript missbrauchen und trotzdem das gewünschte Ergebnis erzielen können ...quelle
Main - Schlaflosigkeit , 50
Es gibt aus:
Bonus - Schlaflosigkeit, 268
Es gibt aus:
Ich denke, es sollte möglich sein, die Länge des Programms zu reduzieren, wenn die Ausgabe neu angeordnet wird, aber ich muss mein Suchprogramm ändern, um dies zu tun.
Nur um eine andere Sprache zu zeigen, die mit einer begrenzten Anzahl von Zeichen arbeiten kann. Übrigens, es kann fast jede Ausgabe mit nur 3 eindeutigen Zeichen in der Quelle schreiben.
Gegenwärtig ist dies die einzige Sprache, die sowohl die Hauptherausforderung als auch den Bonus unter allen vorhandenen Antworten erfüllen kann.
Insomnia Interpreter .
quelle
Befunge 98 - 46 Bytes
Befunge-ified-Version von isaacgs Pyth-Eintrag:
quelle
Japt , 33 Bytes
Probieren Sie es online!
Gleicher Algorithmus wie isaacg's Pyth-Submission ist in Japt einfach kürzer.
Wie es funktioniert
Ja, es ist JS, eine der am meisten missbrauchten Sprachen , nur kürzer (und Sie brauchen
alert
oderconsole.log
hier nicht).quelle