Paul jest jednym z twoich belgijskich znajomych i chciałby, abyś stworzył program, który generuje co najmniej jeden z następujących pięciu ciągów :
12496=>14288=>15472=>14536=>14264
14264=>12496=>14288=>15472=>14536
14536=>14264=>12496=>14288=>15472
15472=>14536=>14264=>12496=>14288
14288=>15472=>14536=>14264=>12496
Przedstawia przyjaciół, z których jest najbardziej dumny i chciałby z nimi zjeść. Paul uważa również, że liczba 6 jest idealna i jest to jedyna liczba, którą warto użyć. Nie możesz więc używać w kodzie żadnej innej cyfry niż „6” (od 0 do 5 i od 7 do 9 są zabronione). Twój program nie może przyjmować żadnych danych wejściowych. Dane wyjściowe mogą zawierać śmieci przed i / lub po ciągu, ale powinny zawierać co najmniej jeden z powyższych ciągów.
Na przykład jest to poprawny wynik:
220frefze
f**14288=>15472=>14536=>14264=>12496**fczfe fz**15472=>14536=>14264=>12496=>14288**zfe
fzehth
„Bezczelnie” podpowiedziałem w pytaniu, jak mam się tego spodziewać, ale skąd to wie? Może jest lepszy sposób ... Mam nadzieję, że dobrze się bawisz.
To jest golf-golf: wygrywa najniższy wynik w bajtach.
Odpowiedzi:
05AB1E ,
1817 bajtówWypróbuj online!
Wyjaśnienie
W skrócie, każdą liczbę obliczamy jako
f(n+1) = sum(divisors(f(n)) - f(n)
źródło
Pyke, 16 bajtów
Wypróbuj tutaj!
Za każdym razem, gdy literał łańcuchowy znajduje się na końcu programu, zamienia go na token tuż przed nim, oszczędzając 1 bajt w takich przypadkach.
factors
Funkcja Pyke nie obejmuje samego numeru ani 1. Gdyby liczby były dozwolone, 1 bajt można zapisać, zastępującw$
go4
Pyke, 21 bajtów
Wypróbuj tutaj!
Utwórz listę wymaganych numerów i dołącz do nich. Niezbyt interesujące oprócz sztuczki ze sznurkami.
źródło
MATLAB, 44 bajty
Wypróbuj online!
Nie znalazłem wzoru w liczbach (i tak trudno byłoby użyć wzoru do niczego, ponieważ nie mogę używać liczb), więc po prostu pójdę na naiwne podejście.
'=>@EBIJ=@>DDIJ=A@C>IJ=@A?BIJ=@>B@'
jest łańcuchem,'12496=>14288=>15472=>14536=>14264'
gdy do wartości ASCII dodawane jest 12. Teraz wprowadź ten ciąg, odejmij6+6
i połącz z pustym ciągiem,''
aby przekształcić go w tablicę znaków.źródło
=>
.JavaScript (ES6), 57 bajtów / 47 znaków (UTF-8)
Dzięki user5090812 za 10 B oszczędzania
Wyjaśnienie
Najpierw tworzymy tablicę i wypełniamy ją znakami w ciągu
バ㟐㱰㣈㞸
. Następnie zapętlamy ciąg (a
ma wartość bieżącego elementu) i zmieniamy znak w kod znaku. Następnie łączymy wszystkie wartości w tablicy przez=>
.Stare: 67 bajtów
Wyjaśnienie
Najpierw tworzymy tablicę o długości 5. Następnie zmieniamy wartości tablicy przy każdym indeksie dla kodu znakowego znaku o tym samym indeksie w ciągu
バ㟐㱰㣈㞸
, które są liczbami wszystkich przyjaciół Paula w kolejności. Kiedy to otrzymaliśmy, łączymy tablicę razem i używamy=>
jako separatora.Stosowanie
Aby go użyć, po prostu uruchom to:
Wynik
źródło
Rubinowy, 36 bajtów (26 znaków)
Bo czemu nie. Nudne jak diabli.
starsza wersja - 53 bajty
Objaśnienie: kodowanie liczb w bazie 25 daje 5 sześcio-wolnych łańcuchów, aby je zdekodować, muszę tylko reprezentować liczbę 25, używając tylko 6: (6-1) (6-1) => ~ -6 ~ -6
źródło
Perl 6 ,
6359 bajtówDekoduje liczby z podstawy 25, ponieważ jest to jedyna podstawa obsługiwana przez
.parse-base
(od 2 do 36), gdzie żadna z nich nie ma nieprawidłowych cyfr.Dzięki Neil za -3 bajty.
Perl 6 ,
8275 bajtówDekoduje liczbę
15472
w podstawie 36, a następnie generuje sekwencję, obliczając każdą liczbę jako sumę właściwych dzielników poprzedniej liczby.Perl 6 , 69 bajtów (47 znaków) - niekonkurencyjny
Nie używa żadnej z zabronionych cyfr ASCII, zamiast tego używa cyfr Unicode z bloku arabskiego (po 2 bajty)! Te
{ }
interpolacje strunowe mieć pewność, że analizowany jako Perl 6 Liczba literały, a następnie stringified ich reprezentacje ASCII.Okej, to oszustwo - dlatego nie użyłem go jako mojej głównej odpowiedzi ... :)
źródło
--$/*$/
?--($/=6)*$/)
.Galaretka ,
54 bajtówDrukuje wszystkie pięć ciągów. Wykorzystuje fakt, że wyjście „śmieci” jest dozwolone i chowa pięć ciągów znaków w 10 3003 znakach wyjścia.
Jak to działa
źródło
C,
948477 bajtówGłupie proste. Specjalne podziękowania @Neil
f () {printf ("% d =>% d =>% d =>% d =>% d", '~' 'r' - 'd', '~' 'd' - 'h', ' ~ ' ' r '-' L ',' ~ ' ' z '+' d ',' ~ '*' t '-' P ');}źródło
char*m
wnętrze,for()
aby zapisać bajt, a także sprawia, że funkcja może być ponownie użyta (niezbędny warunek funkcji). Ponadto wyprowadzasz końcowy null;*++m
naprawiłoby to. Ponadto, można zaoszczędzić kilka bajtów przez odjęcie 60 zamiast 66:g(){for(char*m="!mnpuryzmpnttyzmqpsnyzmpqoryzmpnrp";*++m;)putchar(*m-66+6);}
.initial declaration used outside C99 mode
ale z przyjemnością upraszczam putchar. Dzięki!PHP,
736360 bajtówUruchom z
-nr
.trochę mniej leniwy: wziął ciąg lista
=>1(ascii)(ascii)
IE:
124
,96
,=>1
,42
,88
,=>1
,54
,72
,=>1
,45
,36
,=>1
,42
,64
;drukuj
=>1
według indeksu ciągów, dołącz kod asciiawaria
źródło
C ++, 92 bajty
źródło
PHP, 53 bajty
Zrzut szesnastkowy:
Wynik:
Wyjaśnienie:
Każda z pięciocyfrowych sekcji liczb całkowitych jest kodowana jako krótki znak endianu bez znaku, a następnie łączona razem, a wynik jest zgrywany. Zdarza się to wytwarzać parę bajtów, która nie ma żadnych obrażających cyfr, które są następnie zakodowane na stałe w ciągu. Aby wyodrębnić, rozpakuj strumień, rozpakuj dwubajtowe skróty, zinterpretuj każdy z nich jako ciąg i połącz się z nim
>=
.źródło
Java 8, 134 bajty
Gra w golfa:
Niegolfowany, pełny program:
źródło
Partia, 191 bajtów
Szacuję, że obliczenie każdej liczby wymagałoby co najmniej 32 bajtów, używając tylko
6
s plus kolejne 32, aby wydrukować je wszystkie, czyli już 192 bajty, więc wygrywam, obliczając polubowny łańcuch. Myślę też, że pięć%
sekund z rzędu to dla mnie rekord. Również zgrabna sztuczka wsadowa:%n%
jest podstawiana przedfor
obliczeniem pętli, więc pętla oblicza wszystkie współczynnikin
i odejmuje jen
, co powoduje negację pożądanego wyniku.źródło
Galaretka , 12 bajtów
Wyświetla czwarty ciąg i nic więcej.
Wypróbuj online!
Jak to działa
źródło
Python 2,
7872 bajtówEdycja - Dzięki Stewie Griffin za uratowanie 6 bajtów!
Innym rozwiązaniem byłoby wyprowadzenie wszystkich możliwych permutacji. OP twierdzi, że śmieci są w porządku.
Nadmiarowość jest zbyt duża w konwersji z
int
lublist
nastr
. Myślę, że byłoby to łatwiejsze w niektórych ezoterycznych językach, ale nie znam żadnego z nich.źródło