W tym wyzwaniu gliniarze i rabusie gliniarze pomyślą o dodatniej liczbie całkowitej. Następnie napiszą program lub funkcję, która wyprowadza jedną wartość, gdy poda liczbę jako dane wejściowe, a drugą wartość dla wszystkich innych dodatnich liczb całkowitych. Następnie policjanci ujawnią program w odpowiedzi, zachowując numer w tajemnicy. Rabusie mogą złamać odpowiedź, znajdując numer.
Oto haczyk: to nie jest kod-golf , zamiast tego twój wynik będzie tajną liczbą z niższym wynikiem, który będzie lepszy. Oczywiście nie możesz ujawnić swojego wyniku, gdy rabusie wciąż próbują go znaleźć. Odpowiedź, która nie została złamana tydzień po opublikowaniu, może mieć wynik i zostać oznaczona jako bezpieczna. Bezpiecznych odpowiedzi nie można złamać.
Prawdopodobnie jest to oczywiste, ale powinieneś być w stanie zdobyć swoją odpowiedź. Oznacza to, że powinieneś dokładnie wiedzieć, jaką wartość akceptuje maszyna decyzyjna. Sama wiedza, że istnieje, nie wystarczy.
Korzystanie z funkcji kryptograficznych
W przeciwieństwie do większości wyzwań gliniarzy i rabusiów, którzy proszą cię o nieużywanie funkcji kryptograficznych, wyzwanie to nie tylko całkowicie im pozwala, ale zachęca. Możesz tworzyć odpowiedzi w dowolny sposób, dopóki próbujesz wygrać. Biorąc to pod uwagę, mile widziane są również odpowiedzi przy użyciu innych metod. Celem tego wyzwania jest zwycięstwo i dopóki nic nie oszukasz, nic nie jest poza stołem.
źródło
A(9,9)
gdzieA
jest funkcja Ackerman.Odpowiedzi:
Tampio , pęknięty
Biegnij z:
Instrukcje instalacji interpretera znajdują się na stronie Github. Poinformuj, czy masz jakiekolwiek trudności z uruchomieniem tego.
źródło
Perl 6 - Cracked!
W ścisłym znaczeniu nie jest to akceptowalne poddanie się, ponieważ nie stara się bardzo wygrać. Zamiast tego ma nadzieję zaoferować przyjemną łamigłówkę.
Jest to program „czystej matematyki” przeznaczony do łamania przez kontemplację. Jestem pewien, że możesz brutalnie wymusić rozwiązanie (po oczyszczeniu niektórych niechlujnych programów, które celowo popełniłem), ale dla pełnego uznania (: -)) powinieneś być w stanie wyjaśnić, co robi z powodów matematycznych .
Powinieneś złamać funkcję f (). (Jest to funkcja, która pobiera jedną liczbę naturalną i zwraca jeden z dwóch wyników.) Ostrzeżenie: Jak pokazuje @Nitrodon, program zachowuje się nieprawidłowo i „akceptuje” nieskończoność liczbę danych wejściowych. Ponieważ nie mam pojęcia, jak to naprawić, zwracam uwagę na przyszłe rozwiązania, że liczba, o której myślałem, jest mniejsza niż 70000 .
Jeśli spróbujesz uruchomić to w TIO, to upłynie czasu. To celowe. (Ponieważ to wcale nie powinno być uruchamiane!)
W końcu próbowałem napisać dość rozsądny kod. Powinieneś być w stanie płynnie czytać, nawet jeśli nie znasz języka. Tylko dwie uwagi: nawiasy kwadratowe [ op ] oznaczają zmniejszenie („składanie”, w języku żargonowym Haskell) listy z operatorem op ; a wywołany sub
postfix:<!>
określa operator postfiksu o nazwie! (tj. używane jak5!
- robi dokładnie to, czego można oczekiwać). Podobnie dla tegoprefix:<∫>
jednego.Mam nadzieję, że komuś się to spodoba, ale nie jestem pewien, czy dobrze poradziłem sobie z trudem. Nie krępuj mnie w komentarzach :—).
Wypróbuj online!
źródło
JavaScript, pęknięty
Zaciemniłem to tak bardzo, jak potrafię, do tego stopnia, że nie mieści się w tej odpowiedzi.
Wypróbuj tutaj! Kliknij Uruchom, a następnie wpisz w konsoli
guess(n)
Zwraca niezdefiniowany, jeśli otrzymujesz złą odpowiedź, w przeciwnym razie zwraca true.
Edycja: Jakoś przeoczyłem część dotyczącą tego, że mój wynik to liczba. No cóż, mój numer jest bardzo, bardzo duży. I tak powodzenia w rozwiązywaniu problemu.
źródło
Galaretka , wynik: ... 1 ( pęknięty )
Wypróbuj online!
1 Naprawdę spodziewałem się, że to ujawnię? Daj spokój! No cóż, ma wynik 134. Tam, powiedziałem!
źródło
Ç€G
i zakres1...1000
jako dane wejściowe: P5ȷ2_
część, prawda?1
jest, a następnie wkleiłem ciąg od początku do1
skryptu w języku Python i policzyłem liczbę zer przed nim ...Python 2 (cracked)
Nie sugerowałbym brutalnej siły. Mam nadzieję, że lubisz generatory!
Wypróbuj online!
Wyjścia
1
dla poprawnej liczby, w0
przeciwnym razie.źródło
a
powinno byći+a
. Naprawiłem to, ale i tak pękło wzruszenie ramionamiHaskell , popękany
Jest to oparte wyłącznie na arytmetyce. Zauważ, że
myfun
jest to faktyczna funkcja, podczas gdyh
jest tylko funkcją pomocniczą.Wypróbuj online!
źródło
Java, Cracked by Nitrodon
Chciałem wypróbować coś innego niż zwykłe funkcje skrótu i losowe. Możesz przekazać liczbę jako argument wiersza poleceń. Wyprowadzane,
1
jeśli podana jest poprawna liczba i0
inaczej. W przypadku małych liczb możesz także spróbować online .Wskazówka:
Wyjaśnienie:
źródło
Pyth, Cracked by Erik the Outgolfer *
Próbowałem to zaciemnić tak bardzo, jak to możliwe.
Wypróbuj tutaj!
źródło
Oktawa, wynik: ???
Jest prawie pewne, że żadna inna liczba nie będzie miała dokładnie tych samych 20 liczb losowych na końcu listy
1e8
liczb.Dane wyjściowe
1
dla tajnego numeru, w0
przeciwnym razie.Uruchomiłem to w Octave 4.2.0.
„Sen i inne spowolnienia można usunąć podczas brutalnego wymuszania”.
Powodzenia z tym :)
źródło
Ly, score 239, cracked
Try it online!
I'm banking on nobody knowing Ly here, although I know how easily that could change... sweats
Explanation:
źródło
Brain-Flak, score 1574 (cracked)
Try it online!
źródło
dc
Try it online!
Note: This submission has been modified since it was submitted. The original submission (below) was invalid and cracked by Sleafar in the comments below. (An input of
1
gives rise to the outputyes
, but there is one other number that gives the same result.)Try it online!
źródło
Ruby, safe, score:
Try it online!
Explanation:
źródło
PHP, safe, score:
Outputs 1 if correct, 0 otherwise.
Edit: I don't think anyone even tried to crack this because:
Explanation:
źródło
Swift 3 (53 bytes) - Cracked
How to run this? –
f(n:1)
.Test Here.
źródło
Python 3, score: ???
Hopefully this, if anything, demonstrates how broken of a problem this really is:
Essentially, what this code does is lazily generate every string possible until one of the strings has a hash that exactly matches
hash_code
above. The unhashed code takes the basic form of:Except
<insert number here>
is replaced with a number and there are comments in the code for the purpose of making the code nearly unguessable.I've taken every precaution to ensure that I do not benefit from this post. For starters, it's community wiki so I will not gain rep for it. Also, my score is rather large, so hopefully a much more creative answer will come along and win.
Hope you all aren't too furious at my response, I just wanted to show off why cops and robbers posts usually ban hashing algorithms.
źródło
256 ^ 100
or2 ^ 800
strings. Meanwhile, there are only2 ^ 512
possible 512-bit hashes. That means that the strings you iterate over outnumber the possible hashes at least2 ^ 288
to one - a number 10,000 times greater than the number of atoms in the universe. The probability of that particular hash going unused is incredibly small.Python 3, 49 bytes, Cracked by sonar235
Try it online!
źródło
Java, score: 3141592 (Cracked)
źródło
Python 3, score 1 (safe)
Not a very interesting solution, but better a safe cop than a dead cop.
Outputs
1
for the target number,0
otherwise. Input is taken from stdin. The last part (and int(original.decode())<1000
) exists only to ensure only one answer, otherwise there would obviously be infinitely many answers.źródło
100000000
.C (gcc), score ???
Since cryptographic solutions are encouraged, here. Exactly one positive integer will print something, all others will print nothing. This takes a long time, so it cannot be tested online.
źródło
Java, 164517378918, safe
źródło
TI-BASIC,
score: 196164532non-competingReturns 1 for secret number, 0 otherwise.
Refer to the note on this page on the
rand
command for more info.źródło
Python 3, score:?
Try it online!
Simple, but may take some time to brute-force ;-) Looking forward to a fast crack ;-)
Footnote: the first two and the last conditions make the answer unique.
BTW how the score is calculated?
Hint 1
źródło
Aceto, safe
Outputs TrueFalse if correct, FalseFalse otherwise
The number was
Try it online!
źródło
C#, Mono, Linux, Alpha, score 1 (safe)
Careful. I mean it. There's plenty of alpha simulators out there. Use one with a jitter or this won't finish.
This depends on the fact that Alpha is big-endian, causing System.BitConverter to do the wrong thing if somebody tries this on x86 or x64. I wrote this answer to demonstrate the badness of the challenge more than anything else.
źródło