Esse desafio é direto, mas, esperançosamente, existem muitos caminhos que você pode abordar:
Você precisa imprimir / retornar um objeto JSON válido com pelo menos 15 caracteres, sem contar o espaço em branco não essencial. Seu programa deve funcionar sem nenhuma entrada.
Por questões de clareza, um objeto JSON começa e termina com chaves {}
e contém zero ou mais pares chave: valor separados por vírgulas. A especificação JSON completa pode ser encontrada em json.org , e a saída do seu código deve passar neste validador .
Portanto, qualquer um dos seguintes itens não seria válido:
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
No entanto, o seguinte seria válido:
{"1":1,"2":2,"3":3,"4":4} //Long enough
{"whitespace ":4} //This whitespace isn't unessential
Linguagens que não são de programação são permitidas neste desafio. Você pode retornar uma string de uma função ou imprimi-la. Este é um código-golfe , então responda-o com o mínimo de código possível!
Respostas:
Python 2, 14 bytes
Saídas:
Os backticks obtêm a representação de string no Python 2. Geralmente, essa saída cria aspas simples, que o Python reconhece como delimitando uma string, mas o JSON não. Mas o Sp3000 observa que, ao especificar um tipo, a descrição do tipo já contém aspas simples, o que força as aspas externas a serem aspas duplas.
fonte
print({repr(str):1})
print({"'"*9:9})
para 16 (print{"'"*9:9}
é outro 14 em Py2)jq, 6 caracteres
(Código de 3 caracteres + opção de linha de comando de 3 caracteres.)
CW, porque tenho certeza de que esse não é o tipo de resposta que você pretendia permitir.
Exemplo de execução:
(Saída obviamente reduzida.)
fonte
-n
e um espaço é responsável por três bytes extras.Gelatina , 11 bytes
Experimente online!
Resultado
fonte
pwllgw
ebwllll
). O que é isso?Bloco de notas, 7 pressionamentos de teclas
Se você possui um computador Windows com o programa Bloco de Notas, digite:
{"F5":0}
No meu computador com Windows 7, pelo menos, isso oferece algo como:
fonte
Java (JDK 10) , 20 bytes
Experimente online!
Resultado
fonte
+
paraString.concat
>: ^ (String.concat
! Se você verificar o bytecode, isso é o Java compilado em:()->new StringBuilder("{\"\":").append(1/.3).append("}").toString()
. Além disso, não se preocupe, esta ainda é a resposta mais longa nesta página, exceto a Brainfuck e a Java 7. Então, o Java mantém sua classificação;):PHP,
1413 bytesImprime um
bomobjeto matemáticoque quase se pode fingir que é útil:Usa o fato de que o php imprime qualquer coisa fora das tags literalmente para economizar em algumas aspas,
M_E
foi a constante mais curta e longa que eu pude encontrar.editar: salvou um byte graças a Lynn. Infelizmente, não é mais um objeto matemático "agradável".
fonte
""
é uma chave JSON válida.JavaScript,
1715 bytesObrigado a @Neil por este. Ligue sem entrada.
Saídas
{"undefined":0}
Versão antiga, 16 bytes
Obrigado a @ kamoroso94 por -1 nesta versão
Saídas
{"":9000000000}
fonte
a
)_=>`{"a":${_}}`
resulta em{"a":undefined}
, exatamente 15 caracteres. Observou que você não usar qualquer entrada ao chamar esta funçãoundefined
é um valor válido em JSON, mas isso é facilmente corrigido, tornando-ao nome da propriedade e usando um valor zero:_=>`{"${_}":0}`
.a
para tornar a chave a cadeia vazia, uma chave válida em JSON. 1 byte a menos.Brainfuck, 50 bytes
Saídas
{"999999999999999999999999999999999999999999999999999999999999999999999999999999999":9}
. Pressupõe um intérprete com células de 8 bits e sem limite à esquerda. Experimente online!fonte
Pitão - 5 bytes
Imprime
{"'abcdefghijklmnopqrstuvwxyz'": 10}
.Experimente online aqui .
fonte
Jolf, 9 bytes
Saídas:
{"{¦q:¦q}":"{¦q:¦q}"}
. Experimente aqui!fonte
Pitão, 7 bytes
Cria um dicionário que contém uma única chave
"'abcdefghijklmnopqrstuvwxyz'"
e valor0
:fonte
Lote, 16 bytes
Imprime
{"Windows_NT":0}
.fonte
///,
1514 caracteres(Pelo menos a saída tem
12 caracteres a mais que o código.)Experimente online!
Graças a:
Exemplo de execução:
Apenas para torná-lo mais legível:
fonte
/a/{":1234}/aa
(saídas{":1234}{":1234}
)R, 19 bytes
Torna-se um pouco mais por causa da necessidade de escapar de aspas
\"
. Além disso,lh
é um dos conjuntos de dados internosR
e é (que eu saiba) o objeto com o nome mais curto que contém os 9 caracteres necessários para preencher o comprimento da chave. (edit: acontecepi
que também funciona com a opção padrão e fui derrotado por @JDL, que foi inteligente o suficiente para escapar usando aspas simples, em vez de barras invertidas extras)A descrição
lh
na documentação R é:que é um nome bastante inesperado de uma chave, mas ei, ele funciona e produz a saída:
A resposta pode ser comparada a apenas o preenchimento da tecla com letras "aleatórias" para gerar pelo menos 15 caracteres (24 bytes):
fonte
cat('{"',lh,'":1}')
como fiz acima (embora eu usei empi
vez delh
). Na minha busca por variáveis de duas letras, me deparei com a funçãoel
que eu nunca soube que existia. Pode ser útil no futuro ...PowerShell
222014 bytesResultado
Usando a constante definida para 1 TB em bytes para atingir o limite de caracteres e o valor de um número inteiro estático para gerar json válido. Agradecemos a TimmyD por reduzir os caracteres em 5 removendo alguma redundância.
Post anterior 40 bytes
Resultado
Toma uma matriz inteira e cria um par de valores-chave para cada um. Junte-se com vírgulas e envolva-o com um conjunto de chaves.
fonte
05AB1E , 9 bytes
Infelizmente, 05AB1E não possui um objeto de dicionário, portanto, precisamos construir nosso próprio.
Experimente online!
Resultado
fonte
Retina, 11 bytes
Resultado
Nota: a nova linha principal é significativa, pois nada é substituído pela saída resultante; usei um espaço sem interrupções para ilustrar isso!
Experimente online!
fonte
V , 9 bytes
Experimente online!
Muito simples. Entra no modo de inserção e insere o seguinte texto:
A razão de ser tão curto é porque
¹
repete o seguinte caractere 9 vezes.fonte
JavaScript (ES6) + jQuery, 15 bytes
Porque jQuery.
Saídas
{"function (a,b){return new n.fn.init(a,b)}":0}
quando chamadas. Experimente aqui:Mostrar snippet de código
fonte
alert()
qualquer coisa que você não são saídaDyalog APL , 9 bytes
Experimente online!
Em um espaço de trabalho limpo no meu PC, o resultado é
{"Category":"","DM":[],"EM":"","EN":0,"ENX":0,"HelpURL":"","InternalLocation":["",0],"Message":"","OSError":[0,0,""],"Vendor":""}
⎕JSON
converter para JSON⎕DMX
o (universalmente disponível) D iagnostic M ENSAGEM E x tendiam objectofonte
brainfuck, 83 bytes
Saídas
{"333333333":3}
Provavelmente existe outra solução mais curta, mas ainda não a encontrei.
Explicação:
Experimente online
fonte
PHP, 19 bytes
Resultado:
{"387420489":1}
https://eval.in/665889
Obrigado ao manatwork pelas dicas!
fonte
**
operador:pow(9,9)
→(9**9)
.{"<?=9**9?>":1}
Java 7, 36 bytes
Java 8, 21 bytes
Ungolfed & código de teste:
Experimente aqui.
Saída (comprimento 15):
fonte
1
( consulteSystem.identityHashCode(Object)
).""
como chave e1e7
como valor.""
é uma chave válida quando tentada no validador.this
código. Quanto ao""
com1e7
, isso não vai funcionar infelizmente.1e6
saídas1000000.0
, mas1e7
saídas em1.0E7
vez disso.R, 19 bytes
Isso funciona no código do idioma inglês britânico; pode exigir +2 bytes em outros. (Editar: provavelmente não --- ver comentários.)
Eu esperava algo inteligente (talvez arrancando uma linha de código de uma função pré-existente como
q
), mas não consegui encontrar nada. O resultado:Observe que você não precisa escapar aspas duplas em R se usar aspas simples para citar a sequência (e vice-versa). Esse comportamento depende da localidade. Eu esperaria que ele funcionasse em uma localidade em inglês dos EUA também.
Isso também requer que sua
digits
opção padrão seja pelo menos seis (que é o padrão original de fábrica) e quescipen
seja pelo menos-digits
(o padrão original de fábrica é zero).fonte
options(quote)
quais podem ser especificados pelo usuário, mas o padrão é, tanto quanto eu sei, dependente da localidade.options('quote')
não está documentada , alterá-la não tem efeito discernível e, embora eu tenha encontrado muitas travessuras na RI, duvido que as opções de tempo de execução mudem a maneira como é analisada. Pode alterar a saída, é claro - mas não no código nesta resposta.quote
,squote
etc.Ruby, 19 bytes
Resultado:
fonte
puts
??1*9
ainda é longo o suficiente.Elemento , 18 bytes
Experimente online! Saídas
{"a":387420489}
Isso é apenas três bytes menor que a solução ingênua. A primeira metade da saída é codificada (muitos caracteres de escape para viabilizar qualquer outra abordagem), enquanto o valor é calculado
9^9
para tornar um número longo o suficiente.fonte
Perl 5,
1615 bytesUsa o timestamp unix do momento em que o programa foi iniciado como o conteúdo de um objeto de um elemento. Ele fornece saída válida se você executá-lo depois das 10:46:39 em 3 de março de 1973 . Mas como não podemos voltar no tempo, isso parece legítimo.Usa a variável FORMAT_TOP_HANDLE
$^
cujo padrão éSTDOUT_TOP
.Corra com a
-E
bandeira sem nenhum custo adicional.As saídas têm 16 bytes.
fonte
Queijo Cheddar,
1714 bytesGuardado 3 bytes graças a @ ConorO'Brien
Uma função anônima que retorna
{":1234}{":1234}
, que é um objeto JSON válido:Experimente online!
fonte
Lote do Windows, 10 bytes
A variável de ambiente
OS
contém a sequênciaWindows_NT
(em todos os sistemas operacionais Windows desde 2000, de acordo com esta pergunta no Stack Overflow)fonte
{"%OS%":5}
, pois seria um comando e você se beneficia do recurso de rastreamento elementar? Isso é complicado.HQ9 +, 15 bytes
Saída em si. Eu pensei que uma resposta de 8 bytes seria possível, assim:
Isso gera
{":11QQ}{":11QQ}
, que é quase válido JSON, mas11QQ
não é um valor válido.O HQ9 + não é uma linguagem de programação válida para os padrões PPCG, mas o OP permitiu linguagens que não são de programação.
fonte