Ce défi est simple, mais j'espère que vous pourrez l'aborder de nombreuses manières:
Vous devez imprimer / retourner un objet JSON valide d'au moins 15 caractères, sans compter les espaces non essentiels. Votre programme devrait fonctionner sans aucune contribution.
Dans un souci de clarté, un objet JSON commence et finit par des accolades {}
et ne contient aucune paire clé: valeur séparée par des virgules. La spécification JSON complète peut être trouvée sur json.org , et la sortie de votre code doit réussir ce validateur .
Par conséquent, l'un des éléments suivants ne serait pas valide:
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
Toutefois, les éléments suivants seraient valables:
{"1":1,"2":2,"3":3,"4":4} //Long enough
{"whitespace ":4} //This whitespace isn't unessential
Les langages non programmés sont autorisés pour ce défi. Vous pouvez renvoyer une chaîne d'une fonction ou l'imprimer. Ceci est un code-golf , alors répondez-le avec le moins de code possible!
Réponses:
Python 2, 14 octets
Les sorties:
Les backticks obtiennent la représentation de chaîne dans Python 2. En général, cette sortie crée des guillemets simples, ce que Python reconnaît comme délimitant une chaîne, mais pas JSON. Mais Sp3000 observe que lors de la chaîne d'un type, la description du type contient déjà des guillemets simples, ce qui oblige les guillemets extérieurs à être des guillemets doubles.
la source
print({repr(str):1})
print({"'"*9:9})
pour 16 ans (print{"'"*9:9}
c'est encore 14 en Py2)jq, 6 caractères
(Option de ligne de commande code 3 caractères + 3 caractères.)
CW car je suis sûr que ce n'est pas le genre de réponse que vous aviez l'intention de permettre.
Échantillon échantillon:
(Sortie évidemment raccourcie.)
la source
-n
qu'un compte d'espace pour trois octets supplémentaires.Gelée , 11 octets
Essayez-le en ligne!
Sortie
la source
pwllgw
etbwllll
). Qu'est-ce que c'est même?Bloc-notes, 7 frappes
Si vous avez un ordinateur Windows avec le programme Notepad, tapez ceci:
{"F5":0}
Sur mon ordinateur Windows 7, au moins, cela vous donne quelque chose comme:
la source
Java (JDK 10) , 20 octets
Essayez-le en ligne!
Sortie
la source
+
pourString.concat
:> ^ (String.concat
! Si vous cochez la bytecode, voici ce Java compile en:()->new StringBuilder("{\"\":").append(1/.3).append("}").toString()
. Aussi, ne vous inquiétez pas, ceci reste la réponse la plus longue sur cette page, à l'exception des réponses Brainfuck et Java 7. Donc, Java tient son rang;)PHP,
14 à13 octetsImprime un
belobjet de mathsydont on pourrait presque dire qu'il est utile:Utilise le fait que php imprime quoi que ce soit en dehors des balises proprement dit pour économiser sur certains guillemets,
M_E
était la constante la plus courte possible assez longue.edit: enregistré un octet grâce à Lynn. Malheureusement, ce n'est plus un "bel" objet de mathsy.
la source
""
est une clé JSON valide.JavaScript,
17 à15 octetsMerci à @Neil pour celui-ci. Appel sans entrée.
Les sorties
{"undefined":0}
Ancienne version, 16 octets
Merci à @ kamoroso94 pour -1 sur cette version
Les sorties
{"":9000000000}
la source
a
)_=>`{"a":${_}}`
résulte en{"a":undefined}
, qui est exactement 15 caractères. Notez que vous n'utilisez aucune entrée pour appeler cette fonctionundefined
est une valeur valide dans JSON, mais qui est facilement fixé en faisant le nom de la propriété et en utilisant une valeur nulle:_=>`{"${_}":0}`
.a
pour faire de la clé la chaîne vide, une clé valide en JSON. 1 octet de moins.Brainfuck, 50 octets
Sorties
{"999999999999999999999999999999999999999999999999999999999999999999999999999999999":9}
. Supposons un interpréteur ayant des cellules de 8 bits et non délimité à gauche. Essayez-le en ligne!la source
Pyth - 5 octets
Impressions
{"'abcdefghijklmnopqrstuvwxyz'": 10}
.Essayez-le en ligne ici .
la source
Jolf, 9 octets
Sorties:
{"{¦q:¦q}":"{¦q:¦q}"}
. Essayez-le ici!la source
Pyth, 7 octets
Crée un dictionnaire contenant une seule clé
"'abcdefghijklmnopqrstuvwxyz'"
et une seule valeur0
:la source
Lot, 16 octets
Impressions
{"Windows_NT":0}
.la source
///,
1514 caractères(Au moins, la sortie contient
1 à2 caractères de plus que le code.)Essayez-le en ligne!
Grâce à:
Échantillon échantillon:
Juste pour le rendre plus lisible:
la source
/a/{":1234}/aa
(sorties{":1234}{":1234}
)R, 19 octets
Devient un peu plus long car il faut échapper aux guillemets
\"
. En outre, illh
s’agit de l’un des jeux de données intégrés deR
l’objet dont le nom le plus court contient, à ma connaissance, les 9 caractères nécessaires pour remplir la longueur de la clé. (edit: en fin de compte,pi
ça fonctionne aussi avec l'option standard et j'ai été battu par @JDL qui était assez malin pour échapper en utilisant des guillemets simples plutôt que des barres obliques inverses supplémentaires)La description de
lh
dans la documentation R est la suivante:ce qui est un nom assez inattendu de clé, mais bon, ça marche et produit le résultat:
La réponse peut être comparée à la simple insertion de lettres "aléatoires" dans la touche pour obtenir au moins 15 caractères (24 octets):
la source
cat('{"',lh,'":1}')
comme je l'ai fait ci-dessus (bien que j'aie utilisé à lapi
place delh
). Dans ma recherche de variables à deux lettres, je suis tombé sur une fonctionel
dont je n'avais jamais entendu parler. Pourrait être utile à l'avenir ...PowerShell
222014 octetsSortie
Utilisez la constante définie pour 1 To en octets pour atteindre la limite de caractères et la valeur d'un entier statique pour obtenir un json valide. Merci à TimmyD d'avoir réduit le nombre de caractères de 5 en supprimant certaines redondances.
Message précédent 40 octets
Sortie
Prend un tableau d'entiers et crée une paire clé-valeur pour chacun. Rejoignez avec des virgules et enveloppez-les avec un ensemble d'accolades.
la source
05AB1E , 9 octets
Malheureusement, 05AB1E n’ayant pas d’objet dictionnaire, nous devons donc construire le nôtre.
Essayez-le en ligne!
Sortie
la source
Rétine, 11 octets
Sortie
Remarque: la nouvelle ligne principale est importante car rien n’est remplacé par la sortie résultante, j’ai utilisé un espace insécable pour illustrer cela!
Essayez-le en ligne!
la source
V , 9 octets
Essayez-le en ligne!
Très simple. Passe en mode insertion, entre le texte suivant:
Ceci est si court parce que
¹
répète le caractère suivant 9 fois.la source
JavaScript (ES6) + jQuery, 15 octets
Parce que jQuery.
Sorties
{"function (a,b){return new n.fn.init(a,b)}":0}
à l'appel. Essayez-le ici:Afficher l'extrait de code
la source
alert()
vous ne produisiez rienDyalog APL , 9 octets
Essayez-le en ligne!
Dans un espace de travail propre sur mon PC, le résultat est
{"Category":"","DM":[],"EM":"","EN":0,"ENX":0,"HelpURL":"","InternalLocation":["",0],"Message":"","OSError":[0,0,""],"Vendor":""}
⎕JSON
convertir en JSON⎕DMX
l' objet de traitement (disponible universellement) D iagnostic M xla source
brainfuck, 83 octets
Les sorties
{"333333333":3}
Il existe probablement une autre solution plus courte, mais je ne l’ai pas encore trouvée.
Explication:
Essayez-le en ligne
la source
PHP, 19 octets
Sortie:
{"387420489":1}
https://eval.in/665889
Merci à manatwork pour les conseils!
la source
**
opérateur:pow(9,9)
→(9**9)
.{"<?=9**9?>":1}
Java 7, 36 octets
Java 8, 21 octets
Ungolfed & code de test:
Essayez ici.
Sortie (longueur 15):
la source
1
( voirSystem.identityHashCode(Object)
).""
comme clé et1e7
comme valeur.""
est une clé valide lorsqu'elle est essayée dans le validateur.this
code. En ce qui concerne le""
avec1e7
, cela ne fonctionnera malheureusement pas.1e6
sorties1000000.0
, mais1e7
sorties à la1.0E7
place.R, 19 octets
Cela fonctionne en anglais britannique local; cela peut nécessiter +2 octets chez les autres. (Edit: ce n'est probablement pas --- voir les commentaires.)
J'espérais quelque chose d'intelligent (peut-être extraire une ligne de code d'une fonction préexistante, par exemple
q
), mais je n'ai rien trouvé. Le résultat:Notez qu'il n'est pas nécessaire d'échapper aux guillemets doubles dans R si vous utilisez des guillemets simples pour citer la chaîne (et inversement). Ce comportement dépend cependant de la localisation. Je m'attendrais cependant à ce que cela fonctionne dans une langue anglaise anglaise.
Cela nécessite également que votre
digits
option par défaut soit au moins six (ce qui correspond à la valeur par défaut d'origine) etscipen
au moins-digits
(la valeur d'usine par défaut est zéro).la source
options(quote)
pouvant être spécifiés par l'utilisateur, mais la valeur par défaut dépend, autant que je sache, des paramètres régionaux.options('quote')
n'est pas documentée , sa modification n'a aucun effet perceptible et, bien que j'ai rencontré beaucoup de manigances dans le RI, je doute que les options d'exécution changent la façon dont elle est analysée. Cela peut changer le résultat bien sûr - mais pas dans le code de cette réponse.quote
,squote
etc.Ruby, 19 octets
Sortie:
la source
puts
??1*9
c'est encore assez long.Elément , 18 octets
Essayez-le en ligne! Les sorties
{"a":387420489}
Ce n'est que trois octets plus court que la solution naïve. La première moitié de la sortie est codée en dur (trop de caractères d'échappement pour rendre une autre approche possible), tandis que la valeur est calculée
9^9
pour créer un nombre suffisamment long.la source
Perl 5,
1615 octetsUtilise l'horodatage unix du moment où le programme a été lancé en tant que contenu d'un objet à un élément. Il donne une sortie valide si vous le lancez après le 3 mars 1973 à 10:46:39 . Mais puisque nous ne pouvons pas remonter dans le temps, cela semble légitime.Utilise la variable FORMAT_TOP_HANDLE
$^
dont la valeur par défaut estSTDOUT_TOP
.Courez avec un
-E
drapeau sans frais supplémentaires.Les sorties ont une longueur de 16 octets.
la source
Cheddar,
17 à14 octets3 octets sauvés grâce à @ ConorO'Brien
Une fonction anonyme qui retourne
{":1234}{":1234}
un objet JSON valide:Essayez-le en ligne!
la source
Lot Windows, 10 octets
La variable d'environnement
OS
contient la chaîneWindows_NT
(sur tous les systèmes d'exploitation Windows depuis 2000, conformément à cette question sur le dépassement de capacité).la source
{"%OS%":5}
car ce serait une commande et vous bénéficiez de la fonction de traçage élémentaire? C'est délicat.HQ9 +, 15 octets
Se produit lui-même. Je pensais qu'une réponse sur 8 octets serait possible, comme ceci:
Cette sortie
{":11QQ}{":11QQ}
, qui est un JSON presque valide, mais11QQ
n'est pas une valeur valide.HQ9 + n'est pas un langage de programmation valide selon les normes PPCG, mais l'OP a autorisé les langages autres que de programmation.
la source