Uwaga : Wyzwanie to jest teraz zamknięte dla nowych zgłoszeń policjantów. Ma to na celu zapewnienie, że nikt nie będzie mógł publikować zgłoszeń, które pozostają nierozpoznane, ponieważ nie ma już wystarczającej liczby rabusiów zainteresowanych tym wyzwaniem.
W tej grze gliniarzy i rabusiów każdy policjant napisze prosty program, który da jedno wyjście. Następnie podadzą do publicznej wiadomości cztery rzeczy dotyczące swojego programu:
- Język
- Długość programu
- Pożądana moc wyjściowa
- Zaszyfrowana wersja kodu źródłowego
Następnie złodzieje muszą rozszyfrować kod źródłowy, aby ich program działał jak oryginał.
Zasady gliny
Masz napisać prosty program, który złodzieje spróbują odtworzyć.
Twój oryginalny program musi mieć prostą funkcjonalność: po uruchomieniu wyświetla pojedynczy ciąg / liczbę i zatrzymuje się. Powinien dawać takie same dane wyjściowe niezależnie od tego, kiedy / gdzie jest uruchamiany, i nie powinien zależeć od dodatkowych bibliotek lub Internetu.
Twój program i dane wyjściowe muszą korzystać z ASCII do wydruku (dozwolone są nowe wiersze i spacje). Dane wyjściowe nie powinny mieć więcej niż 100 znaków, a uruchomienie programu na rozsądnej maszynie zajmuje mniej niż około 5 sekund. Nie możesz również używać haszowania (ani innych funkcji kryptograficznych) w swoim programie
Następnie podajesz zaszyfrowaną wersję kodu źródłowego i wymagane dane wyjściowe. Możesz mieszać kod źródłowy, jak chcesz, pod warunkiem, że znaki są zachowane.
Twój wynik to najkrótszy przesłany program, który nie został złamany. Po upływie tygodnia nieskradzione poddanie się stanie się odporne. Aby ubiegać się o tę immunitet, należy edytować swoją odpowiedź, aby pokazać poprawną odpowiedź. (Wyjaśnienie: Dopóki nie ujawnisz odpowiedzi, nie jesteś odporny i wciąż możesz zostać złamany.) Wygrywa najniższy wynik.
Prosty przykład odpowiedzi gliniarza
Perl, 20
ellir"lnto Wo d";prH
Hello World
Lub...
Perl, 15
*3i)xp3rn3*x3t(
272727
Zasady rabusiów
Rabusie opublikują swoje próby włamania jako odpowiedzi w osobnym wątku, który znajduje się tutaj .
Masz jedną próbę złamania każdego zgłoszenia. Twoja próba włamania będzie niezakodowaną wersją kodu źródłowego. Jeśli twoje zgadywanie pasuje do opisu (te same znaki, dane wyjściowe i oczywiście język) i jesteś pierwszym trafnym zgadywaczem, to wygrywasz punkt. Ważne jest, aby pamiętać, że twój program nie musi dokładnie pasować do oryginału, wystarczy użyć tych samych znaków i mieć tę samą funkcjonalność. Oznacza to, że może istnieć więcej niż jedna poprawna odpowiedź.
Złodziej z największą liczbą punktów (udane pęknięcia) wygrywa.
Prosty przykład Rabuś Odpowiedzi
Twój program był
print "Hello World";
. (Chociażprint"Hello World" ;
mógł również działać.)Twój program był
print(3**3x3)x3
Bezpieczne zgłoszenia
- ASP / ASP.Net, 14 (Jamie Barker)
- Befunge-98, 15 (FireFly)
- GolfScript, 16 (Peter Taylor)
- CJam, 19 (DLosc)
- GolfScript, 20 (user23013)
- Perl, 21 (primo)
- Python, 23 (mbomb007)
- Ruby, 27 (histocrat)
- SAS, 28 (ConMan)
- Ruby, 29 (histocrat)
- Python, 30 (mbomb007)
- JavaScript, 31 (hsl)
- Ruby, 33 (histocrat)
- Marbelous, 37 (es1024)
- Ruby, 43 (histocrat)
- PHP, 44 (kenorb)
- Ruby, 45 (histocrat)
- Marbelous, 45 (es1024)
- Python 2, 45 (Emil)
- PHP, 46 (Ismael Miguel)
- Haskell, 48 (nooodl)
- Python, 51 (DLosc)
- Python, 60 (Sp3000)
- Python 2, 62 (muddyfish)
- JavaScript, 68 (Jamie Barker)
- Mathematica, 73 (Arcinde)
- Haskell, 77 (dumny skarbiec)
- Python, 90 (DLosc)
- C ++, 104 (user23013)
- ECMAScript 6, 116 (Mateon1)
- C ++ 11, 121 (es1024)
- Trawa, 134 (user23013)
- PowerShell, 182 (christopherw)
Nierozwiązane zgłoszenia
Według czasu nadania. Ta lista dzięki uprzejmości wielu użytkowników.
- CoffeeScript, 96 (soktinpk)
- Python 3, 70 (Sp3000)
- TinyMUSH 3.1, 20 (Muqo)
- GolfScript, 32 (rozpad beta)
- Python 2, 101 (Mateon1)
- Lua, 49 (ChipperNickel)
- Python, 61 (imallett)
- Java 6+, 218 (nhahtdh)
- CJam, 51 (Martin Büttner)
- J, 22 (FireFly)
- Marbelous, 106 (es1024)
- Marbelous, 107 (es1024)
- JavaScript, 79 (FireFly)
- CJam, 47 (user23013)
- Rdza, 118 + Clojure, 106 + inne (Vi.) - wersja 2
- Marbelous, 144 (es1024)
- Python 2, 80 (MrWonderful)
- Perl, 53 (DLosc)
- Perl, 26 (primo)
- Mathematica, 31 (Arcinde)
- Marbelous, 144 (es1024)
- Zgromadzenie, 78 (krzygorz)
- J, 14 (algorytm)
- Java 8, 157 (TheBestOne)
Małe narzędzie do weryfikacji rozwiązań, dzięki uprzejmości n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨d̷̰̀ĥ̷̳
źródło
Odpowiedzi:
Python 3, rozmiar 74 ( pęknięty )
Python po prostu nie był taki sam po ponownej edukacji przez Big Brother.
Wejście:
Na końcu wiersza 1 i 2 znajdują się dwie nowe linie.
Wynik:
Zauważ, że każdy
True
jest w osobnej linii.źródło
2+2==5
czwarte stwierdzenie, dopóki nie stwierdziłem, że=
stało się to zbyt łatwe.Python 3, rozmiar 12 ( pęknięty )
Mój program nie wytwarza danych wyjściowych i nie zawiera błędów.
źródło
int
chwilę.python
a następnie wpisz moje rozwiązanie w wierszu polecenia. Ale to działa, jeśli wstawię moje rozwiązanie do pliku i typupython file
.CJam, rozmiar 20 ( pęknięty )
Kod
Wynik
źródło
Python 2, rozmiar 50
Pęknięty
Znamy już odpowiedź na pytanie, ale jakie jest pytanie?
Kod
Pamiętaj, że nie ma żadnych spacji ani znaków nowej linii. Jedynym białym znakiem jest pojedynczy odstęp po
print
.Wynik
Próbowałem zrównoważyć długość kodu i trudność, ale nie zaskoczyłoby mnie to, gdyby trochę go przegapiłem. Mam nadzieję, że przynajmniej to powstrzyma brutalną siłę.
źródło
Pyth - 71 Cracked
Kod
Wynik
* Pierwotnie George Lucas kazał Hanowi przerwać C3-PO. **
** Nazwał to swoim największym pomysłem od czasów Jar-Jar.
Interesująca uwaga: pomimo wszystkich zmian, które przeszedł Pyth, wciąż jest tu ważna odpowiedź!
Oryginał
Wyjaśnienie
Zaktualizowano
Przepraszam za słabe formatowanie wyjaśnień, nie wiem jak używać bloków spoilerów: S (@ Sp3000 sprawiło, że jest to dla ciebie trochę przyjemniejsze)
Teraz możesz uruchomić Pyth online! Wypróbuj tutaj. Dzięki @isaacg :)
źródło
<br>
CJam, rozmiar 51 [BEZPIECZNY]
Kod
Wynik
Możesz się z nim bawić w tłumaczu online .
To powinno być bardziej krakowalne niż się wydaje.
Wskazówka
Rozwiązanie
źródło
Befunge-98, rozmiar 15 [BEZPIECZNY]
Kod
Wynik
Oryginał
źródło
3312
,3300
oraz kilka innych w pobliżu3314
. Tak blisko ...GolfScript (16 bajtów) [BEZPIECZNY]
Oczekiwany wynik:
Pierwotnym źródłem:
źródło
:
.Ruby, 17 ( Cracked )
Tym razem wybranie czegoś naprawdę krótkiego.
Wynik:
źródło
Python, 69 znaków [ cracked grc ]
Jajecznica:
Wynik:
Ten jest po prostu nieszkodliwą zabawą :) Testowany na CPython 2.7.8, 3.3.2 i do cholery PyPy3 2.3.1.
Wyjaśnienie
źródło
Python, rozmiar 56 ( pęknięty )
Kod
for i in "iprint()".join(([2,3,7,0,9,chr((-7+732^70)])))
Wynik
hi mom
źródło
Python 3, 70 znaków
Jajecznica:
Wyjście (99 znaków):
Aktualizacja
Minął tydzień, więc zamiast zamieszczać odpowiedź, oto podpowiedź:
źródło
Pyth , 11
Wynik:
źródło
JavaScript, 94 Cracked przez FireFly
Wynik
Oryginał
źródło
alert
pierwszy, ponieważ wskaźniki tak dobrze pasowały do potrzebnych postaci. Ciekawy zbieg okoliczności.Syntax Error: Unexpected String
Ruby, 38 lat - złamany przez Martina Büttnera
Wynik:
Oryginał:
źródło
print
idowncase!
były czerwone śledzie. Spodziewałem się użyć odpowiedziputs
, nie myślałem$><<
.Python 3, rozmiar 16 ( pęknięty )
Kod:
Wyjście (z końcem nowego wiersza):
źródło
hello
to anagramimport
. ^^Perl - 47 ( pęknięty przez grc )
Kod (tam też jest jedna spacja)
Wynik:
Możesz uruchomić go online tutaj i działa pod
strict
iwarnings
.źródło
strict
iwarnings
daj mi znać.Ruby, 33 - cracked przez user23013
Wynik:
Oryginał:
źródło
puts
oczywiście będzie to pierwsze, istnieje.next
inne słowo kluczowe, którego można użyć, a reszta to rodzaj magii ze$
zmiennymi ruby i tworzeniem tablicy znaków .... +1Python2, 132 znaki
Wyjście (z nową linią):
Zaktualizowana wersja, 96 znaków
Odpowiedź na oryginalną wersję sugerowała
exec
zamiastcompile
+eval
, więc oto wersja uproszczona:Aktualizacja: pęknięta
Całkowicie złamany przez Alexa Van Liewa i Kenny'egoTM . Oryginalne rozwiązania to (przewiń w prawo, aby wyświetlić spoiler):
źródło
\n
literały wewnątrz ciągów). W przypadku nowego wiersza kod może być krótszy.x
sic
dla mnie, aby zrobić to, co chcę: PDon't count ones which exist. Count ones which do not exist
.Ruby, 29 [bezpieczny]
Próbuję zobaczyć, jak krótko mogę dostać się do Ruby bez pękania.
Kod
Wynik
Oryginał
Wyjaśnienie
źródło
PHP, rozmiar 49 [ Pęknięty przez Martina Büttnera ]
Kod
Wynik
źródło
MATLAB, 41 bajtów
Pęknięty przez feersum
Wynik
źródło
Perl, 36 ← cracked przez grc
Kod
Wynik
Testowane tutaj
źródło
Haskell, 100 znaków (nieprawidłowy, wyjście zbyt długie)
Kod
Wynik:
"\er\\e\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\"\\\\\\\\\\\\\"\\\\\\\
Oryginał
źródło
fix show
. Zdecydowanie nie doJ, 22 bajty
Kod
Wyjście (97 znaków)
Spodziewam się, że będzie to praktycznie niemożliwe ...
źródło
CJam, 32 bajty ( pęknięty )
Kodowane źródło
Wynik
źródło
Pyth - 35 - Cracked
W duchu @ MartinBüttner:
Kod
Wynik
Spróbuj go tutaj zdekodować.
źródło
TinyMUSH 3.1 , 20
Jajecznica:
Wynik:
źródło
Python 3, długość 110 [ cracked przez grc ]
Jajecznica (
\n
oznacza nowy wiersz)Wynik:
Oto kolejna zabawna - nie jest trudna, ale po prostu coś niezwykłego i zagadkowego. :)
Wyjaśnienie
źródło
JavaScript, 29 - Pęknięty
Uruchom w konsoli przeglądarki Chrome
Kod
Wynik
Oryginalny kod
źródło