Эта задача проста, но, надеюсь, есть много путей, которые вы можете подойти к ней:
Вам необходимо напечатать / вернуть действительный объект JSON длиной не менее 15 символов, не считая необязательных пробелов. Ваша программа должна работать без какого-либо участия.
Для ясности, объект JSON начинается и заканчивается фигурными скобками {}
и содержит ноль или более пар ключ: значение, разделенных запятыми. Полная спецификация JSON может быть найдена на json.org , и вывод вашего кода должен пройти этот валидатор .
Поэтому любое из следующего не будет действительным:
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
Тем не менее, следующее будет действительным:
{"1":1,"2":2,"3":3,"4":4} //Long enough
{"whitespace ":4} //This whitespace isn't unessential
На этом соревновании разрешены не-языки программирования. Вы можете вернуть строку из функции или распечатать ее. Это код-гольф , поэтому ответьте на него как можно меньше кода!
Ответы:
Python 2, 14 байт
Выходы:
Обратные метки получают строковое представление в Python 2. Обычно эти выходные данные создают одинарные кавычки, которые Python распознает как разделитель строки, а JSON - нет. Но Sp3000 отмечает, что при строковом типе описание типа уже содержит одинарные кавычки, в результате чего внешние кавычки становятся двойными кавычками.
источник
print({repr(str):1})
print({"'"*9:9})
для 16 (print{"'"*9:9}
еще 14 в Py2)JQ, 6 символов
(3 символа кода + 3 символа командной строки.)
CW, потому что я уверен, что это не тот ответ, который вы намеревались разрешить.
Образец прогона:
(Вывод явно сокращен.)
источник
-n
а также с учетом пробела для трех дополнительных байтов.Желе , 11 байт
Попробуйте онлайн!
Выход
источник
pwllgw
иbwllll
). Что даже это?Блокнот, 7 нажатий клавиш
Если у вас компьютер под управлением Windows с программой «Блокнот», введите:
{"F5":0}
По крайней мере, на моем компьютере с Windows 7 это выглядит примерно так:
источник
Java (JDK 10) , 20 байт
Попробуйте онлайн!
Выход
источник
+
наString.concat
>: ^ (String.concat
! Если вы проверяете байткод, это то , что Java компилируется в:()->new StringBuilder("{\"\":").append(1/.3).append("}").toString()
. Кроме того, не волнуйтесь, это все еще самый длинный ответ на этой странице, исключая Brainfuck и Java 7. Таким образом, Java занимает свое место;)PHP,
1413 байтПечатает
хорошийматематический объект,который можно было бы почти притворить, полезен:Использует тот факт, что php печатает что-либо вне тегов дословно, чтобы сохранить на некоторых кавычках,
M_E
была самой короткой достаточно длинной константой, которую я мог найти.редактировать: сохранено один байт благодаря Линн. К сожалению, это больше не «хороший» математический объект.
источник
""
является действительным ключом JSON.JavaScript,
1715 байтСпасибо @Neil за это. Звоните без ввода.
Выходы
{"undefined":0}
Старая версия, 16 байт
Спасибо @ kamoroso94 за -1 на этой версии
Выходы
{"":9000000000}
источник
a
)_=>`{"a":${_}}`
В результате{"a":undefined}
получается ровно 15 символов. Отмечено, что вы не используете никакой ввод при вызове этой функцииundefined
является допустимым значением в формате JSON, но это легко фиксируется, сделав его имя свойства и использовать нулевое значение:_=>`{"${_}":0}`
.a
чтобы сделать ключ пустой строкой, допустимый ключ в JSON. На 1 байт меньше.Brainfuck, 50 байтов
Выходы
{"999999999999999999999999999999999999999999999999999999999999999999999999999999999":9}
. Предполагается, что интерпретатор имеет 8-битные ячейки и не ограничен слева. Попробуйте онлайн!источник
Pyth - 5 байт
Печать
{"'abcdefghijklmnopqrstuvwxyz'": 10}
.Попробуйте это онлайн здесь .
источник
Джольф, 9 байт
Выходы:
{"{¦q:¦q}":"{¦q:¦q}"}
. Попробуй это здесь!источник
Pyth, 7 байт
Создает словарь, содержащий один ключ
"'abcdefghijklmnopqrstuvwxyz'"
и значение0
:источник
Пакетный, 16 байтов
Печать
{"Windows_NT":0}
.источник
///,
1514 символов(По крайней мере, вывод на
12 символа длиннее, чем код.)Попробуйте онлайн!
Благодаря:
Образец прогона:
Просто чтобы сделать его более читабельным:
источник
/a/{":1234}/aa
(выходы{":1234}{":1234}
)R, 19 байт
Становится немного дольше, потому что нужно избегать кавычек
\"
. Кроме того, онlh
является одним из встроенных наборов данныхR
и является (насколько мне известно) объектом с кратчайшим именем, содержащим 9 символов, необходимых для заполнения длины ключа. (правка: получается, чтоpi
работает со стандартной опцией, и я был побежден @JDL, который был достаточно умен, чтобы избегать использования одинарных кавычек, а не дополнительной обратной косой черты)Описание
lh
в R-документации:это довольно неожиданное имя ключа, но эй, оно работает и выдает результат:
Ответ можно сравнить с простым заполнением клавиши «случайными» буквами, чтобы получить на выходе не менее 15 символов (24 байта):
источник
cat('{"',lh,'":1}')
как я делал выше (хотя я использовалpi
вместоlh
). В поисках двухбуквенных переменных я наткнулся на функцию, оel
которой я даже не подозревал. Может быть полезно в будущем ...PowerShell
222014 байтВыход
Использование константы, определенной для 1 ТБ в байтах, для достижения предельного числа символов и значения статического целого числа, чтобы сделать для действительного json. Спасибо TimmyD за сокращение символов на 5 путем удаления некоторой избыточности.
Предыдущий пост 40 байт
Выход
Принимает целочисленный массив и создает пару ключ-значение для каждого. Соедините запятыми и оберните набором фигурных скобок.
источник
05AB1E , 9 байтов
К сожалению, 05AB1E не имеет словарного объекта, поэтому мы должны создать свой собственный.
Попробуйте онлайн!
Выход
источник
Сетчатка, 11 байт
Выход
Примечание: начальный символ новой строки важен, поскольку ничто не заменяется полученным результатом, я использовал неразрывный пробел, чтобы проиллюстрировать это!
Попробуйте онлайн!
источник
V , 9 байт
Попробуйте онлайн!
Очень просто. Входит в режим вставки, вводит следующий текст:
Причина, по которой это так коротко, в том, что
¹
повторяет следующий символ 9 раз.источник
JavaScript (ES6) + jQuery, 15 байт
Потому что JQuery.
Выходы
{"function (a,b){return new n.fn.init(a,b)}":0}
при вызове. Попробуйте это здесь:Показать фрагмент кода
источник
alert()
вы ничего не выводитеДьялог АПЛ , 9 байт
Попробуйте онлайн!
В чистом рабочем месте на моем компьютере результат
{"Category":"","DM":[],"EM":"","EN":0,"ENX":0,"HelpURL":"","InternalLocation":["",0],"Message":"","OSError":[0,0,""],"Vendor":""}
⎕JSON
преобразовать в JSON⎕DMX
(общедоступный) Д iagnostic М essage Е х , как правило , объектисточник
брейкфук, 83 байта
Выходы
{"333333333":3}
Вероятно, есть другое, более короткое решение, но я еще не нашел его.
Объяснение:
Попробуйте онлайн
источник
PHP, 19 байт
Выход:
{"387420489":1}
https://eval.in/665889
Спасибо manatwork за советы!
источник
**
оператор:pow(9,9)
→(9**9)
.{"<?=9**9?>":1}
Java 7, 36 байт
Java 8, 21 байт
Ungolfed & тестовый код:
Попробуй это здесь.
Выход (длина 15):
источник
1
( см.System.identityHashCode(Object)
).""
качестве ключа и в1e7
качестве значения.""
является действительным ключом при попытке в валидаторе.this
код. Что касается""
с1e7
, это не будет работать, к сожалению.1e6
выходы1000000.0
, но1e7
выходы1.0E7
вместо.R, 19 байт
Это работает в британском английском языке; это может потребовать +2 байта в других. (Изменить: вероятно, нет --- см. Комментарии.)
Я надеялся на что-нибудь умное (возможно, вытащив строку кода из ранее существовавшей функции, например
q
), но не смог ничего найти. Результат:Обратите внимание, что вам не нужно избегать двойных кавычек в R, если вы используете одинарные кавычки для кавычек в строке (и наоборот). Это поведение зависит от локали. Я ожидаю, что это будет работать и в американской английской локали.
Для этого также необходимо, чтобы значение по умолчанию было
digits
не менее шести (что является заводской настройкой по умолчанию), и этоscipen
не менее-digits
(заводская установка по умолчанию равна нулю).источник
options(quote)
какие из них могут быть указаны пользователем, но по умолчанию, насколько я знаю, зависит от локали.options('quote')
не задокументировано , изменение его не имеет заметного эффекта, и хотя я столкнулся с большим количеством махинаций в RI, сомневаюсь, что параметры времени выполнения изменят способ его анализа. Конечно, это может изменить вывод, но не в коде в этом ответе.quote
, иsquote
т.д.Рубин, 19 байт
Выход:
источник
puts
??1*9
это все еще достаточно долго.Элемент , 18 байт
Попробуйте онлайн! Выходы
{"a":387420489}
Это всего на три байта короче наивного решения. Первая половина выходных данных жестко запрограммирована (слишком много управляющих символов, чтобы сделать возможным любой другой подход), в то время как значение вычисляется,
9^9
чтобы сделать число достаточно длинным.источник
Perl 5,
1615 байтИспользует метку времени unix момента запуска программы как содержимое одноэлементного объекта. Это дает действительный вывод, если вы запустите его позже 10:46:39 3 марта 1973 года . Но так как мы не можем вернуться назад во времени, это кажется законным.Использует переменную FORMAT_TOP_HANDLE,
$^
которая по умолчанию имеет значениеSTDOUT_TOP
.Запуск с
-E
флагом без дополнительных затрат.Выходы длиной 16 байтов.
источник
Чеддер,
1714 байтовСохранено 3 байта благодаря @ ConorO'Brien
Возвращаемая анонимная функция
{":1234}{":1234}
, которая является допустимым объектом JSON:Попробуйте онлайн!
источник
Пакет Windows, 10 байт
Переменная окружения
OS
содержит строкуWindows_NT
(во всех операционных системах Windows с 2000 года, согласно этому вопросу о переполнении стека)источник
{"%OS%":5}
как это было бы командой, и вы пользуетесь элементарной функцией трассировки? Это сложно.HQ9 +, 15 байт
Выводит сам. Я думал, что 8-байтовый ответ будет возможным, например, так:
Это выводит
{":11QQ}{":11QQ}
, что является почти допустимым JSON, но11QQ
не является допустимым значением.HQ9 + не является допустимым языком программирования по стандартам PPCG, но OP допускает не-языки программирования.
источник