To jest wątek gliniarzy. Wątek rabusiów idzie tutaj .
Napisz program lub funkcję składającą się wyłącznie z drukowalnych znaków ASCII (z wyłączeniem tabulacji i nowego wiersza), które generują co najmniej 5 drukowalnych znaków ASCII w porządku rosnącym (od spacji do tyldy / 32 do 126). Postacie mogą być wyprowadzane kilka razy, o ile sąsiadują ze sobą. Pojedynczy znak nowej linii jest akceptowany. Musisz podać pełny wynik, a na każde 6 znaków w kodzie musisz podać jeden znak w kodzie, w miejscu, w którym się pojawia. Jeśli twój kod ma 5 lub mniej znaków, musisz ujawnić tylko długość. Nie ujawnisz więcej niż 1 znak na 6 w swoim kodzie.
Więc jeśli twój kod alphaprinter
wypisuje alfabet z az, musisz ujawnić 2 znaki swojego kodu (użyj innych znaków podkreślenia), na przykład:
al__________ // or
__p__p______ // or
__________er
Zasady / specyfikacje:
- Nie można dołączyć końcowych białych znaków, które nie mają funkcji.
- Nie możesz używać komentarzy (ale złodzieje mogą używać komentarzy podczas łamania kodu)
- Wbudowane operacje podstawowe kryptograficzne (w tym wszelkie rng, szyfrowanie, deszyfrowanie i mieszanie) są niedozwolone.
- W językach, w których domyślne dane wyjściowe są takie jak w MATLAB:,
ans =
to jest akceptowane, o ile jest wyraźnie określone i pokazane, żeans =
jest generowane. Należy również jasno stwierdzić, czy jest to część „rosnącego wyniku”, czy nie. - Wynik musi być deterministyczny
- Używanie niewolnego języka nie jest akceptowane
- Dane wyjściowe nie muszą być kolejnymi znakami. Zarówno
abcde
iabcdg
są ważne wyjścia. - Znaki nie muszą być rozróżniane, o ile wynik zawiera co najmniej 5 znaków.
aaaaa
iaaacc
są ważne. - Odpowiedzi, które zakładają, że środowisko REPL nie są uważane za prawidłowe programy lub funkcje i dlatego są niedozwolone.
- STDERR nie jest uważany za prawidłowy wynik, ale dane mogą być zapisywane w STDERR.
Jeśli ujawnione postacie są podkreślnikami, musisz je zidentyfikować, jak pokazano poniżej. W tym przypadku druga i szósta postać są odsłonięte, a pozostałe są nieznane.
_____________
| |
Uwaga: Rabusie muszą tylko znaleźć kod, który daje takie same wyniki. Język, długość rozwiązania złodziei i pozycja ujawnionych znaków również muszą być takie same.
Twój wynik to liczba znaków w kodzie. Zwycięzcą zostanie zgłoszenie o najniższym wyniku, który nie został złamany w ciągu 7 dni. Tylko zgłoszenia przesłane w 2015 r. (UTC) kwalifikują się do wygranej. Zgłoszenia przesłane później są mile widziane, ale nie można wygrać.
Aby ubiegać się o wygraną, musisz ujawnić pełny kod (po 7 dniach).
Twój post powinien mieć następujący format (nn to liczba znaków):
Język, znaki nn
Wydajność:
abcdefghijklmnopqrstuvwxyz
Kod (12 znaków):
al__________
Jeśli kod jest pęknięty, wstaw [Cracked] (link do crackera) w nagłówku. Jeśli przesłanie jest bezpieczne, wstaw „Bezpieczny” w nagłówku i ujawnij pełny kod w swojej odpowiedzi. Tylko odpowiedzi, które ujawniły pełny kod będą kwalifikowały się do wygranej.
źródło
print ( "abcde" )
, mogę ujawnić trzy białe znaki?Odpowiedzi:
Sześciokąt , 8 znaków, bezpieczny
odbitki
Możesz wypróbować Hexagony online
Rozwiązanie
To
`
tylko przekierowanie, aby kod wyglądał tak, jakby wymagał długości boku 3. O ile interpreter nie zostanie wykonany za-d
pomocą strzałki wstecznej, zostanie po prostu usunięty z kodu źródłowego przed określeniem układu. Następnie kod pasuje do długości boku 2:To przesuwa wskaźnik pamięci (MP) wokół jednego sześciokąta siatki pamięci, jednocześnie kopiując wartość do następnej krawędzi, zwiększając ją i drukując.
Tak wygląda siatka pamięci, z MP rozpoczynającą zaznaczoną pozycję:
Początkowo wszystkie krawędzie są zerowe. Pierwszy
&
to brak)
operacji , ale zwiększa krawędź i!
drukuje1
. Następnie"
przesuwa się z powrotem w lewo (krawędź oznaczona 2 ). Tam&
kopiuje wartość. Ponieważ krawędź jest obecnie równa zero, lewy sąsiad (w kierunku MP) zostanie skopiowany, co1
właśnie wydrukowaliśmy.)
zwiększa to,!
drukuje2
. Trwa to tak długo, jak odwiedzamy nowe krawędzie i drukujemy wszystkie cyfry do6
. Kiedy natrafimy na krawędź, od której zaczęliśmy,&
skopiujemy w zamian prawego sąsiada (ponieważ wartość krawędzi jest dodatnia), więc krawędź staje się0
ponownie, a przepływ sterowania przeskakuje do ostatniego rzędu, gdzie@
kończy program.Wypróbuj online.
źródło
123456
, ale to nie tylko przestaje działać i trzeba go zabić. Czy to jest dozwolone?Perl, 46 znaków (bezpieczny)
Wydajność:
Kod:
Jakoś udało mi się usunąć oryginał w ciągu tygodnia, ale myślę, że to prawda:
źródło
Brainfuck, 48 znaków, złamany przez Mitcha Schwartza
Zrobiłem to dla złodziei. To zdecydowanie nie będzie zwycięskie zgłoszenie :)
To daje:
Rozwiązanie:
Testowałem to tutaj .
Wskazówka: Nie próbuj znajdować programów generowanych przez generatory online haha. Zostało to napisane ręcznie i może być rozwiązane tylko przez logiczne myślenie :)
źródło
CJam, 13 znaków
odbitki
Możesz wypróbować CJam online.
Rozwiązanie
Myślałem, że oparcie gliny na uogólnionym quinie było całkiem sprytne i nowatorskie. Gdy tylko to opublikowałem, zdałem sobie z tego sprawę
__
i jestemer
całkowicie bezużyteczny, dlatego opublikowałem 8-bajtowego gliniarza CJam, aby uzyskać bardziej konkurencyjny wynik. Pietu dość szybko go złamał, więc bałam się, że on też to rozwiąże. Przypuszczam, że uratowała go niepotrzebnie skomplikowana transliteracja znaków.W każdym razie kod pobiera własne znaki (oprócz
_~
), XOR każdy z 19 dla zaciemnienia, a następnie sortuje je.Ten gliniarz doprowadził mnie do „odkrycia” xortingu , chociaż tak naprawdę go tutaj nie używam (i prawdopodobnie byłoby prawie niemożliwe, aby użyć go z krótkim uogólnionym quine).
źródło
Głośne 3SP , 89 znaków (bezpieczne)
Oryginalny program:
Ten program drukuje
(zwróć uwagę na wiodące miejsce) i nic więcej!
Objaśnienie (* n odnosi się do n-tej komórki w pamięci):
Dwa ostatnie polecenia okazują się wystarczające, aby zapobiec ponownemu zwiększeniu wartości 1 przy kolejnych przejściach przez program, co oznacza, że nic już nigdy nie zostanie wydrukowane, chociaż ustawianie wszystkich adresów pamięci od * 36 do wartości 36 na zawsze .
źródło
an esolang in which structured programming is impossible and every program has to be written from scratch.
0_0 plus jeden ode mnie.This is probably not that language
. Jeśli usiądziesz i spróbujesz napisać program, który daje takie wyjście, prawdopodobnie otrzymasz coś bardzo podobnego.JavaScript (ES6), 60 znaków, Pęknięty przez użytkownika 81655
Nie jest obiecujący do wygrania, ale mam nadzieję, że złamanie go będzie przyjemnością:
Ta funkcja zwraca:
Edytować
user81655 podzielił go znak po znaku:
źródło
MatlabOctave, 27 znaków, bezpiecznyWyzwanie
Odnośnie nowych ograniczeń językowych: Działa również w Octave.
Dane wyjściowe (w oktawie): (
ans =
nie jest częścią wyniku, pierwszym znakiem jest"
)Wyjście (w Matlabie): (
ans = \n\n
nie jest częścią wyjścia, wyjście jest tylko ostatnim wierszem)Rozwiązanie
źródło
It also works in Octave.
R, 60 bajtów, pęknięty przez plannapusa
Wydajność:
Kod:
Myślę, że to nie będzie takie trudne. Zobaczymy.
źródło
Jolf , 27 znaków, Cracked by Adnan
odbitki
Interpreter .
Oryginalny kod:
Gratulacje dla Adnana! Przerażasz mnie.
Tutaj możesz przetestować swoje zgłoszenie, aby zobaczyć, ile znaków trzeba usunąć.
źródło
Fortran, 45 znaków, bezpieczny
Pełna wydajność:
Cat próbowała go tutaj złamać
Kod (45 znaków):
Kod programu:
źródło
/
!PHP, 46 znaków, bezpieczny
Źródło:
Zwraca ciąg znaków o długości 84 znaków:
Wskazówka
Ujawniony kod
źródło
CJam, 8 bajtów, Cracked przez Pietu1998
odbitki
Możesz wypróbować CJam online .
źródło
05AB1E , 13 znaków, pęknięty przez kwintopię
Jestem idiotą. Zapomniałem zaimplementować funkcję mocy (-_-。). Oto zaciemniony kod:
Mój oryginalny kod to:
Wyjaśnienie:
Spowoduje to:
Tak, to jest 99 zer, po których następuje 1.
Uwaga : mam teraz zaimplementowaną funkcję zasilania. Można to zrobić w sześciu bajtach:
źródło
"4"3*
= 12)Python 3.4, 127 znaków
To mój pierwszy post z miedziaków. Myślę / mam nadzieję, że nie jest to zbyt trudne ani zbyt oczywiste.
Zaciemniony kod:
tworzy ten wynik (na początku jest 5 spacji; całkowita długość wynosi 7740 znaków):
źródło
Pyth, 17 znaków, złamany przez Pietu1998
Wydajność:
Kod:
Moje rozwiązanie:
Rozwiązanie Pietu1998:
źródło
#
alternatywna forma była dla mnie nowa.)Malbolge, 254 znaki, złamane przez Adnana
Kod:
Wydajność:
W pewien sposób oszukiwałem, umieszczając miejsce dla każdej szóstej postaci. No cóż...
Pęknięty kod Adnana:
Oryginalny kod:
Oszukałem ponownie, używając generatora tekstu na Malbolge dla tego kodu.
źródło
Mathematica 10.1, 98 znaków, bezpieczny
Dane wyjściowe są tutaj . Cały wynik ma 838,316 znaków i znak nowej linii.
Kod:
Tak, należy to uruchomić w wersji 10.1. (podpowiedź) Oryginalny program:
źródło
MATL , 8 znaków, bezpieczny
Mamy nadzieję, że wkrótce będzie dostępna stabilna wersja kompilatora działającego w Octave. Tymczasem to zatwierdzenie GitHub działa , a w szczególności uruchamia oryginalny kod, który generuje wskazane dane wyjściowe
Zgłoszenie liczy się jako opublikowane 28 grudnia 2015 r., 15:30 UTC
Wydajność:
Kod (8 znaków):
Rozwiązanie
Co to robi:
źródło
Labirynt , 5 bajtów, Pęknięty przez Adnana
odbitki
Mój oryginalny kod to:
Zwróć uwagę na spację końcową.
Przypuszczam, że powinienem był wybrać więcej postaci i ujawnić jedną z nich
!
, ponieważ rozwiązanie Adnana rośnie tylko liniowo, gdy dodajemy więcej!
, podczas gdy moje rośnie kwadratowo.źródło
PHP, 28 znaków
Zwraca ciąg
źródło
ES6, 17 znaków, cracked przez Cᴏɴᴏʀ O'Bʀɪᴇɴ
Jest to funkcja, która zwróci ciąg
źródło
(i=106)=>i*i-3+''
JavaScript, 83 znaki, Pęknięty przez Martina Büttnera
Wydajność
Kod
Dane wyjściowe znajdują się w konsoli JS przeglądarki takiej jak Chrome / Firefox.
Oryginalny kod (który może być nieprawidłowy):
źródło
Pyth, 6 znaków, złamane przez Pietu1998
Kod:
Wydajność:
Możesz wypróbować Pyth tutaj
źródło
JavaScript ES6, 134 znaki
Hej chłopcze, było fajnie. Powodzenia!
Wyjścia:
źródło
CJam, 12 znaków, Cracked przez jimmy23013
Wydajność
Kod
źródło
Poważnie , 7 bajtów, Pęknięty przez Martina Büttnera
Wydajność:
Nie powinno to być zbyt trudne, nawet jeśli wynik nie jest dokładnie taki, jak można się spodziewać.
źródło
Python 3, 58 znaków, złamany przez Mitcha Schwartza
Kod:
Wydajność:
źródło
Befunge, 11 znaków, spękany (w funge-98) przez MegaTom
Wydajność:
Zaciemniony kod:
Wszystko w jednym wierszu, ponieważ zasady zabraniają wprowadzania nowych wierszy. Testowane przy użyciu http://www.quirkster.com/iano/js/befunge.html .
Edycja: Jest to legalnie złamane, ponieważ nie określiłem wersji, ale zauważ, że wciąż istnieje rozwiązanie Befunge-93.
źródło
Perl 5, 30 bajtów, złamany przez Adnana
Kod:
Wydajność:
Pęknięty:
Adnan znalazł trywialny trzask : oczywiście nie pomyślałem o tej układance wystarczająco dobrze. Zamiast tego skomponowałem inny .
źródło
Python 2, 62 znaki, Cracked przez Adnan
To wygląda trochę jak stół.
To wyprowadza ciąg
abcde
.Kod Adnana:
Mój kod:
źródło