Diese Herausforderung ist unkompliziert, aber es gibt hoffentlich viele Möglichkeiten, wie Sie sie angehen können:
Sie müssen ein gültiges JSON- Objekt mit mindestens 15 Zeichen drucken / zurückgeben , wobei nicht benötigte Leerzeichen nicht berücksichtigt werden. Ihr Programm sollte ohne Eingabe funktionieren.
Aus Gründen der Übersichtlichkeit beginnt und endet ein JSON-Objekt mit geschweiften Klammern {}
und enthält null oder mehr Schlüssel-Wert-Paare, die durch Kommas getrennt sind. Die vollständige JSON-Spezifikation finden Sie unter json.org . Die Ausgabe Ihres Codes muss diesen Validator bestehen .
Daher ist Folgendes nicht gültig:
4 //Too short, not an object
"really, really long string" //A string, not an object
["an","array","of","values"] //An array is not a JSON object
{"this":4 } //You can't count unessential whitespace
{"1":1,"2":3} //Too short
{"a really long string"} //Not valid JSON, it needs a value
{'single-quoted':3} //JSON requires double-quotes for strings
Doch die folgenden würde gelten:
{"1":1,"2":2,"3":3,"4":4} //Long enough
{"whitespace ":4} //This whitespace isn't unessential
Nicht-Programmiersprachen sind für diese Herausforderung zulässig. Sie können eine Zeichenfolge aus einer Funktion zurückgeben oder ausdrucken. Dies ist ein Code-Golf , also antworten Sie mit so wenig Code wie möglich!
Antworten:
Python 2, 14 Bytes
Ausgänge:
Die Backticks erhalten die Zeichenfolgendarstellung in Python 2. In der Regel werden bei dieser Ausgabe einfache Anführungszeichen erstellt, die Python als Zeichenfolgeabgrenzung erkennt, JSON jedoch nicht. Sp3000 stellt jedoch fest, dass die Typbeschreibung beim Stringing eines Typs bereits einfache Anführungszeichen enthält, wodurch die äußeren Anführungszeichen in doppelte Anführungszeichen gesetzt werden.
quelle
print({repr(str):1})
print({"'"*9:9})
für 16 (print{"'"*9:9}
ist eine weitere 14 in Py2)jq, 6 Zeichen
(3 Zeichen Code + 3 Zeichen Befehlszeilenoption.)
CW, weil ich sicher bin, dass dies nicht die Art von Antwort ist, die Sie zulassen wollten.
Probelauf:
(Leistung offensichtlich verkürzt.)
quelle
-n
ein Leerzeichen drei zusätzliche Bytes ausmacht.Jelly , 11 Bytes
Probieren Sie es online!
Ausgabe
quelle
pwllgw
undbwllll
). Was ist das überhaupt?Notizblock, 7 Tastenanschläge
Wenn Sie einen Windows-Computer mit dem Programm Notepad haben, geben Sie Folgendes ein:
{"F5":0}
Zumindest auf meinem Windows 7-Computer erhalten Sie so etwas wie:
quelle
Java (JDK 10) , 20 Byte
Probieren Sie es online!
Ausgabe
quelle
+
umString.concat
>: ^ (String.concat
! Wenn Sie den Bytecode überprüfen, ist es das , was Java kompiliert in:()->new StringBuilder("{\"\":").append(1/.3).append("}").toString()
. Keine Sorge, dies ist immer noch die längste Antwort auf dieser Seite, abgesehen von der Brainfuck-Antwort und der Java 7-Antwort. So hält Java seinen Rang;)PHP,
1413 BytesGibt ein
nettesmathematisches Objekt aus, das man fast so tun könnte, als wäre es nützlich:Die Tatsache, dass PHP alles außerhalb der Tags wörtlich ausgibt, um Anführungszeichen zu setzen,
M_E
war die kürzeste Konstante, die ich finden konnte.edit: speicherte ein Byte dank Lynn. Leider ist es kein "nettes" mathematisches Objekt mehr.
quelle
""
ist ein gültiger JSON-Schlüssel.JavaScript,
17-15BytesVielen Dank an @Neil für diesen. Anruf ohne Eingabe.
Ausgänge
{"undefined":0}
Alte Version, 16 Bytes
Vielen Dank an @ kamoroso94 für -1 in dieser Version
Ausgänge
{"":9000000000}
quelle
a
)_=>`{"a":${_}}`
ergibt{"a":undefined}
, das sind genau 15 Zeichen. Beachten Sie, dass Sie beim Aufrufen dieser Funktion keine Eingabe verwendenundefined
ein gültiger Wert in JSON, aber das leicht fixiert ist , indem sie es die Eigenschaftsnamen zu machen und einen Nullwert mit:_=>`{"${_}":0}`
.a
, um den Schlüssel zur leeren Zeichenfolge zu machen, einem gültigen Schlüssel in JSON. 1 Byte weniger.Brainfuck, 50 Bytes
Ausgänge
{"999999999999999999999999999999999999999999999999999999999999999999999999999999999":9}
. Nimmt einen Interpreter an, der 8-Bit-Zellen hat und links nicht begrenzt ist. Probieren Sie es online!quelle
Pyth - 5 Bytes
Druckt
{"'abcdefghijklmnopqrstuvwxyz'": 10}
.Probieren Sie es hier online aus .
quelle
Jolf, 9 Bytes
Ausgänge:
{"{¦q:¦q}":"{¦q:¦q}"}
. Probieren Sie es hier aus!quelle
Pyth, 7 Bytes
Erstellt ein Wörterbuch mit einem einzelnen Schlüssel
"'abcdefghijklmnopqrstuvwxyz'"
und Wert0
:quelle
Batch, 16 Bytes
Druckt
{"Windows_NT":0}
.quelle
///,
1514 Zeichen(Die Ausgabe ist mindestens
1 bis2 Zeichen länger als der Code.)Probieren Sie es online!
Dank an:
Probelauf:
Nur um es lesbarer zu machen:
quelle
/a/{":1234}/aa
(Outputs{":1234}{":1234}
)R, 19 Bytes
Wird etwas länger, weil man Anführungszeichen entziehen muss
\"
. Außerdemlh
ist einer der integrierten Datensätze inR
und ist (meines Wissens) das Objekt mit dem kürzesten Namen, das die 9 Zeichen enthält, die zum Ausfüllen der Schlüssellänge benötigt werden. (edit: stellt sich heraus, dasspi
dies auch mit der Standardoption funktioniert, und ich wurde von @JDL geschlagen, der klug genug war, einfache Anführungszeichen anstelle der zusätzlichen Backslashes zu verwenden)Die Beschreibung
lh
in der R-Dokumentation lautet:Das ist ein ziemlich unerwarteter Name eines Schlüssels, aber hey, es funktioniert und erzeugt die Ausgabe:
Die Antwort kann mit dem einfachen Auffüllen des Schlüssels mit "zufälligen" Buchstaben verglichen werden, um eine Ausgabe von mindestens 15 Zeichen (24 Byte) zu erzielen:
quelle
cat('{"',lh,'":1}')
wie oben (obwohl ich siepi
anstelle von verwendet habelh
). Bei der Suche nach Variablen mit zwei Buchstaben bin ich auf eine Funktion gestoßen, vonel
der ich nie wusste, dass sie existiert. Könnte in Zukunft nützlich sein ...PowerShell
222014 BytesAusgabe
Verwenden Sie die für 1 TB in Bytes definierte Konstante, um die Zeichenbegrenzung zu erreichen, und den Wert einer statischen Ganzzahl, um einen gültigen JSON-Wert zu erhalten. Vielen Dank an TimmyD für die Reduzierung der Zeichen um 5, indem einige Redundanzen entfernt wurden.
Frühere Post 40 Bytes
Ausgabe
Nimmt ein Integer-Array und erstellt für jedes ein Schlüssel-Wert-Paar. Verbinden Sie mit Kommas und wickeln Sie mit einem Satz geschweiften Klammern.
quelle
05AB1E , 9 Bytes
Leider hat 05AB1E kein Dictionary-Objekt, daher müssen wir unser eigenes konstruieren.
Probieren Sie es online!
Ausgabe
quelle
Retina, 11 Bytes
Ausgabe
Hinweis: Die führende Zeile ist von Bedeutung, da nichts durch die resultierende Ausgabe ersetzt wird. Ich habe ein nicht unterbrechendes Leerzeichen verwendet, um dies zu veranschaulichen.
Probieren Sie es online!
quelle
V , 9 Bytes
Probieren Sie es online!
Sehr einfach. Aktiviert den Einfügemodus und gibt den folgenden Text ein:
Der Grund, warum dies so kurz ist, liegt darin, dass
¹
das folgende Zeichen neunmal wiederholt wird.quelle
JavaScript (ES6) + jQuery, 15 Byte
Weil jQuery.
Ausgänge
{"function (a,b){return new n.fn.init(a,b)}":0}
beim Aufruf. Probieren Sie es hier aus:Code-Snippet anzeigen
quelle
alert()
du nichts ausgibstDyalog APL , 9 Bytes
Probieren Sie es online!
In einem sauberen Arbeitsbereich auf meinem PC ist das Ergebnis
{"Category":"","DM":[],"EM":"","EN":0,"ENX":0,"HelpURL":"","InternalLocation":["",0],"Message":"","OSError":[0,0,""],"Vendor":""}
⎕JSON
in JSON konvertieren⎕DMX
die (allgemein verfügbar) D iagnostic M Nachricht E x Objekt neigtenquelle
Brainfuck, 83 Bytes
Ausgänge
{"333333333":3}
Es gibt wahrscheinlich eine andere kürzere Lösung, aber ich habe sie noch nicht gefunden.
Erläuterung:
Probieren Sie es online aus
quelle
PHP, 19 Bytes
Ausgabe:
{"387420489":1}
https://eval.in/665889
Danke an manatwork für die Tipps!
quelle
**
Operator:pow(9,9)
→(9**9)
.{"<?=9**9?>":1}
Java 7, 36 Bytes
Java 8, 21 Bytes
Ungolfed & Testcode:
Probieren Sie es hier aus.
Ausgabe (Länge 15):
quelle
1
( sieheSystem.identityHashCode(Object)
) haben.""
als Schlüssel und1e7
als Wert verwenden.""
ist ein gültiger Schlüssel, wenn er im Validator ausprobiert wird.this
Code entfernen . Was das""
mit1e7
angeht, funktioniert das leider nicht.1e6
Ausgänge1000000.0
, sondern1e7
Ausgänge1.0E7
.R, 19 Bytes
Dies funktioniert in britischem Englisch. In anderen Fällen sind möglicherweise +2 Byte erforderlich. (Edit: es sieht wahrscheinlich keine Kommentare.)
Ich hatte auf etwas Kluges gehofft (vielleicht eine Codezeile aus einer bereits vorhandenen Funktion wie
q
), konnte aber nichts finden. Das Ergebnis:Beachten Sie, dass Sie doppelte Anführungszeichen in R nicht umgehen müssen, wenn Sie einfache Anführungszeichen verwenden, um die Zeichenfolge in Anführungszeichen zu setzen (und umgekehrt). Dieses Verhalten ist jedoch vom Gebietsschema abhängig. Ich würde erwarten, dass es auch in einem US-englischen Gebietsschema funktioniert.
Dies setzt auch voraus, dass Ihre Standardoption
digits
mindestens sechs (die werkseitige Standardeinstellung) undscipen
mindestens-digits
null (die werkseitige Standardeinstellung) beträgt.quelle
options(quote)
welche vom Benutzer angegeben werden können. Die Standardeinstellung ist jedoch meines Wissens vom Gebietsschema abhängig.options('quote')
ist nicht dokumentiert , eine Änderung hat keine erkennbaren Auswirkungen, und obwohl ich in RI auf viele Spielereien gestoßen bin, bezweifle ich, dass Laufzeitoptionen die Art und Weise, wie es analysiert wird, ändern würden. Es kann natürlich die Ausgabe ändern - aber nicht im Code in dieser Antwort.quote
,squote
etc.Ruby, 19 Bytes
Ausgabe:
quelle
puts
??1*9
ist noch lange genug.Element , 18 Bytes
Probieren Sie es online! Ausgänge
{"a":387420489}
Dies ist nur drei Bytes kürzer als die naive Lösung. Die erste Hälfte der Ausgabe ist fest codiert (zu viele Escape-Zeichen, um einen anderen Ansatz zu ermöglichen), während der Wert so berechnet wird
9^9
, dass eine Zahl lang genug ist.quelle
Perl 5,
16,15 BytesVerwendet den Unix-Zeitstempel des Zeitpunkts, zu dem das Programm gestartet wurde, als Inhalt eines Ein-Element-Objekts. Es gibt eine gültige Ausgabe, wenn Sie es später als 10:46:39 am 3. März 1973 ausführen . Aber da wir nicht in der Zeit zurückkehren können, scheint das legitim zu sein.Verwendet die Variable FORMAT_TOP_HANDLE,
$^
die standardmäßig verwendet wirdSTDOUT_TOP
.Laufen Sie mit
-E
Flagge ohne zusätzliche Kosten.Die Ausgabe ist 16 Byte lang.
quelle
Cheddar,
1714 Bytes3 Bytes gespart dank @ ConorO'Brien
Eine anonyme Funktion
{":1234}{":1234}
, die ein gültiges JSON-Objekt zurückgibt :Probieren Sie es online!
quelle
Windows Batch, 10 Bytes
Die Umgebungsvariable
OS
enthält die ZeichenfolgeWindows_NT
(Auf allen Windows-Betriebssystemen seit 2000 laut dieser Frage zum Stapelüberlauf)quelle
{"%OS%":5}
als wäre es ein Befehl und Sie profitieren von der elementaren Verfolgungsfunktion? Das ist knifflig.HQ9 +, 15 Bytes
Gibt sich selbst aus. Ich dachte, eine 8-Byte-Antwort wäre wie folgt möglich:
Diese Ausgabe
{":11QQ}{":11QQ}
ist fast ein gültiger JSON-11QQ
Wert , aber kein gültiger Wert.HQ9 + ist nach PPCG-Standards keine gültige Programmiersprache , das OP hat jedoch Nicht-Programmiersprachen zugelassen.
quelle