Niedawno założyłeś konto w podejrzanej witrynie hazardowej, gdzie za opłatą 25 dolarów spłacą ci losową kwotę od 0 do 50 dolarów. Po dwukrotnym zdobyciu około 5 dolarów decydujesz się udowodnić, że strona jest oszustwem. Po uzyskaniu dostępu do ich zewnętrznej zapory z domyślnym hasłem znajdziesz drogę do ich serwera bazy danych i dowiesz się, gdzie przechowywane są wartości minimalnych i maksymalnych kwot. Postanawiasz podłączyć 25 '9 jako wartość maksymalną, ale pojawi się komunikat o błędzie informujący, że maksymalna wartość musi być typu „uint64”. Jednak teraz zauważasz, że niektóre klawisze numeryczne wydają się nie wpisywać poprawnie w zdalnej konsoli. Wyzwanie pojawia się przed tobą prawie jak na stronie Q + A.
używając tylko wygodnie zainstalowanych programów do testowania i wykonywania określonego języka, wypisz maksymalny rozmiar niepodpisanej 64-bitowej wartości całkowitej, jednak prawie wszystko oprócz narzędzi programistycznych jest zepsutych na tym komputerze, pozostawiając cię bez użycia liczb 1, 2,4,6,8 - zarówno w kodzie źródłowym, jak i literałach, zauważasz również, że wydaje się, że wykonanie programu dla każdego dodatkowego fragmentu kodu zajmuje znacznie więcej czasu, więc lepiej skróć go, jeśli chcesz się wzbogacić przed rysunkiem!
Wyzwanie
Napisz program, który generuje 18446744073709551615, maksymalną wartość 64-bitowej liczby całkowitej bez znaku, jako liczbę lub pojedynczy ciąg.
Twój kod źródłowy nie może zawierać żadnego ze znaków „1”, „2”, „4”, „6” lub „8”
jeśli twój język nie ma niepodpisanej 64-bitowej liczby całkowitej lub ekwiwalentu, dane wyjściowe mogą być w formacie łańcuchowym lub w inny sposób, ale muszą być powyższą liczbą.
to jest golf golfowy, więc wygrywa najkrótszy kod w każdym języku!
Odpowiedzi:
Wosk pszczeli , 3 bajty
Wyjaśnienie:
Wypróbuj online!
Ten język jest idealny do tego wyzwania.
Oto fragment strony Esolang na temat wosku pszczelego :
To w zasadzie nie podpisane długie.
EDYCJA: Nadal oczekuję, że Dennis przerwie mnie 2-bajtowym rozwiązaniem.
źródło
C, 26 bajtów
Wyświetla
unsigned long
wartość.Wymaga rozmiaru
long
64 bitów.źródło
print~0
.~0l
powinno działać.sizeof(long) * CHAR_BIT == 64
. Racjonalne założenie dla golfa, ale warte podkreślenia.CJam (4 bajty)
Demo online
Oblicza to 16 16 - 1 przy użyciu wbudowanego
G
16 i operatora dekrementacji(
.źródło
64-bitowy SBCL Common Lisp, 18 bajtów
most-positive-word
Najbardziej pozytywnym słowem w 64-bitowym kompilatorze jest 64uint. To jest coś.
źródło
Python3 REPL, 12 bajtów
W REPL:
~-(~-3<<9*7)
Poza REPL:
print~-(~-3<<9*7)
<--> Python2!Oto kolejny jeden na 17 bajtów:
~-(~-3<<ord("?"))
.Wyjaśnienie
Nic nadzwyczajnego. Oto podział:
Wynikowe wyrażenie jest z grubsza (ale nie do końca)
~-(2<<63)
->(2**64)-1
. Korzystam tu dwa razy z kijanki . Porada golfowa na ten temat jest tutaj .Jest również
sys.maxint
w Python2, którego można używać, ale nie będę na to patrzeć.repl.it <- link testujący.
źródło
~-(~
częścią są oczy pierwszego kota? Nie widzę dobrze drugiego kota ...pne,
1513 bajtówZaoszczędzono 2 bajty dzięki manatwork.
Nic szczególnego, tylko (16 ^ 16) -1.
źródło
(a=9+7)^a-3/3
dc , 7 bajtów
Wydaje mi się, że języki oparte na stosie mogą pozostawić odpowiedź w górnej komórce stosu, podobnie jak zwracana wartość funkcji. Jeśli konieczne jest wydrukowanie jawne, dodaj
p
na końcu kodu.Wypróbuj online!
Oblicza (2 64-1 ) za pomocą kilku lew:
2
jest podany jako liczba cyfr (Z
) znalezionych w liczbie całkowitej 10 (A
)64
jest podany jako5E
. Domyślnie dc używa 10 jako podstawnika wejściowego. Mimo to może przyjmować liczby w zapisie szesnastkowym, ale zostaną one przeliczone inaczej, niż można się spodziewać. Przykład: (5E) domyślnie = (5E) (podstawa wejściowa = 10) = (5 * 10 1 ) + (14 (E) * 10 0 ) = 50 + 14 = 641
jest podawana jako głębokość stosu (z
), ponieważ wtedy była obecna tylko (2 64 )Alternatywna historia:
Rozwiązanie w DC: obliczenia (16 16-1 ), wciąż 7 bajtów!
Wypróbuj online!
źródło
Galaretka , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
05AB1E , 4 bajty
Wyjaśnienie:
Wreszcie! Szansa na użycie
05AB1E
wbudowanych mocy dla potęg dwóch!Wypróbuj online!
Kolejna 4 bajtowa odpowiedź:
Wyjaśnienie:
Wypróbuj online!
(jeśli ktoś się zastanawia, to pytanie jest starsze niż wszystkie pozostałe 4-bajtowe odpowiedzi)
źródło
64o<
ale jeszcze go nie znalazłem. Coś jak'@Ço<
z kreatywnym push 64 ... Jeśli uda ci się przepchnąć 64 z 1 bajtem, możesz dostać 3, to jest punkt, który próbuję zrobić.MATLAB / oktawa, 5 bajtów
@Sanchises opublikowało doskonałą odpowiedź MATLAB, jednak jest to zupełnie inne podejście, więc i tak opublikuję:
W programie MATLAB
tic
zwraca liczbę milisekund, które minęły od otwarcia programu. Zasadniczo zwracana wartość jestuint64
rodzajem. Pozwala to uniknąć koniecznościuint64
przesyłania numeru z domyślnego typu MATLAB-adouble
.Każda liczba podzielona przez 0 w MATLAB-u jest uważana za nieskończoność, która dla typów zmiennoprzecinkowych MATLAB reprezentuje to jako maksymalną wartość całkowitą dla tego typu.
Działa to również z Octave, jednak w zależności od używanego interpretera może wypluć ostrzeżenie „dzielenie przez zero”. Możesz wypróbować kod online tutaj, ponieważ mówię, że otrzymujesz ostrzeżenie / 0, które nie pojawia się w MATLAB.
źródło
tic==0
przy starcie 😉)bc ,
18, 16 bajtówźródło
-3/3
dostać-1
?PHP, 16 bajtów
To bardzo przypomina odpowiedź Ven: https://codegolf.stackexchange.com/a/110751/38505
https://repl.it/Frcy/0
źródło
bash
zbyt:printf %u $[~0]
.~0
to-1
, co jest1111111111111111111111111111111111111111111111111111111111111111
w formacie binarnym, w 64 bitów, w porównaniu11111111111111111111111111111111
z 32 bitów, a liczba plataform są zależne.MATLAB / Octave, 22 bajty
Wypróbuj online!
eye
służy do tworzenia macierzy jednostek (macierz z1
na przekątnej, w przeciwnym razie zero). Bez argumentów tworzy to1x1
macierz jednostek lub, innymi słowy, tylko1
. Pobiera opcjonalny argument, którym jest typ danych („klasa” w terminologii MATLAB) utworzonej macierzy. W związku z tym prosimy1
o klasęuint64
i dzielimy ją przez zero, co daje w wynikuInf
MATLAB, który zostaje obciętyintmax('uint64')
.Wektor
['~rw}?='-9 '']
ocenia na'uint64'
. Łączenie pustego znaku z wektorem jest o 1 bajt krótsze niż użyciechar('~rw}?='-9)
.Rozumowanie w kierunku tej odpowiedzi: wbudowana
intmax
niestety ocenia maksymalnie 32-bitową liczbę całkowitą ze znakiem. Oczywistą kolejną opcją jestuint64()
, która zawiera zakazane postacie. Alternatywą jest użycie funkcji, która przyjmuje ciąg znaków jako typ danych. Oczywistymi kandydatami sąintmax
icast
, ale alternatywy obejmujązeros
,ones
ieye
.Uwaga: MATLAB jest domyślnie instalowany na praktycznie wszystkich podejrzanych stronach hazardowych.
źródło
JavaScript,
39383332 bajtyEdycja: Zapisano 5 bajtów dzięki @Arnauld.
źródło
Java 8, 30 bajtów
Przetestuj online
źródło
1846
.BF, 108 bajtów
Jeśli każde polecenie jest uważane za 3 bity, jest to potencjalnie 41 bajtów.
źródło
+-<>[].,
Retina ,
2827 bajtówOszczędność 1 bajtu dzięki Kritixi Lithos
Wypróbuj online!
Wyjaśnienie
Zastępuje nieistniejące / puste wejście tym ciągiem. Ten konkretny ciąg został wygenerowany przez „odwrotność” tego programu. Koduje
a
poprzezj
jak0
through9
, odpowiednio.Jest to
T
etap okupacji.l
Id
są zestawy znaków używane do transliteracji.l
reprezentuje małe litery,d
wszystkie cyfry. Więc odwzorowuje zabcdefghij
powrotem na0123456789
.źródło
d
zamiastEO
)C ++, 46 bajtów.
Pierwszy raz uprawiam golfa kodowego, ale jestem z siebie całkiem zadowolony. Z przyjemnością przyjmę każdą krytykę / sugestie :)
źródło
Brain-Flak ,
64, 62, 58, 54 bajtówWypróbuj online!
[Wypróbuj online!]
Cztery bajty zapisane dzięki @Riley!
Wyjaśnienie:
Dla przypomnienia próbowałem pchać 32 i poczwórnie, ale to ta sama liczba bajtów.
źródło
()
z 64 odepchnąć 1:((((((())()()()){}){}){}){})
((((((())()()()){}){}){}){}[()]){({}<(({}){}())>[()])}{}
((((((<>)()()()()){}){}){}){}){({}<(({}){}())>[()])}{}
N*2+1
tego zrobić zamiast(N+1)*2-1
?C # 6, 31 bajtów
Prawie tak samo jak Java.
C # 5, 56 bajtów
źródło
Func<ulong>
()=>~0UL;
Func<int, ulong>
aby zapisać bajt:_=>~0UL;
i myślę, że nadal będzie poprawny.Dalej (gforth),
1197 bajtówWypróbuj online
true
jest taki sam jak-1
.U.
wypisuje liczbę jako liczbę całkowitą bez znaku.Działa to na TIO, być może dlatego, że ma architekturę 64-bitową? Nie jestem pewny. Jeśli
-1 U.
na przykład uruchomię repl.it, dostanę 2 ** 32-1. Jeśli repl.it obsługuje liczby całkowite o podwójnej długości,UD.
zamiast tego użyje ich wyprowadzenie .źródło
-3 3 / U.
true U.
(co również ładnie rytmuje)true
, ponieważ jestem tak przyzwyczajony do używania0
i1
. Dzięki.Python3 REPL, 11 bajtów
Jak to działa
źródło
PowerShell ,
2914 bajtówWypróbuj online!
Dzięki @ n0rd za grę w golfa w połowie.
Wykorzystuje to wbudowany
PB
operator jednoargumentowy , który w zasadzie działa jako „pomnóż poprzednią liczbę przez1125899906842624
” (tj. Ile bajtów znajduje się w pebibajcie). Jest to połączone z heksem0xC000
lub49152
tak49152 pebibytes
. Dzielimy to3
, poddając18446744073709551616
i odejmując,3/3
aby uzyskać końcową wartość.źródło
"0x$(7-3)000PB-9/9"|iex
0xC000PB/3-3/3
PB
ten sposób. Dzięki!JavaScript (ES6), 50 bajtów
źródło
'䠎ᴐIF╏ɧ'
i usunąć-27
Zestaw x64, 7 bajtów
hex (zmontowany): 4831C048FFC8C3
zdemontowany, skomentował:
XOR RAX,RAX ;Zero the value of 64 bit register RAX DEC RAX ;Decrement the value of RAX RET ;Return this value
RAX jest rejestrem 64-bitowym i najczęściej służy do zwracania argumentów liczb całkowitych (np. C). Zmniejszając 1, jego wartość zmienia się z 0 na ... 2 ^ 64-1, co jest dokładnie potrzebne.
Chociaż złożony plik binarny zawiera jedynki, czwórki i ósemki, zestaw nie zawiera, ale złożony plik jest liczony w zestawie, więc się liczy? Ow, moja głowa.
Również wyjście jest w tym przypadku wartością zwracaną.
źródło
Brain-Flak ,
223193 bajtówObejmuje +1 za
-A
-30 dzięki DJMcMayhem
Wypróbuj online!
To po prostu przesunęło wartości ASCII i drukuje jako znaki.
Dla porównania, do wygenerowania rzeczywistej liczby potrzeba 338 bajtów przy użyciu meta-golfisty Integer .
Wypróbuj online!
źródło
[]
. Na przykład:((((((((((((((((((((((((()()()){}){}()){}){}())[()()()()])[][]())[[]()()])[]))()()()())[[]()()])[][()])[()()()()])()()()())[(()()()){}()])()()()()))()()())[()])[()()]))()()()())[(()()()){}()])
(Prawdopodobnie więcej mi brakuje)-A
ponieważ standardowe wywołanie już zawiera-f
, więc-fA
zamiast tego możesz zrobić tylko jeden[]
tym, kiedy na to spojrzę. Dzięki.MATL, 8 bajtów
Prawdopodobnie można to poprawić, ale nie znam jeszcze ciągów znaków i typów w MATL.
Wypróbuj na matl.suever.net
Wyjaśnienie:
źródło
cast
został użyty, ale ma sens, jeślitypecast
zostanie użyty. Dzięki za wyjaśnienie.JavaScript 55 bajtów
kod generuje, a następnie ostrzega ciąg 18446744073709551615 za pomocą operacji bitowych
590300 >> 5
18446 59530-3 >> 3 7440
7370955
3 * 59 * 73 >> 3 1615
źródło
2588673709551615
dla mnie ...alert(0xafebff0+'7370955'+(3*59*73>>3))
działa dobrzeSzybki, 8 bajtów
poza placem zabaw / repl - 15 bajtów
źródło
TI-Basic, 10 bajtów
źródło