Aby zobaczyć główne wyzwanie gliniarzy, kliknij tutaj
UWAGA - To wyzwanie jest teraz zamknięte. Wszelkie pęknięcia, które zostały teraz opublikowane, nie będą liczone na tablicy wyników, a zaakceptowana odpowiedź nie ulegnie zmianie.
Wyzwanie
Biorąc pod uwagę oryginalny program, jego dane wyjściowe i dane wyjściowe zmienionego programu, musisz dowiedzieć się, które znaki należy zmienić, usunąć lub dodać, aby uzyskać oczekiwany wynik.
Kiedy złamiesz czyjś kod, zostaw komentarz z linkiem do swojego cracku na jego odpowiedź.
Formatowanie
# [<language>, <username of program owner>](<link to answer>)
## Description
<description of change and how you found it>
## Code
<changed code>
Zwycięski
Osoba, która złamała najwięcej rozwiązań, wygrywa.
Tabela liderów
13 pęknięć:
- Dennis
8 pęknięć:
- Alex Van Liew
5 pęknięć:
- Sp3000
- isaacg
3 pęknięcia:
- Luis Mendo
- jimmy23013
- Dom Hastings
2 pęknięcia:
- mbomb007
- Sluck49
1 crack:
- Numer jeden
- Jakube
- ProudHaskeller
- David Zhang
- samgak
- paul.oderso
- rayryeng
- mgibsonbr
- n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨d̷̰̀ĥ̷̳
- Stewie Griffin
- w płomieniach
cops-and-robbers
Rozpad beta
źródło
źródło
Odpowiedzi:
CJam, Mauris
Opis
Oryginalny kod Maurisa wykonuje następujące czynności:
Żaden inny operator matematyczny CJam nie dałby tak dużej liczby dla małych danych wejściowych, więc
:#
nie można go modyfikować. Ponieważ#
, gdy jest używany do potęgowania, przyjmuje tylko liczby całkowite jako dane wejściowe,:i
nie można go również usunąć. Pozostawia tylko jedno miejsce do modyfikacji danych wejściowych: ciąg"f~"
.Bez względu na to, ile znaków ma łańcuch, wynikiem będzie wieża mocy powiązana z lewą stroną. CJam obsługuje znaki z zakresu od 0 do 65535 (z wyjątkiem surogatów), więc musimy wyrazić wynik jako b n × k × j , gdzie b , n , k i j są liczbami całkowitymi w tym zakresie.
Logarytm dziesiętny liczby całkowitej wynikający ze zmodyfikowanego kodu jest nieco mniejszy niż log 10 (2,44 × 10 242545 ) = log 10 (2,44) + 242545 , więc możemy podzielić tę wartość przez logarytmy wszystkich możliwych zasad, aby znaleźć odpowiednie wartości dla n × k × j .
W rzeczywistości:
Porównanie pierwszych 8 cyfr okazało się wystarczające.
Oznacza to, że możemy wyrazić wynik jako 5 347,004 = 15625 57,834 = 125 9 × 102 × 126 , tak, że wystarczy zastąpić
"f~"
z"㴉"
lub"} f~"
.Kod
lub
Zauważ, że spacje w kodzie ASCII powinny być tabulatorem.
Próba wykonania tego kodu w tłumaczu online jest prawdopodobnie złym pomysłem, ale oto jak możesz sprawdzić wyniki z wiersza poleceń:
źródło
~f
gdzieś w programie.Ruby, histokrat
Opis
Zmieniono x na tablicę zamiast skalara, dodając
*
Zmieniono ostatni,
9
aby był ciągiem zamiast liczby, dodając?
Wynik składa się z tablicy z
[9]
9-krotnym pomnożeniem jednego elementu ( ), a następnie zaimportowanym"9"
jako separator.Kod
źródło
Python 2, błotniak
Opis
Dzięki próbom i udrękom obejmującym rozkładanie dużych liczb i szukanie kolejnych czynników, zdałem sobie sprawę, że wystarczy zmiana 87654 na 58116. Następnie rozłożyłem 58116 na 87 * 668. Potem zdałem sobie sprawę, że 01234 = 668, więc po prostu musiałem zmienić 87654 na 87 i całkowicie usunąć 01234. Dokonuje się tego za pomocą komentarza.
Kod
źródło
print sum(range(054321)*9876)*87#654)/01234
)Shakespeare, AboveFire
W scenie III należy zmienić Klaudiusza na Claudio w następującym fragmencie:
Zmodyfikowany kod:
Drukuje się przy użyciu kompilatora połączonego przez @AveveFire
11
.źródło
Prolog, Fatalize
Opis
Dodaj dwa
\
s.\
jest bitową negacją i\/
jest bitową lub.Kod
źródło
MATLAB / OCTAVE, Stewie Griffin
Prosty kawałek złożonej arytmetyki.
źródło
C, LambdaBeta
Opis
Zamień się
main(a,_)
wmain(_)
. Pierwszym argumentem mainargc
jest inicjalizowany jako1
.Kod
źródło
Python 2, rp.belrann
Zmień zewnętrzne rozumienie listy na zrozumienie zestawu. Częściowe uznanie dla @ mbomb007, który wyeliminował wszystkie „nudne” rozwiązania (zamiana
x
iy
dookoła, modyfikowanie operatorów, zmiana zasięgu).Wyjaśnienie:
W oryginale
[(x,y)[x%2]for x in[y for y in range(8)]]
generuje następującą listę:Wynika to z faktu, że w Pythonie 2.7
y
wewnętrzne zrozumienie listy wycieka do otaczającego zakresu przy ostatniej znanej wartości (która na końcu zakresu wynosi 7). Tak więc w krotcey
jest zawsze 7.x
, jednak przechodzi przez listę jak zwykle, w zakresie od 0 do 7. Kiedyx
jest parzysty, wybiera wartośćx
, gdy jest nieparzysty, wybieray
(która jest zawsze 7). Zauważyłem, że jeśli podam dokładnie jedną 7 i wszystkie pozostałe wartościx
, otrzymam 19; wtedy zdałem sobie sprawę, że mogę przekształcić zewnętrzne rozumienie w ustalone zrozumienie, które wyeliminuje wszystkie zduplikowane wartości i pozostawi mi dokładnie 19.To było całkiem sprytne, nie sądzę, żebym kiedykolwiek wcześniej używał ustalonego zrozumienia. Sława.
źródło
print len('~'*sum([(x,y)[x%2]for x in[y for y in range(6)]]))
zwraca21
. Po prostu przypisz kod do zmiennej, a następnie wypisz, jeśli jest równy pożądanemu ciągowi. Jeśli widziszTrue
, złamałeś go._
chyba mnie zdradził.Jonas, Matlab / Octave
Opis
Zauważyłem, że odpowiedź brzmi
i^pi
, więc po prostu musiałem zmienićsin
się w nop.Kod
s
->0
,n
->+
źródło
Bash, Dennis
Oryginalny kod:
Oryginalne wyjście:
Zmodyfikowany kod:
Zmodyfikowane wyjście:
Wyjaśnienie:
W Bash możesz wypisać listę elementów oddzielonych przecinkami w parze nawiasów klamrowych:
odbitki
Zmodyfikowany kod wypisuje więc listę niczego, liczby 1..9, nic.
źródło
MATLAB, Luis Mendo
Oryginalny kod:
Nowa odpowiedź:
Opis:
Zmieniono
-sin
napsi
funkcję polygamma w MATLAB.-
Znak jest podstawionyp
in
jest usuwany.źródło
C, LambdaBeta
Opis
Zmień
-1
na,*0
aby wynik pomnożenia był0
wynosił (wartość falsy).Kod
źródło
Brainfuck, Kurousagi
Opis
Usuń pierwszy
>
i zmień pierwszy<
na.
Testowany na brainfuck.tk . Należy pamiętać, że wyjście nie pasuje słupek Kurousagi jest dokładnie , ze względu na SE pochłania znaki niedrukowalne.
Kod
źródło
Fantom, Cain
Bezpieczeństwo poprzez zaciemnienie jest bardzo słabą formą bezpieczeństwa (szczególnie, gdy dwie metody są obok siebie w dokumentach Fantom i każdy, kto wie, jak wygląda float, natychmiast wie, co robić).
źródło
CJam, Basset Hound
Oblicza e 25 . Wypróbuj online.
Interpretator online daje nieco inny wynik w mojej przeglądarce, co wydaje się być zaokrągleniem.
Interpreter Java drukuje
7.200489933738588E10
, co jest pożądanym wyjściem, ale w innym formacie.źródło
Python 2, Sp3000
Opis
Zmieniono
01234
na0x1234
imin
na9in
.Fakt, który
4669 = (01234-1)*sum(m<<m in R for m in R)
wprowadza w błąd.Kod
źródło
m<<m in(m,n)
, ale najważniejsze było, aby zmienićmin
sięin
.MATLAB / Octave, Stewie Griffin
Opis
Wymagało to zanegowania danych wejściowych do funkcji anonimowej
g
, a także zmiany współczynnika skalowaniag
funkcji na 2 zamiast 7:Kod
źródło
Perl, obficie
Opis
Dodaj operator powtarzania ciągów
x
i wstaw dodatkową cyfrę!Kod
źródło
Java, TheNumberOne
Opis
Program jest jednorazową implementacją
Random.next()
z początkowym początkiemInteger.MAX_INT
i wszystkimi liczbami szesnastkowymi konwertowanymi na dziesiętne. Zmiana materiału siewnego na uzupełnienieMAX_INT
generuje dane wyjściowe:(ponieważ muszą być dokładnie dwie zmiany, wybierz dowolną zmianę bez opcji: dodanie gdzieś spacji, dodatkowego średnika itp.)
źródło
Integer.MAX_VALUE
sięInteger.MAX_VALUE+1
lubInteger.MIN_VALUE
+1
ale odkąd robiłem to w Pythonie, po prostu przeszło na długą, ahaha. Właściwie to była moja pierwsza myśl.Brainfuck, AboveFire
ten program jest modyfikacją tego kodu odpowiedź cookie. odpowiedź ta polega na wstępnym obliczeniu tabeli przydatnych kodów ascii przydatnych znaków, a następnie zawiera trzy instrukcje warunkowe złożone z trzech pętli, do których wprowadza się
1
ustawienie prawidłowej pozycji.początek tego, jak złamałem kod, polega na tym, że powtarzający się wzorzec w zmienionym wyjściu jest w większości drukowany, jeśli wejdziesz w trzecią pętlę z tabelą przesuniętą w lewo.
(dodatkowe znaki są oznaczone nawiasami)
źródło
Python 2, błotniak
Opis
Change
<<
to<>
(deprecated version of!=
) and0x156
to0156
, the code point for"n"
(which appears 3 times in the length 23 string'<built-in function sum>'
).Code
źródło
JavaScript, by Razvan
Description
The modified output is clearly Euler's natural number, which can be accessed as
Math['E']
.By changing
''
to'3'
and32
to36
,String.fromCharCode
generates theE
.Code
źródło
Fantom, Cain
Description
The array indexing is set up already, so I just need to make a 55. Honestly, the hardest part was downloading the language.
Code
(Inserted a comma,
0
->3
)źródło
Shakespeare, AboveFire
NOT CORRECT - sorry :(
Will look further into it when i get home from work In the original Claudio's value is 1132462081 and Claudius' value is 1
In the final Scene Claudio's value is printed twice,
open your heart x2 = print value of the other person on stage (Claudio). So if you change Claudius to Claudio(2 chars) - the value of Claudius will be printed - which is 1 - twice
źródło
VBA by JimmyJazzx
Changed
IRR
toMIRR
and changed5
to a,
so there are 3 parameters.I found this while looking for how Excel's
IRR
function works. There was an article: How Excel's MIRR Function Can Fix the IRR Function. That tipped me off. Clever attempt, though. I'd never used VBA before, so that was interesting as well.źródło
Matlab / Octave, Jonas
Description
In the last line, add
'
to transformarg'
into the string'arg'
, which will then be interpreted as ASCII numbers. And then add another'
at the end to maintain the column format.The almost unnecessary
'
in the original code was the main clue. Also, in restrospect, the fact thatarg
was defined separately (instead of directly within thesin
line) should have looked suspicious.Code
źródło
bc, abligh
Merely inserted the math operators. Took about 1 minute to solve once I looked up what bc was and what math operations it had. The first thing I thought of was division, but there weren't common factors that looked nice. So I immediately went for exponentiation and modulus. At least 15 digits were necessary for the modulus b/c of the expected output. After that, I guessed twice and found it.
źródło
Lua, TreFox
Description
"_G" is the global table, making "_G.load" refer to the global function "load". Converting a function to a string results in returning the function's address, which is then made into the length of the string by the length-operator "#".
Code
Also, since this is my first post on here, I can't make a comment on the original answer.
źródło
0x321a40c6d0
, for a final output of22
.load
, and I knew_G
referred to the global symbol table... I just didn't put the two together.Python, rp.beltran
Description
I noticed that the needed letters were always 2 in front of a digit. changing the third
\w
to\d
got all of the right letters except the spaces.\D
was the only\
group I could find that allowed letters and spaces.Code
w
->D
,w
->d
in the regex.źródło
Pyth, isaacg
Description
The original code does the following:
Since 156490583352162063278528710879425690470022892627113539022649722 - 58227066 gives 156490583352162063278528710879425690470022892627113538964422656, which equals 226 × 3 × 7 × 7477 × 381524422711 × 17007550201751761 × 2288745700077000184147, the desired output can be obtained by replacing
^3y21
with something that evaluates to a divisor of this product and is larger than 58227066.The
^
in the original code suggests that we might use it to calculate a power of 2, the 3 that we could calculate a fitting divisor of the form 3 × 2n.Both are misleading. Solutions with a Levenshtein distance of 3 (
%CG^2 26
,%CG^y2 13
,%CG^4y13
) or 4 (%CG.<3y13
) are readily found, but the solution at distance 2 requires a different approach.The lowercase alphabet (
G
) has 26 letters, so its power set (the set of all strictly increasing sequences of lowercase letters) has 226 elements. By replacingy2
withyG
, we compute this power set.We can retrieve the set's length by replacing
3
withl
, which leaves us with^lyG1
, i.e., 226 raised to the first power.Code
Note that this will only work on a computer with enough available memory (roughly 6.43 GiB, according to
time
), so it will not work with the online interpreter.Here's how you can verify the results from the command line:
źródło