To wątek złodziei. Wątek gliniarzy jest tutaj .
Twoim wyzwaniem jest złamanie poddaństwa gliniarza poprzez znalezienie danych, które go zatrzymają. Nie musisz dowiedzieć się, dlaczego, lub wszystkie dane, które powodują zatrzymanie, jeśli jest więcej niż jedno lub dane wejściowe, których zamierzał policjant, wystarczy jedno wejście.
Po złamaniu zgłoszenia opublikuj link do niego w komentarzu lub edytuj w poście gliniarza. Możesz także oflagować swoje zgłoszenie w celu zmodyfikowania go w poście gliniarza. Opublikuj również użyte dane wejściowe i link do postu gliniarza w odpowiedzi w tym wątku. Złodziej, który złamie najwięcej zgłoszeń, wygrywa.
Wiele osób może publikować pęknięcia w tym samym zgłoszeniu gliny, o ile są one różne.
(Jeśli SE przekonwertowało duplikat odpowiedzi na komentarz, możesz zagłosować na tę prośbę o funkcję )
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.innerText = 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
Odpowiedzi:
Malbolge, Klamka
Wypróbuj online (Dzięki Dennis !)
Dane wejściowe dla systemu Windows:
F_⌠1234567890
Dane wejściowe w systemie Linux przy użyciu ISO-8559-1:
F_ô1234567890
Sedno działania programu Malbolge polega na tym, że zależało ono od zachowania interpretera Malbolge, który powoduje nieskończoną pętlę, jeśli napotka dowolną instrukcję, która nie zawiera się w przedziale od 33 do 126. Program został skonstruowany w taki sposób, że dane wejściowe umożliwiają modyfikację pojedyncza instrukcja.
Zmodyfikowałem interpreter, aby zrzucił stan pamięci programu na początku wykonywania, a także wygenerował „znormalizowany” kod źródłowy, który ma postać listy kodów operacyjnych, które będą uruchamiane podczas wykonywania programu. Dzięki tym informacjom można (powoli) stwierdzić, że mimo że program pobierał 13 danych wejściowych, tylko 1 i 3 dane wejściowe miały znaczenie.
Przeglądając znormalizowany zrzut kodu i pamięci (i odrobinę pomocy debuggera) opracowałem:
Gdzie
op
jest tak zwane tritwise „op”, które jest opisane w specyfikacji. Korzystając z tych informacji, możesz napisać prosty program, który iteruje możliwe dane wejściowe (od 0 do 255) i znajduje wszystkie rozwiązania spełniające powyższe kryteria. Znalazłem 2219 możliwych rozwiązań, z których niektóre prawdopodobnie nie będą działały (nie można wprowadzić wymaganych znaków). W szczególności powyższe dane wejściowe są oparte na rozwiązaniu:(Input 1 = 70, Input 3 = 244)
źródło
F_ô
.JavaScript (w przeglądarce)
Zaskakujące jest to fałsz
Edycja: dlaczego
document.all
fałsz ?źródło
JS (ES6), Juan Tonina
Trochę szukałem,
Object.is
żeby znaleźć. Zasadniczo,+0 === -0
ponieważ===
sprawdza je jako liczby i0
jest skończone, aleObject.is
widzi+0
i-0
jako różne obiekty. Bardzo sprytny policjant :)Wypróbuj online!
źródło
Python, Siphor
Po prostu redefiniujemy równość, aby zachowywać się dokładnie tak, jak jest to wymagane do zakończenia programu.
źródło
__eq__
, abyraise
...0
: pclass A:__eq__=lambda s,o:0
if(A())
działa.Braingolf
Dowolna liczba mniejsza niż
0
działa.Wypróbuj online!
źródło
PHP, Syzyf
(-0[0)> deal with it=1
Funkcja parse_str zmienia spacje i inne znaki na podkreślenia. Jeśli wstawisz [używany do ogranicznika Array bez zamykania, zmienia on znak podkreślenia, ale powoduje to, że nie tłumaczy następujących spacji (nie wiem dlaczego).
Wypróbuj online!
źródło
JavaScript (Node.js), Adnan
[]
i[]
wydaje się, że działa. Próbowałem kilka z nich w tymnull
,undefined
,NaN
...[] >= [] && [] <= [] && [] != []
ocenia na prawdę.Morał tej historii: JavaScript jest dziwny .
Wypróbuj online!
źródło
JavaScript (ES7), Arnauld
Standard
"8e7"
jest rozwiązaniemWłamać się
Nie trzeba obliczać tej liczby, możemy ponownie zdefiniować
length
właściwośćUstawia się
~x/x.length**3!=-2962963
nafalse
Priorytet operatorów
~
bitowe nie jest pierwsze** exponentiation
druga/ division
trzeciźródło
Bash, Veedrac
Wypróbuj online!
Z strony
ld.so(8)
podręcznika:źródło
/bin/yes
, Ale jest to możliwe, w takim przypadku ta zmienna env zostanie zignorowana.Mathematica, JungHwan Min
Nie ma pojęcia, czy jest to zamierzone rozwiązanie, ale przechodzi ono do wyrażenia, które nie jest oceniane, dopóki nie zostanie określone jako
#
wewnątrz funkcji, co spowoduje, że natychmiast powróci z funkcji bez dokonywania dalszej oceny. Możesz zobaczyć, że funkcja jest faktycznie wywoływana (zamiast po prostu zgłosić wyjątek przed nawet wywołaniem funkcji), zmieniając funkcję na:Które rzeczywiście wydrukują
stop
przed zgłoszeniem błędu.źródło
Unevaluated[Abort[]]
, ale to samo.)Retina , PunPun1000
Wypróbuj online!
Każde wejście z ns, w
1
którym suma dzielników n + 1 jest równa n + 1, powinno działać.źródło
Rubin
bez nowej linii.
3.send('exit')
na pewno nie jest równy5
, ale wykonujeKernel#exit
:Jest to możliwe, aby zadzwonić
exit
na3
ponieważ :abort
działa również:źródło
JavaScript (Node.js) , programmer5000
Już pęknięty, ale mój jest nieco inny :) Nie mam wystarczającej liczby przedstawicieli, aby komentować w policji. Mogę również edytować, aby naprawić formatowanie, mój pierwszy post tutaj.
Głównie ustawiam
__proto__
równą funkcji, która rzuca. Zaczerpnięte z patrzenia na stronę Mozilli w poszukiwaniu proto. (Przepraszam, niski przedstawiciel, nie mogę opublikować linku).Wypróbuj online!
EDYCJA: Mam trochę przedstawicieli, więc oto link: Mozilla
__proto__
źródło
Bash, Syzyf
Na szczęście
kill
jest wbudowana powłoka.Wypróbuj online!
źródło
R, Jarko Dubbeldam
Przyłącz się po raz pierwszy, więc odrzuć błędy, które popełniłem w formacie.
Jestem pewien, że jest to poprawne. Tylko przepisanie is.list (), prawda?
źródło
JavaScript, programator 5000
Maksymalna długość łańcucha
Używa łańcucha o długości mniejszej niż to, co obsługuje Twój silnik. Podczas dodawania
"h"
do tego ciągu zgłaszany jest błąd. Wypróbuj online!Blok pochodzenia krzyżowego
Mocno zainspirowany odpowiedzią @ jadkik94 , ale działa wszędzie. Tworzy iframe krzyżowego pochodzenia, a następnie przekazuje
.contentWindow
wymieniony iframe. Nie udaje się to, gdy funkcja próbuje użyć wartości ze względu na bezpieczeństwo krzyżowe.Wartość pierwotna
Wariant
.toString()
odpowiedzi - to po prostu wykorzystujetoPrimitive
zamiast tego. Zwraca obiekt jako prymitywną wartość, której JavaScript nie wie, jak sobie z tym poradzić (więc generuje błąd). Wypróbuj online!źródło
Node.js, Adnan
{}
i{}
lub dowolne 2 obiekty są dwoma wejściami. Nawet nie rozumiem, jak to działa.Oto niesamowita logika porównywania obiektów JS:
źródło
JavaScript (węzeł Babel) , Conor O'Brien
(Repost, przypadkowo umieszczony w glinach.) Nie wiem, co było zamierzone, ale pozytywne dziesiętne, które nie są ogromne, wydają się działać.
Wydaje mi się też, że nadal nie mogę komentować w glinach.
Wypróbuj online!
źródło
JavaScript (NIE node.js) , programmer5000
Nie można tego dodać, ponieważ tworzy obiekt, który nie ma funkcji toString, ponieważ nowy
Set
nie wiąże się z prototypami zObject
.Wejście:
Wypróbuj online!
źródło
Bash 4.2, Dennis
Wyraźnie nie jest to zamierzone rozwiązanie, ponieważ działa również na nowszą wersję bash.
Wypróbuj online.
źródło
Oktawa , Stewie Griffin
Wejście:
exit
Rozumowanie:
input
ocenia wszystko, co jest wkładem.exit
wychodzi z programu.Wypróbuj online!
źródło
Python 2, Foon
Zasadniczo to, co jest napisane na puszce.
Wypróbuj online.
źródło
Python 3 (CPython), Veedrac
Wypróbuj online!
źródło
Python 3, Siphor
To było fajne. Musimy wykonać
type(x) != str
sprawdzenie, więc musimy kontrolować wartość zwracanątype()
. Musimy przesłonić__class__
atrybut i zastąpić go niestandardowym obiektem, który rozszerza siętype
, a__ne__
metoda zastępowana jest metodą, która zawsze zwraca wartość false. To sprawia, że przechodzi sprawdzanie typu, ale wyszukiwanie się nie powiedzie, ponieważo
nie jest to str.źródło
C #, TheLethalCoder
Lub jakakolwiek inna zerowalna klasa.
źródło
Siatkówka oka
Nowa linia, po której następuje utwór
1
. Znalazłem to od razu.Wypróbuj online
źródło
JS (ES6)
Każdy znak o kodzie mniejszym niż 10 powinien działać; Użyłem
tab
powyższej postaci, którą SE zamienia na spacje.źródło
f(<tab>)
jest prawidłowa składnia (pusty wejście) i musielibyśmy rozróżniaćf(1)
if("1")
tak czy owakJavaScript (ES6), programmer5000
Wypróbuj online!
Warunek był
!x||x>="\n"
. Każdy pojedynczy znak w tabeli ASCII z kodem mniejszym niż\n
będzie działać.źródło
cQuents, Step Hen
Wszystko po czym następuje spacja i dodatnia liczba całkowita. Spacja oddziela dane wejściowe, a dodatkowe dane wejściowe stają się liczbą terminów na dane wyjściowe.
Wypróbuj online!
źródło
a 1
! Ty ninja'd mnie: /MATL , Luis Mendo (nie zamierzone rozwiązanie)
Puste wejście zatrzymuje program i generuje następujący błąd:
Wypróbuj online!
źródło