To wyzwanie jest proste, ale miejmy nadzieję, że istnieje wiele sposobów, aby się do niego zbliżyć:
Musisz wydrukować / zwrócić prawidłowy obiekt JSON o długości co najmniej 15 znaków, nie licząc niepotrzebnych białych znaków. Twój program powinien działać bez żadnych danych wejściowych.
Dla zachowania przejrzystości obiekt JSON zaczyna się i kończy nawiasami klamrowymi {}
i zawiera zero lub więcej par klucz: wartość oddzielonych przecinkami. Pełna specyfikacja JSON znajduje się na stronie json.org , a dane wyjściowe kodu muszą przejść przez ten walidator .
Dlatego też każdy z poniższych elementów nie jest ważna:
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
Jednak dodaje , że ważne:
{"1":1,"2":2,"3":3,"4":4} //Long enough
{"whitespace ":4} //This whitespace isn't unessential
W tym wyzwaniu dozwolone są języki nieprogramowe. Możesz zwrócić ciąg z funkcji lub wydrukować go. To jest golf golfowy , więc odpowiedz na nie, używając możliwie najmniejszego kodu!
Odpowiedzi:
Python 2, 14 bajtów
Wyjścia:
Backticks uzyskują reprezentację ciągu w Pythonie 2. Zwykle dane wyjściowe tworzą pojedyncze cudzysłowy, które Python rozpoznaje jako ograniczające ciąg, ale JSON nie. Ale Sp3000 zauważa, że podczas tworzenia typu, opis typu zawiera już pojedyncze cudzysłowy, co wymusza cudzysłowy zewnętrzne jako podwójne.
źródło
print({repr(str):1})
print({"'"*9:9})
dla 16 (print{"'"*9:9}
to kolejne 14 w Py2)jq, 6 znaków
(3-znakowy kod + 3-znakowa opcja wiersza poleceń).
CW, ponieważ jestem pewien, że nie jest to odpowiedź, na którą chciałeś pozwolić.
Przykładowy przebieg:
(Wydajność wyraźnie skrócona.)
źródło
-n
a więc z kontem spacji dla trzech dodatkowych bajtów.Galaretka , 11 bajtów
Wypróbuj online!
Wynik
źródło
pwllgw
ibwllll
). Co to w ogóle jest?Notatnik, 7 klawiszy
Jeśli masz komputer z systemem Windows i programem Notatnik, wpisz:
{"F5":0}
Przynajmniej na moim komputerze z systemem Windows 7 daje to coś takiego:
źródło
Java (JDK 10) , 20 bajtów
Wypróbuj online!
Wynik
źródło
+
doString.concat
>: ^ (String.concat
! Jeśli zaznaczysz kodu bajtowego, to co kompiluje Java na:()->new StringBuilder("{\"\":").append(1/.3).append("}").toString()
. Nie martw się, to wciąż najdłuższa odpowiedź na tej stronie, z wyjątkiem Brainfuck i Java 7. Tak więc Java utrzymuje swoją rangę;)PHP,
1413 bajtówWyświetla
ładnyobiekt matematyczny,który można niemal udawać, że jest przydatny:Wykorzystuje fakt, że php drukuje wszystko poza tagami dosłownie, aby zaoszczędzić na niektórych znakach cudzysłowu,
M_E
była najkrótszą wystarczająco długą stałą, jaką mogłem znaleźć.edycja: zapisany jeden bajt dzięki Lynn. Niestety nie jest to już „miły” obiekt matematyczny.
źródło
""
jest prawidłowym kluczem JSON.JavaScript,
1715 bajtówDzięki @Neil za ten. Zadzwoń bez wprowadzania danych.
Wyjścia
{"undefined":0}
Stara wersja, 16 bajtów
Dzięki @ kamoroso94 za -1 w tej wersji
Wyjścia
{"":9000000000}
źródło
a
)_=>`{"a":${_}}`
daje w wyniku{"a":undefined}
dokładnie 15 znaków. Zauważ, że nie używasz żadnych danych wejściowych podczas wywoływania tej funkcjiundefined
jest to ważna wartość w formacie JSON, ale to łatwo ustalony przez co jej nazwę właściwości i stosując zerową wartość:_=>`{"${_}":0}`
.a
aby klucz był pustym ciągiem, poprawnym kluczem w JSON. 1 mniej bajtów.Brainfuck, 50 bajtów
Wyjścia
{"999999999999999999999999999999999999999999999999999999999999999999999999999999999":9}
. Zakłada interpreter, który ma 8-bitowe komórki i jest nieograniczony po lewej stronie. Wypróbuj online!źródło
Pyth - 5 bajtów
Wydruki
{"'abcdefghijklmnopqrstuvwxyz'": 10}
.Wypróbuj online tutaj .
źródło
Jolf, 9 bajtów
Wyjścia:
{"{¦q:¦q}":"{¦q:¦q}"}
. Wypróbuj tutaj!źródło
Pyth, 7 bajtów
Tworzy słownik zawierający pojedynczy klucz
"'abcdefghijklmnopqrstuvwxyz'"
i wartość0
:źródło
Partia, 16 bajtów
Wydruki
{"Windows_NT":0}
.źródło
///,
1514 znaków(Co najmniej wynik jest o
12 znaki dłuższy niż kod.)Wypróbuj online!
Dzięki:
Przykładowy przebieg:
Żeby był bardziej czytelny:
źródło
/a/{":1234}/aa
(wyjść{":1234}{":1234}
)R, 19 bajtów
Staje się nieco dłuższy, ponieważ trzeba uciec od cytatów
\"
. Co więcej,lh
jest jednym z wbudowanych zestawów danychR
i jest (o ile wiem) obiektem o najkrótszej nazwie, która zawiera 9 znaków potrzebnych do wypełnienia długości klucza. (edycja: okazuje siępi
, że robi to samo ze standardową opcją i zostałem pokonany przez @JDL, który był wystarczająco sprytny, aby uciec używając pojedynczych cudzysłowów zamiast dodatkowych ukośników odwrotnych)Opis
lh
w dokumentacji R to:która jest raczej nieoczekiwaną nazwą klucza, ale hej, działa i generuje dane wyjściowe:
Odpowiedź można porównać do wypełnienia klawisza „losowymi” literami, aby uzyskać wynik co najmniej 15 znaków (24 bajty):
źródło
cat('{"',lh,'":1}')
tak jak to zrobiłem powyżej (chociaż użyłempi
zamiastlh
). W poszukiwaniu zmiennych dwuliterowych natknąłem się na funkcję, oel
której istnieniu nigdy nie wiedziałem. Może być przydatny w przyszłości ...PowerShell
222014 bajtówWynik
Użycie stałej zdefiniowanej dla 1 TB w bajtach w celu osiągnięcia limitu znaków i wartości statycznej liczby całkowitej w celu uzyskania prawidłowego pliku Json. Dzięki TimmyD za zmniejszenie postaci o 5 poprzez usunięcie nadmiarowości.
Wcześniej Post 40 bajtów
Wynik
Pobiera tablicę liczb całkowitych i tworzy dla każdej pary parę klucz-wartość. Połącz przecinkami i zawiń zestawem nawiasów klamrowych.
źródło
05AB1E , 9 bajtów
Niestety 05AB1E nie ma obiektu słownika, więc musimy zbudować własny.
Wypróbuj online!
Wynik
źródło
Siatkówka, 11 bajtów
Wynik
Uwaga: wiodący nowy wiersz jest znaczący, ponieważ nic nie jest zastąpione wynikowym wyjściem, aby to zilustrować, użyłem nieprzerwanej spacji!
Wypróbuj online!
źródło
V , 9 bajtów
Wypróbuj online!
Bardzo proste. Przechodzi w tryb wstawiania, wprowadza następujący tekst:
Jest tak krótki, ponieważ
¹
powtarza następujący znak 9 razy.źródło
JavaScript (ES6) + jQuery, 15 bajtów
Ponieważ jQuery.
Wyjścia
{"function (a,b){return new n.fn.init(a,b)}":0}
po wywołaniu. Wypróbuj tutaj:Pokaż fragment kodu
źródło
alert()
ciebie nic nie wyprowadzaszDyalog APL , 9 bajtów
Wypróbuj online!
Rezultatem jest czysty obszar roboczy na moim komputerze
{"Category":"","DM":[],"EM":"","EN":0,"ENX":0,"HelpURL":"","InternalLocation":["",0],"Message":"","OSError":[0,0,""],"Vendor":""}
⎕JSON
przekonwertować na JSON⎕DMX
przycisk (powszechnie dostępny) D iagnostic M essage e x tendencję przedmiotuźródło
pieprzenie mózgu, 83 bajty
Wyjścia
{"333333333":3}
Prawdopodobnie istnieje inne krótsze rozwiązanie, ale jeszcze go nie znalazłem.
Wyjaśnienie:
Wypróbuj online
źródło
PHP, 19 bajtów
Wynik:
{"387420489":1}
https://eval.in/665889
Dzięki manatwork za wskazówki!
źródło
**
operator:pow(9,9)
→(9**9)
.{"<?=9**9?>":1}
Java 7, 36 bajtów
Java 8, 21 bajtów
Kod niepoznany i testowy:
Wypróbuj tutaj.
Wyjście (długość 15):
źródło
1
( patrzSystem.identityHashCode(Object)
).""
jako klucza i1e7
wartości.""
jest poprawnym kluczem przy próbie w walidatorze.this
kod. Co do""
z1e7
, to niestety nie będzie działać.1e6
wyjścia1000000.0
, ale zamiast tego1e7
wyjścia1.0E7
.R, 19 bajtów
Działa to w języku angielskim brytyjskim; w innych może wymagać +2 bajtów. (Edycja: prawdopodobnie nie wyświetla komentarzy).
Miałem nadzieję na coś sprytnego (być może wyciągnięcie linii kodu z wcześniej istniejącej funkcji, jak
q
), ale nic nie znalazłem. Wynik:Zauważ, że nie musisz uciekać podwójnych cudzysłowów w R, jeśli używasz pojedynczych cudzysłowów do cytowania łańcucha (i odwrotnie). To zachowanie jest jednak zależne od ustawień regionalnych. Spodziewałbym się też, że zadziała również w amerykańskim języku angielskim.
Wymaga to również, aby domyślną
digits
opcją było co najmniej sześć (co jest fabrycznie nowym ustawieniem domyślnym), ascipen
to co najmniej-digits
(fabrycznie nowe ustawienie to zero).źródło
options(quote)
który użytkownik może określić, ale domyślnie zależą od ustawień regionalnych.options('quote')
nie jest udokumentowane , zmiana go nie ma zauważalnego efektu i chociaż natknąłem się na dużą liczbę shenaniganów w RI, wątpię, czy opcje środowiska wykonawczego zmieniłyby sposób jego analizy. Może to oczywiście zmienić wynik - ale nie w kodzie w tej odpowiedzi.quote
,squote
itpRuby, 19 bajtów
Wynik:
źródło
puts
??1*9
to wciąż wystarczająco długo.Element , 18 bajtów
Wypróbuj online! Wyjścia
{"a":387420489}
To tylko trzy bajty krótsze niż naiwne rozwiązanie. Pierwsza połowa wyniku jest zakodowana na stałe (zbyt wiele znaków zmiany znaczenia, aby możliwe było zastosowanie innego podejścia), podczas gdy wartość jest obliczana jako
9^9
wystarczająca liczba.źródło
Perl 5,
1615 bajtówUżywa uniksowego znacznika czasu w chwili uruchomienia programu jako zawartości obiektu jednoelementowego. Daje prawidłowe dane wyjściowe, jeśli uruchomisz je później niż 10:46:39 3 marca 1973 r . Ale ponieważ nie możemy cofnąć się w czasie, wydaje się to uzasadnione.Wykorzystuje zmienną FORMAT_TOP_HANDLE
$^
która jest domyślnie ustawiona naSTDOUT_TOP
.Uruchom z
-E
flagą bez dodatkowych kosztów.Dane wyjściowe mają długość 16 bajtów.
źródło
Cheddar,
1714 bajtówZaoszczędź 3 bajty dzięki @ ConorO'Brien
Zwraca anonimowa funkcja
{":1234}{":1234}
, która jest poprawnym obiektem JSON:Wypróbuj online!
źródło
Pakiet Windows, 10 bajtów
Zmienna środowiskowa
OS
zawiera ciąg znakówWindows_NT
(we wszystkich systemach operacyjnych Windows od 2000 r., Zgodnie z tym pytaniem dotyczącym przepełnienia stosu)źródło
{"%OS%":5}
tak jakby to było polecenie, a Ty korzystasz z podstawowej funkcji śledzenia? To trudne.HQ9 +, 15 bajtów
Wyprowadza się sam. Myślałem, że 8-bajtowa odpowiedź będzie możliwa:
Dane wyjściowe
{":11QQ}{":11QQ}
, które są prawie poprawne JSON, ale11QQ
nie jest prawidłową wartością.HQ9 + nie jest poprawnym językiem programowania według standardów PPCG, ale PO zezwolił na języki inne niż programowanie.
źródło