UWAGA - To wyzwanie jest teraz zamknięte. Wszelkie nowe odpowiedzi zostaną zignorowane, a zaakceptowana odpowiedź nie ulegnie zmianie
Wyzwanie
Napisz prawidłowy program, który, gdy tylko dwa znaki w programie zostaną zmienione, usunięte lub dodane, całkowicie zmieni dane wyjściowe.
Zmieniona moc wyjściowa musi mieć odległość Levenshteina 15 lub więcej od oryginalnej mocy wyjściowej.
Dane wyjściowe muszą być niepuste i skończone. Twój program musi zatem zakończyć się w ciągu 1 minuty.
Twój wynik musi być deterministyczny, generując to samo przy każdym uruchomieniu programu. Nie może również zależeć od platformy.
Wszelkie funkcje skrótu są niedozwolone , podobnie jak wbudowane w PRNG. Podobnie, inicjowanie RNG jest niedozwolone.
Po upływie trzech dni nieprzesłane zgłoszenie stanie się bezpieczne. Aby domagać się tego bezpieczeństwa, należy edytować swoją odpowiedź, aby pokazać poprawną odpowiedź. (Wyjaśnienie: Dopóki nie ujawnisz odpowiedzi, nie jesteś bezpieczny i nadal możesz zostać złamany.)
Formatowanie
Twoja odpowiedź powinna mieć następujący format:
# <Language name>, <Program length>
## Code
<code goes here>
## Original Output
<output goes here>
## Changed output
<changed output goes here>
Rabusie
Wyzwaniem rabusiów jest ustalenie, które dwie postacie zmieniłeś. Jeśli złodziej złamał twoje rozwiązanie, skomentuje twoją odpowiedź.
Wątek złodziei znajdziesz tutaj .
Zwycięski
Osoba z najkrótszym nieskradzionym rozwiązaniem wygrywa.
Tabela liderów
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>site = 'meta.codegolf';postID = 5686;isAnswer = false;QUESTION_ID = 54464;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var bylength=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){ jQuery(l[1]).empty(); l[0].sort(o); for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]); if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function g(p) { jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s) { s.items.map(function(a) { var he = jQuery('<div/>').html(a.body).children().first(); he.find('strike').text(''); var h = he.text(); if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b) { var c = jQuery('<div/>').html(b.body); return /^cracked/i.test(c.text()) || c.find('a').filter(function() { return /cracked/i.test(jQuery(this).text()) }).length > 0 }).length == 0)) { var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+)\s*(?:[,;(]|\s-).*?([0-9]+)/.exec(h); var e = [[n++, m ? parseInt(m[2]) : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )]; if(/safe/i.test(h)) safe_list.push(e); else uncracked_list.push(e); } }); if (s.length == 100) g(p + 1); else { var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']]; for(var p=0;p<2;p++) u(s[p],bylength); jQuery('#uncracked_by_length').bind('click',function(){u(s[0],bylength);return false}); jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false}); } });}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><style>table th,table td { padding: 5px;}th { text-align: left;}.score { text-align: right;}table a { display: block;}.main { float: left; margin-right: 30px;}.main h3,.main div { margin: 5px;}.message { font-style: italic;}</style><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Length</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_length">length</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Length</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
źródło
Odpowiedzi:
CJam, 13 bajtów (bezpieczny)
Wypróbuj online.
Oryginalne wyjście
Zmodyfikowane wyjście
Rozwiązanie
Wypróbuj online.
Jak to działa
Wykorzystuje to sposób, w jaki CJam domyślnie drukuje cały stos po uruchomieniu programu.
Po prostu zrzucenie reprezentacji base-2 kilku liczb całkowitych na stosie powoduje, że są one drukowane bez żadnego separatora, więc trudno będzie ustalić, gdzie jedna z nich się zaczyna, a druga kończy.
Oryginalny kod wykonuje następujące czynności:
Jak zauważa @AndreaBiondo w komentarzach, reprezentacje binarne 0! do 8! można znaleźć na początku danych wyjściowych (dodano spacje dla zachowania przejrzystości):
Zamierzoną zmianą było zastąpienie
mQ
przezci
, który przyjmuje liczbę całkowitą modulo 65536, przy użyciu arytmetyki 16-bitowych znaków (rzutowanie na 16-bitowy znak bez znaku, a następnie powrót do liczby całkowitej).Miałem nadzieję, że pomysł
c
zastąpienia operatora matematycznego będzie dość niejasny.źródło
_)mQ
należy go zmienić naf(x!)
taki, żef(x!) > x!
forx <= 8
andf(x!) < x!
forx >= 9
, ponieważx!
oczywiście był modulowany przez liczbę, która pozostawiła silnie od 0 do 8 nienaruszone na wyjściu. Nie zauważyłem,9!
że pierwszy czynnik był większy niż2^16
. W każdym razie bardzo fajne wyzwanie.Pęknięty
Szekspir, 1721 bajtów
Próbowałem odpowiedzi Szekspira. Nie jest krótki i miałem trudności ze zmianą wyników za pomocą tylko 2 znaków, ale myślę, że udało mi się całkiem dobrze. Powodzenia wszystkim. Na marginesie użyłem „kompilatora” dostępnego pod tym adresem i może on nie działać z innym. (nie działa z tłumaczem online) Dane wyjściowe nie zawierają żadnych niedrukowalnych znaków.
Kod
Oryginalne wyjście
Zmieniono wydajność
źródło
J, 76 bajtów (bezpieczny)
Kod
Oryginalne wyjście
Zmieniono wydajność
EDYCJA:
{:
Dodano rozwiązanie (pokazano między###
)Wykorzystuje
{::
mapę monady . Większość reszty kodu to bezużyteczne śmieci.źródło
Pęknięty
Ruby, 14 lat
Kod
Oryginalne wyjście
Zmieniono wydajność
źródło
'99'*2
.wc
, zdradziłeś mnie!Pęknięty
Bash, 15 bajtów
Oryginalne wyjście
Zmodyfikowane wyjście
źródło
Pęknięty
Prolog, 10 bajtów
Kod
Oryginalne wyjście
Zmieniono wydajność
źródło
X is 1//4-2.
co jest o wiele łatwiejsze do zauważenia niż moje oryginalne rozwiązanie, które @ sp3000 pękało ...Pęknięty
Python 2, 43 bajty
Kod
Oryginalne wyjście
Zmieniono wydajność
Odległość Levenshteina wynosi dokładnie 15. Zarówno oryginał, jak i zmienione, działają na moim komputerze w czasie poniżej 1 minuty.
źródło
print
języka Python 2, z powodu brakujących nawiasów i mnożeniarange
przez liczbę całkowitą. Wydaje mi się jednak, że dostajęMemoryError
s z dużej listy ...xrange
zamiast tegorange
i wydaje mi się, żeitertools
ma generator generatorów, który powtarza sekwencjęx
kilka razy.Pęknięty
BrainFuck, 504 bajty
Nikt nigdy nie powinien analizować kodu „pieprzony mózg”. To jest zmodyfikowana wersja wcześniejszego kodu, ale każda zmiana w kodzie Brainfuck robi dużą różnicę w wynikach. Używam interpretera na stronie http://esoteric.sange.fi/brainfuck/impl/interp/i.html do testowania mojego kodu. Powodzenia !
Kod
Oryginalne wyjście
Zmieniono wydajność
Uwaga: Zmienione wyjście zawiera kilka znaków STX (ASCII 2) i EOT (ASCII 4)
Oto wersja z kodami ASCII w nawiasach zamiast znaków niedrukowalnych:
źródło
pęknięty
Wolfram Language (Mathematica lub WolframAlpha), 3 bajty
Kod
Oryginalne wyjście
Zmieniono wydajność
Dla tych, którzy próbują go na WolframAlpha, wynik pokazuje się jako
Usunąłem poprzednią odpowiedź, ponieważ działała tylko na Mathematica, a nie w WolframAlpha . Stawało to rabusiów za zapłatą (zamiast zasłużonych krat), co było niesprawiedliwe.
źródło
Pęknięty
MATLAB / OCTAVE, 7 bajtów
Kod:
Oryginalne wyjście:
Zmieniono wydajność:
Daje to odległość Levenshteina dokładnie 15.
źródło
Pęknięty
CJam, 8 znaków
Kod
Oryginalne wyjście
Zmieniono wydajność
Dane wyjściowe po modyfikacji są tutaj . Oba zajmują mniej niż minutę na moim laptopie 2GHz.
Wyjaśnienie
Ludzie wydają się zdumieni, jak to działa. Kod działa w następujący sposób:
Oblicza to 126 ^ 102. Rozwiązaniem było:
Oblicza to ((125 ^ 9) ^ 126) ^ 102, który ma setki tysięcy cyfr.
źródło
Pęknięty
Pyth, 8 bajtów
Kod:
Wyjściowe wyjście:
Zmieniono wydajność:
źródło
CG mod (2^21 * 28)
. Nie znam Pytha, więc nie widzę, jak się w to zmienić(3 ^ (2 * 21))
...CG
jest równasum(256**n * (122-n) for n in range(26))
.CG mod (2^21 * 28 * 2*n)
, gdzie1 <= n <= 4
, a także dlan=6
in=12
. PonadtoCG
jest to tylko mały alfabet interpretowany jako podstawowa liczba 256. Zastanawiam się, czy jest jeszcze inny moduł z bazą 3?%CG^2 26
lub%CG^4y13
, ale oba mają dystans 3 ...Pęknięty
Python 2, 58 bajtów
Kod
Oryginalne wyjście
Zmieniono wydajność
Ta reguła 15 dystansów z pewnością utrudniała grę. Mam nadzieję, że wszystko pójdzie dobrze.
źródło
[m<<min(m,n)for m in R for n in R]
w tłumaczu, otrzymasz naprawdę straszne, białe szumy.Pęknięty
Python 2, 50 bajtów
Kod oryginalny:
Oryginalne wyjście:
Zmodyfikowane wyjście:
Nie za krótko i może nie za mocno, tak naprawdę nie wiem. Postaram się wkrótce wymyślić coś lepszego.
źródło
x
zy
,y
zx
, lub zmiany cyfry wrange
rezultacie w 19 tyldami. Ja również eksperymentował z wstawiając-
przed albox
alboy
i ze zmieniającymi się%
do jednego+ - / *
, bezskutecznie. Jestem całkiem pewien, że teraz wymagana jest 1 lub 2 wkładki.y
do lunety było miłym akcentem.Pęknięty
PHP, 164 bajty
Kod
Oryginalne wyjście
Zmieniono wydajność
źródło
GolfScript, 15 bajtów (bezpieczny)
Kod
10,{1+3?}%{*}*]
Zmieniono kod
107,{1+3?}%{^}*]
Oryginalne wyjście
47784725839872000000
Zmieniono wydajność
557154
Wyjaśnienia:
Zmieniono kod
źródło
Pęknięty
APL , 7 bajtów
Kod
Oryginalne wyjście
Zmieniono wydajność
źródło
J
wynikowy dowód, że jest to liczba zespolona?aJb
odnosi się do liczby zespoloneja + bi
.Pęknięty
C, 53 bajty
Kod
Oryginalne wyjście
Zmieniono wydajność
Prawdopodobnie zbyt łatwe, ale kto wie. (Uwaga: jest to technicznie zależne od systemu, ale rodzaj systemu, na którym się nie powiedzie, również nie powiedzie się w przypadku wszystkich innych zgłoszeń tutaj, więc pomyślałem, że to kwestia sporna).
Pęknięty
Edytować
Popełniłem błąd. Nowy kod, który jest bardziej bezpieczny dla oczywistego ataku:
te same wyjścia. Nowy rozmiar 65 bajtów. Mam nadzieję, że trudniejsze ... choć nadal prawdopodobnie zbyt łatwe.
źródło
Pęknięty przez issacga
MATLAB, 20 bajtów
Kod
Oryginalne wyjście
Zmieniono wydajność
źródło
sinh
,asin
,tan
,pi^i
, itd ...Pęknięty
Oktawa, 20 bajtów
Wynik:
Zmieniono wydajność:
źródło
CJam, 28 bajtów (bezpieczny)
Wypróbuj online .
Oryginalne wyjście
Zmodyfikowane wyjście
Rozwiązanie
Wypróbuj online.
Jak to działa
Zrobiłem trochę za burtę z tym ...
Oryginalny kod wykonuje następujące czynności:
Zamierzona zmiana zostanie zastąpiona
(i
przezWci
.Powoduje to, że powtarzany ciąg pozostaje nietknięty i przesuwa 65535 (rzutując na znak bez znaku 16-bitowego, a następnie z powrotem na liczbę całkowitą), dzięki czemu pierwsze elementy opóźnionej sekwencji Fibonacciego stają się
a pętla jest powtarzana 126 razy.
źródło
JavaScript, 47 (bezpieczny)
Kod
Oryginalne wyjście
Zmieniono wydajność
Odległość wynosi dokładnie 15.
Testowane w Chrome i IE.
Rozwiązanie
Wykorzystuje to operator przypisania przesunięcia bitów,
i>>=1
aby interwał pętli był nieliniowy. Ma to również zabawną właściwość, że ktoś próbujący brutalnie wymusić rozwiązanie natrafi na kilka wariantów, które działają nieskończenie.źródło
Pęknięty
Fantom , 26
Kod
Oryginalne wyjście
Zmieniono wydajność
Bezpieczeństwo Przez Obscurity, jeśli nikt nie zna języka, nikt nie może go złamać. Levenshtein Odległość 15. Uruchom go w fansh.
źródło
Pęknięty
CJam, 6 znaków
Oryginalne wyjście
Zmieniono wydajność
To może być zbyt łatwe. : P
źródło
Pęknięty
Java, 149 znaków
Oryginalne wyjście
Zmodyfikowane wyjście
Wskazówka:
źródło
Brainfuck, 100 bajtów
Kod
Oryginalne wyjście
Zmieniono wydajność
Uwaga: Prawdopodobnie łatwe do złamania. Ale w Brainfuck nic nie jest łatwe.
źródło
pęknięty
nowoczesny Perl 5, 70
Kod
Oryginalne wyjście
Jedna nowa linia.
Zmieniono wydajność
Wyjście rozpoczyna się spacją i kończy na nowej linii.
źródło
each
dotyczy tablicy tylko od niektórych wersji.Pęknięty
Matlab, 12 bajtów
Kod
Oryginalne wyjście
Zmieniono wydajność
źródło
perl, 12 bajtów
pęknięty
Kod
Oryginalne wyjście
Pożądane wyjście
źródło
print sin xx
,print sin xx97
alboprint sin 97xx
gdziexx
jest dwa dowolne numery.9.?7
,9.7?
itp, ale zrozumiał, że musiał być operatorem. Wypróbowałem wszystko, co mogłem wymyślić we fragmentach, jak wperl -e 'print map{sin((+"9${_}")x7).$/}1..9'
końcu uzyskałem właściwą kombinację!Pęknięty
SWI-Prolog, 54 bajty
Kod
Oryginalne wyjście
Zmieniono wydajność
źródło
E
iF
wprint
wyciągach dostajesz to, czego chcesz?