To wyzwanie dla gliniarzy i rabusiów. To jest wątek gliny. W gwint rabuś jest tutaj .
Jako policjant musisz wybrać dowolną sekwencję z OEIS i napisać program p, który wypisze pierwszą liczbę całkowitą z tej sekwencji. Trzeba także znaleźć kilka ciągów s . Jeśli wstawisz s gdzieś w p , ten program musi wydrukować drugą liczbę całkowitą z sekwencji. Jeśli wstawisz s + s w tej samej lokalizacji w p , ten program musi wydrukować trzecią liczbę całkowitą z sekwencji. s + s + s w tej samej lokalizacji wydrukuje czwartą itd. i tak dalej. Oto przykład:
Python 3, sekwencja A000027
print(1)
Ukryty ciąg ma dwa bajty .
Łańcuch jest taki +1
, ponieważ program print(1+1)
wypisze drugą liczbę całkowitą w A000027, program print(1+1+1)
wypisze trzecią liczbę całkowitą itp.
Policjanci muszą ujawnić sekwencję, oryginalny program p oraz długość ukrytego ciągu s . Rabusie łamią przesłanie, znajdując dowolny ciąg znaków do tej długości i lokalizację, w której można go wstawić w celu utworzenia sekwencji. Ciąg nie musi być zgodny z zamierzonym rozwiązaniem, aby być poprawnym pęknięciem, podobnie jak lokalizacja, w której jest wstawiany.
Zasady
Twoje rozwiązanie musi działać dla dowolnej liczby w sekwencji, a przynajmniej do rozsądnego limitu, w którym nie powiedzie się, ograniczenia pamięci, przepełnienie liczby całkowitej / stosu itp.
Zwycięski rabuś to użytkownik, który pęka najwięcej zgłoszeń, a remis jest tym, który pierwszy osiągnął taką liczbę pęknięć.
Zwycięski gliną jest glina z najkrótszych ciągów s , który nie jest pęknięta. Tiebreaker to najkrótsza p . Jeśli nie ma żadnych niezrackowanych zgłoszeń, policjant, który miał rozwiązanie niesprawdzone dla najdłuższych zwycięstw.
Aby zostać uznane za bezpieczne, rozwiązanie musi pozostać niezakłócone przez 1 tydzień, a następnie musi zostać ujawniony ukryty ciąg (i lokalizacja, w której należy go wstawić).
s nie może być zagnieżdżony, musi być konkatenowany od końca do końca. Na przykład, jeśli ów był
10
, każda iteracja pójdzie10, 1010, 101010, 10101010...
zamiast10, 1100, 111000, 11110000...
Dopuszczalne jest rozpoczęcie od drugiego składnika sekwencji zamiast od pierwszego.
Jeśli sekwencja ma skończoną liczbę terminów, przekroczenie ostatniego terminu może spowodować niezdefiniowane zachowanie.
Wszystkie rozwiązania kryptograficzne (na przykład sprawdzanie skrótu podłańcucha) są zakazane.
Jeśli s zawiera znaki spoza ASCII, musisz również określić używane kodowanie.
źródło
Odpowiedzi:
MATL , sekwencja A005206 . Pęknięty przez SamYonnou
Wypróbuj online!
Ukryty ciąg ma 8 bajtów .
źródło
Python 2 , sekwencja A138147 ( pęknięty )
Wypróbuj online!
Ukryty ciąg ma 7 bajtów . Sekwencja przebiega:
źródło
Beczka , sekwencja A000045
Ukryty ciąg ma ≤ 6 bajtów (w celu dostosowania do zaktualizowanych reguł crackowania)
źródło
Pęknięty
Brain-Flak , sekwencja A000290 (liczby kwadratowe)Wypróbuj online!
Ukryty ciąg ma 6 bajtów .
Śmieszny fakt:
„Odkryłem” tę właściwość, grając w tę opartą na uderzeniu mózgu grę . Ukryty ciąg był losowo generowanym przedmiotem, który, jak odkryłem, był bardzo przydatny.
źródło
Java 8+, sekwencja A010686 ( pęknięty przez xnor )
Funkcja lambda.
Ukryty ciąg ma ≤ 5 bajtów
źródło
^2<<1
ale to jest to samo.Python 3 , sekwencja A096582
To naprawdę trywialne, ponieważ wcześniej nie próbowałem wyzwań gliniarzy i rabusiów.
Ukryty ciąg ma 3 bajty.
źródło
Pyret , sekwencja A083420 , pęknięty
Ukryty ciąg ma 4 bajty lub mniej.
źródło
Python 3 , sekwencja A014092 - ( pęknięty )
Wypróbuj online!
Ukryta sekwencja ma 82 bajty .
Mój zamierzony kod (który nie opiera się na hipotezie Goldbacha) to:
Pęknięty przez NieDzejkoba , który używa hipotezy Goldbacha, aby rozwiązać ją w magicznej 42 postaciach. Dobra robota!
źródło
Dalej (gforth) , A000042 - ( pęknięty )
Wypróbuj online!
Ukryta sekwencja ma 5 bajtów i może z łatwością obsłużyć setki terminów.
Możliwe jest również rozwiązanie jednobajtowe, które pęka z powodu przepełnienia liczb całkowitych. Powiedziałbym, że jest to żenująco trywialne. Chociaż tekst wyzwania, pod pewnymi interpretacjami, może pozwolić ci nazwać to pęknięciem, zachęcam cię, abyś tego nie robił.
źródło
V , sekwencja A000290 . Pęknięty przez szarlatan krów
Wypróbuj online!
Ukryty ciąg ma 5 bajtów .
źródło
Kalkulator biurkowy , sekwencja A006125
Ukryty ciąg ≤ 12 bajtów .
źródło
Brain-Flak , sekwencja A000984 (centralne współczynniki dwumianowe)
Wypróbuj online!
Ukryty ciąg ma 36 bajtów lub mniej.
źródło
Python 3 , A268575
Wypróbuj online!
Ukryta sekwencja ma 102 bajty.
źródło
Haskell , sekwencja A083318 ( pęknięty )
Wypróbuj online!
Ukryty ciąg ma 5 bajtów . Sekwencja przebiega:
źródło
Brain-Flak , sekwencja A000578 (numery kostek)
Wypróbuj online!
Ukryty ciąg ma 16 bajtów
źródło
Pęknięty
cQuents , sekwencja A003617Wypróbuj online!
Ukryty ciąg ma 1 bajt .
źródło
Unefunge-98 (PyFunge) , sekwencja A000108
Wypróbuj online!
Ukryta sekwencja ma 19 bajtów .
źródło
MATL , sekwencja A000796 . Pęknięty przez SamYonnou
Wypróbuj online!
Ukryty ciąg ma 3 bajty .
źródło
Python 3 , A008574 , cracked przez xnor
Wypróbuj online!
Wstaw 4 bajty, aby zakończyć A008574. A008574: a (0) = 1, a następnie a (n) = 4n.
źródło
AsciiDots , 36 bajtów, A019523
Wypróbuj online!
Ukryty ciąg ma 12 bajtów .
źródło
Haskell , sekwencja A014675 , pęknięty przez nich
Wypróbuj online!
Ukryta sekwencja ma 35 bajtów .
Oto moje zamierzone rozwiązanie:
źródło
VDM-SL , sekwencja A000312
Ukryty ciąg ma 33 bajty lub mniej
źródło
Haskell, A000045 (Fibonacci) - Pęknięty
Mam rozwiązanie z aż 23 bajtami. Nie oczekuję, że będzie to bezpieczne przez długi czas, ale wymyślenie tego było super zabawne.
Rozwiązanie:
źródło
Java 8+ , 1044 bajty, sekwencja A008008 (Bezpieczny)
Wypróbuj online!
Można rozwiązać za pomocą ukrytego ciągu o rozmiarze 12 . Zdecydowanie można grać w golfa więcej, ale nie ma szans, żeby to faktycznie wygrało. Chciałem tylko przyczynić się do szacunku dla liczby 8008.
Uwaga: zanim ktokolwiek narzeka, że sekwencja jest zakodowana na stałe, przetestowałem to do pierwszego składnika, który odbiega od zakodowanego na stałe (13. termin = 307) i robi się to poprawnie, choć powoli. Dlatego też używa
long
zamiast tegoint
, inaczej przepełni się przed tym terminem.Aktualizacja (12 lipca 2019 r.) : Zaktualizowana, aby była nieco bardziej wydajna. Oblicza teraz 13. termin w ciągu 30 sekund na moim komputerze zamiast 5 minut.
Aktualizacja (17 lipca 2019 r.) : Naprawiono błędy w obwiedniach pętli dla
g
funkcji i obwiedniach długości tablicy na dolef
funkcji. Te błędy powinny ostatecznie spowodować problemy, ale nie na tyle wcześnie, aby zostać złapanym przez sprawdzenie wyniku. W obu przypadkach, ponieważ obecność tych błędów przez 5 dni w grze mogła wprowadzić w błąd niektórych ludzi na tyle, że nie byli w stanie rozwiązać tej zagadki, nie mam nic przeciwko przedłużeniu „bezpiecznego” terminu do 24 lipca na przesłanie tego zgłoszenia.Aktualizacja (18 lipca 2019 r.) : Po kilku testach potwierdziłem, że przepełnienia zaczynają się po 4 semestrze w sekwencji i zaczynają wpływać na ważność danych wyjściowych po 19 semestrze. Również w programie, jak tu jest napisane, każdy kolejny termin zajmuje około 5 razy dłużej niż poprzedni. 15. kadencja trwa około 14 minut na moim komputerze. Tak więc obliczenie 19. semestru przy użyciu programu w formie napisanej zajęłoby 6 dni.
Ponadto, oto kod z rozsądnymi odstępami / wcięciami, więc jest trochę łatwiej czytać, jeśli ludzie nie mają pod ręką IDE z automatycznym formatowaniem.
Rozwiązanie
źródło
Brachylog , 7 bajtów ( Brachylog SBCS ), A114018 ( Cracked )
Złam to online!
Ciąg ma 2 lub mniej bajtów.
źródło
b
jest dość podejrzane…C # (.NET Core), A003678, 29727 bajtów (bezpieczny)
Ukryta sekwencja ma 4 bajty lub mniej.
źródło
.code.tio(1,284): error CS0103: The name 'CodeDomProvider' does not exist in the current context .code.tio(1,390): error CS0246: The type or namespace name 'CompilerParameters' could not be found (are you missing a using directive or an assembly reference?)
System.CodeDom
, a także tworzy pliki, więc nie będzie działać na tioSystem.CodeDom
Prolog (SWI) , 28 bajtów, A011557 , bezpieczny
Wypróbuj online!
(Nie jestem do końca pewien, co się liczy jako pełny program dla Prologa, ale działa to jako program w TIO.)
Ukryty ciąg ma 5 bajtów lub mniej.
Jestem trochę zaskoczony, że przetrwał tydzień ... Ukryty sznur jest
źródło