To jest wątek gliniarzy. Wątek rabusiów jest tutaj .
Wyzwanie polega na stworzeniu programu, który będzie działał wiecznie bez zatrzymywania 1 , chyba że otrzyma określone wejście lub wejście 2 . Jeśli otrzyma ten wkład, musi zakończyć się w skończonym czasie 3 . To jest gra w golfa , więc wygrywa najkrótsza odpowiedź, która nie została złamana przez złodzieja w ciągu tygodnia od opublikowania. Po upływie tygodnia zaznacz swoją odpowiedź jako bezpieczną i pokaż wejście zatrzymania (w a > ! spoiler quote
). Jeśli złodziej złamie twoje zgłoszenie, zaznacz je jako pęknięte i pokaż wejście zatrzymania (in a > ! spoiler quote
).
Preferowane są zgłoszenia, które można uruchamiać i krakować na TIO . Zgłoszenia, których nie można uruchomić ani nie można ich krakować w TIO, są dozwolone, ale prosimy o dołączenie instrukcji ich pobrania / uruchomienia.
Wprowadź deterministyczny i jednolity wkład we wszystkich przebiegach. Zobacz ten meta post, aby uzyskać szczegółowe informacje.
Proszę, nie „implementuj RSA” ani niczego innego dla rabusiów. Używaj niejasnych języków i funkcji, a nie nudnego szyfrowania i mieszania. Nie mogę tego egzekwować za pomocą reguł, ale możesz spodziewać się ulewnych głosów negatywnych, jeśli wszystko, co robisz, to sha(input) === "abcd1234"
.
1 Zakładając, że komputer się nie wyłącza, nie pęka, nie daje się pochłonąć słońcu, przegrzewa się w wyniku śmierci cieplnej wszechświata ani nie przekroczył limitu czasu TIO z lat 60.
2 Program musi zatrzymać się na co najmniej jednym wejściu. Tak długo, jak zapętla się na zawsze na jednym wejściu i zatrzymuje na innym, działa.
3 Musi to być <60 sekund, aby kod mógł zostać przetestowany na TIO.
Szukasz nieskradzionych zgłoszeń?
fetch("https://api.stackexchange.com/2.2/questions/135363/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
źródło
R
natychmiast błędy, nawet bez wchodzenia w funkcję pęknięcia. Twierdziłbym, że to nie liczy się jako zakończenie funkcji.Odpowiedzi:
Malbolge, 128 bajtów, złamany przez KBRON111
Baw się dobrze!
(Tak, nauczyłem się Malbolge tylko z tego powodu. Tak, zajęło absurdalnie dużo czasu, aby w końcu zacząć działać. I tak, to było całkowicie tego warte.)
Owinięty, dzięki czemu można zobaczyć go w pełnej, er, „chwale”:
Użyłem tego tłumacza do przetestowania go; Nie jestem pewien, czy to ma znaczenie, ale pomyślałem, że podam to na wszelki wypadek.
źródło
6
, a trzeci jest jednym z czterech:!
,#
,/
i-
. Ale kombinacja nie wydaje się zatrzymać. Przedstawiłem to tutaj, może ktoś mądrzejszy znajdzie rozwiązanie. Jeśli ktoś chce, opublikuję jutro, jak dostałem się do tych informacji. EDYCJA: Teraz, gdy o tym myślę, mój program napisany dla celów inżynierii wstecznej może mieć błąd, a pierwsze wejście może być czymś innym niż6
. Trzecia postać wciąż stoi.JavaScript (ES6), 17 bajtów, pęknięty
Na TIO, ponieważ nie wiem, jak zrobić Node.js readline na TIO, po prostu wstaw dane wejściowe w wywołaniu funkcji. Jest to oczywiste dla każdego, kto to wie, a nie dla każdego, kto nie wie.
Wypróbuj online!
Odpowiedź:
źródło
NaN == NaN
jest fałszywy w wielu językach innych niż JavaScript. Nie nazwałbym tego „dziwactwem językowym”.NaN != NaN
jest to cecha liczb zmiennoprzecinkowych+
lubmax()
, ale większości ludzi to nie obchodzi: P)JS (ES6), 67 bajtów ( pęknięty )
Myślę, że się nie zepsułem, może to mieć łatwe rozwiązanie, którego nie widziałem.
Doceniam wszelkie opinie, jest to jeden z moich pierwszych postów
źródło
x
iy
są skończone, ale nie będę zmieniać, ponieważ został już popękane. Mogło być 38 bajtówPython 3.4, (40 bajtów) Cracked
źródło
x==x
zmienną o nazwieto_be
, abyś mógł zrobić odniesienie Hamleta.JavaScript (NIE node.js)
Żądane przesłanie nie używa rzutu.
Wskazówka dotycząca pożądanego pęknięcia:
Pożądane pęknięcie:
źródło
throw
(choć nadal daje błąd)throw
, tym razem wydaje mi się, że Grant Davis nie działał dla mnie. NadalTypeError
s.x=>{try{for(;x+"h";)}catch(e){for(;;)}}
, aby wszelkie błędy skutkowały nieskończoną pętlą, więc brakujące błędy funkcji prototypu (lub jakiekolwiek błędy) spowodowałyby nieskończoną pętlę.C (gcc) , 75 bajtów Cracked
Wypróbuj online!
Nigdy wcześniej nie pisałem w policji i złodziejach. Mam nadzieję, że nie jest to zbyt oczywiste.
Rozwiązanie:
źródło
JavaScript (w przeglądarce), pęknięty 79 bajtów
Powinieneś uruchomić go w najnowszej przeglądarce (takiej jak najnowszy Firefox ESR, najnowszy Firefox, najnowszy Chromium). Działające na starych przeglądarkach (takich jak Netscape 2, IE 4) się nie liczą.
Uwaga: zatrzymane przez przeglądarkę z powodu przekroczenia limitu czasu nie liczą się tutaj.
Zawsze bądź ostrożny, aby nie upaść przeglądarki podczas testowania tych kodów i szczęśliwego rabowania ^ _ ^
źródło
setTimeout
parametr nie działa.var key=(()=>{setTimeout(args);return null})()
a następniecrackme(key)
PHP (cracked Vicente Gallur Valero), 65 bajtów
Wypróbuj online!
Trudniejsze niż mogłoby się wydawać. Edytowane, aby było możliwe w TIO, kosztem kilku bajtów. Odbiera dane wejściowe za pośrednictwem
$argv[1]
.źródło
Łuska , 5 bajtów popękanych
Wypróbuj online!
Trochę wyjaśnienia, ponieważ ten język jest wciąż całkiem nowy:
←ø
pobiera pierwszy element pustej listy: zwraca wartość, która może przyjmować dowolny typ, czy to konkretny typ, czy funkcję, która zostanie następnie zastosowana do danych wejściowych.∞
tworzy nieskończoną listę złożoną z kopii poprzedniego wyniku (co w większości przypadków będzie oznaczać listę nieskończonych zer).↑ε
pobiera elementy z tej listy, o ile są one „małe”, tj. ich wartość bezwzględna wynosi ≤1; na nieskończonej liście zer nigdy się nie zatrzyma.źródło
Braingolf , 4 bajty ( Cracked )
Wypróbuj online!
Suuuper jest łatwy, ale
zobaczmy, ile to zajmieOdpowiedź:
źródło
Ruby , 31 bajtów ( cracked przez Eric Duminil )
Wypróbuj online!
Zauważ, że to musi być uruchomione w środowisku, w którym nie ma końca nowej linii, w przeciwnym razie
gets
nie jest możliwe, aby zatrzymać (myślę), ponieważ wszystko, co kończy się na nowej linii, popełni błąd i uderzy na ratunek.źródło
3.methods
zwraca5
ani nie opuszcza pętli.5
aby zrównoważyć go, aby pomyśleć, że poprawna odpowiedź wiązałaby się z funkcją, którą wykonał ...Bash, 25 bajtów ( pęknięty )
Inspirowany przez Dennisa. Wypróbuj online.
źródło
Bash 4.2, 14 bajtów ( pęknięty )
Spróbujmy jeszcze raz.
To nie działa w TIO, który używa Bash 4.3. Dane wejściowe są za pomocą argumentów wiersza polecenia.
W Linuksie i przy zainstalowanym gcc Bash 4.2.53 można pobrać i zbudować w następujący sposób.
źródło
Retina , 78 bajtów ( pęknięty ) ( pęknięty z zamierzonym rozwiązaniem )
Pisanie było całkiem fajne, mam nadzieję, że łamanie jest fajne
Wypróbuj online!
Pęknięty niezamierzonym roztworem i zamierzonym rozwiązaniem w ciągu minuty od siebie. Jeden opublikowany jako pierwszy, drugi jako pierwszy.
Zamierzone rozwiązanie:
źródło
Node.js, 23 bytes ( Cracked )
Rozwiązanie Granta Davisa
Moje rozwiązanie
źródło
Java 8, 99 bajtów, pęknięty
To jest lambda tego typu
Consumer<String>
.Nie golfowany:
Wypróbuj online! (zwróć uwagę, że program testowy ulegnie awarii przy pustym wejściu, ale sama lambda nie!) (również użyj „argumentów”, a nie „danych wejściowych” na TIO, ponieważ program testowy używa argumentów, a nie STDIN)
Zamierzona odpowiedź:
źródło
Bash 4.2, 10 bajtów ( pęknięty )
To nie działa w TIO, który używa Bash 4.3. Dane wejściowe są za pomocą argumentów wiersza polecenia.
W Linuksie i przy zainstalowanym gcc Bash 4.2.53 można pobrać i zbudować w następujący sposób.
źródło
Java: 1760 ( Cracked )
Wydaje mi się, że gra w golfa jest zbyt wredna, więc po prostu zaciemniłem nazwy zmiennych i sprawiłem, że stały się „nieuporządkowane”. W rzeczywistości jest to tak wredne, że z czasem będę publikować podpowiedzi, tak że mogę zobaczyć, jak pękają.
Wskazówka 1: Teoretycznie ma nieskończenie ważne dane wejściowe, ale jest taka, która jest najbardziej „poprawna”
Wypróbuj online!
źródło
Braingolf , 18 bajtów Cracked
Wypróbuj online!
Liiiitle trochę trudniejszy niż ostatni, potem zacznę pisać prawdziwy
źródło
i
nie działa.£
). A dlaczego nie-1
działa? To trudne.JavaScript (ES7), 41 bajtów ( zhakowany i pęknięty )
Edycja: naprawiono, aby zapobiec awariom, gdy nie otrzymano żadnych danych wejściowych (dziękuję @ totalnie człowiekowi za zauważenie)
Prawdopodobnie istnieje kilka rozwiązań, ale oczekiwane jest stosunkowo proste.
Zamierzone rozwiązanie:
źródło
Bash + Utils (Cracked by Dennis), 74 bajty
Mam nadzieję, że podoba ci się smoła, ponieważ jest to jedyne narzędzie, którego możesz użyć.
Wypróbuj online!
Zamierzony crack
źródło
Mathematica,
3626 bajtów ( pęknięty )Bardzo krótka pętla,
#0[#;∞]
która będzie się uruchamiać w kółko, aż do awarii jądra ... (Chodzi o$IterationLimit
to, aby utknąć na zawsze w przypadku większości danych wejściowych).Wypróbuj na Wolfram Sandbox! - jeśli utkniesz w nieskończonej pętli, możesz poczekać, aż upłynie limit czasu lub możesz nacisnąć kwadratową ikonę „przerwać ocenę” po lewej stronie tytułu notesu
(unnamed)
.UWAGA : ta funkcja zmienia twoje
$IterationLimit
ustawienia.źródło
JavaScript (Node.js), 18 bajtów ( pęknięty )
Wypróbuj online! Odpowiedź:
źródło
Symbol()
działałoby.C #, 118 bajtów ( pęknięty )
Nie spodziewam się, że to potrwa zbyt długo, ale jest bardziej niezręczne niż się wydaje.
źródło
C, 140 bajtów ( pęknięty )
Mamy nadzieję, że nie ma zbyt wielu danych wejściowych, które nawet nie są tak bliskie zamierzonemu, ale zobaczmy.
Wypróbuj online!
źródło
JavaScript (ES7), 73 bajty ( Cracked !)
Nie poszukiwane rozwiązania: brutalna siła. Pożądany crack wymaga matematyki.
Zauważ, że istnieje wiele rozwiązań (4194304) z powodu modulo.
źródło
pieprzenie mózgu , 170 bajtów złamane!
Wypróbuj online!
źródło
nul
w bzdury. BTW, możesz usunąć dwa pierwsze dwa>
bajty.JavaScript ES6 (Node.js> = 6.0) , 326 bajtów (bezpieczny)
O wiele bardziej uproszczone niż moje inne wyzwanie , nie próbuję już zaciemniać podejścia do rozwiązania, co zaoszczędziło mi dużo bajtów. Tym razem
process.kill()
nie zadziała.Wypróbuj online!
źródło
Swift 3, 14 bytes ( Cracked )
Aby rozwiązać ten problem, umieść kod przed lub po tej instrukcji.
fatalError()
itp., Zanim się nie liczy.źródło
ambiguous semantics
na mnie krzyczy .cQuents , 2 bajty ( Cracked 1 ) ( Cracked 2 )
Zauważ, że szybko osiągnie limit wyjściowy 128 KiB w TIO, powodując jego zatrzymanie, ale po uruchomieniu lokalnym zapętla się na zawsze, z wyjątkiem wejścia, które go łamie. Znalezienie tego wkładu powinno być dość łatwe. Dopóki tego nie zrobisz,
:A
będziesz nadal wystawiał do siebie swój trójkątny język.Zauważ też, że powinno to być po prostu,
A
ale wczoraj złamałem tryby niejawne. Na starszych wersjach interpreteraA
działałoby dobrze.Pęknięcia:
Wypróbuj online!
źródło