Two robi różnicę - rabusie


29

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

1
@ mbomb007 Czy możesz powstrzymać się od edytowania tego postu, ponieważ trudniej mi jest wiedzieć, gdzie jestem podczas aktualizacji tabeli wyników
Beta Decay

Odpowiedzi:


10

CJam, Mauris

Opis

Oryginalny kod Maurisa wykonuje następujące czynności:

"f~"     e# Push that string on the stack.
    :i   e# Cast each to integer. Pushes [102 126].
      :# e# Reduce by exponentiation. Pushes 102^126.

Ż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, :inie 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:

$ cjam <(echo '65536,2>{2.44AmL242545+1$AmL/i:I#s8<"24399707"=}=SIN')
5 347004

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

"㴉":i:#

lub

"}  f~":i:#

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ń:

$ wget -q https://bpaste.net/raw/f449928d9870
$ cjam <(echo '[15625 57834]:c`":i:#") > mauris.cjam
$ cat mauris.cjam; echo
"㴉":i:#
$ cjam mauris.cjam | diff -s - f449928d9870
Files - and f449928d9870 are identical
$ echo -en '"}\tf~":i:#' > mauris-ascii.cjam
$ cat mauris.cjam; echo
"}  f~":i:#
$ cjam mauris-ascii.cjam | diff -s - f449928d9870
Files - and f449928d9870 are identical

11
Nie można po prostu pokonać Dennisa w CJam
Fatalize

Jak wymyśliłeś, jakich liczb użyć?
Alex Van Liew

@AlexVanLiew Brute force. Obecnie piszę wyjaśnienie. Chciałem tylko opublikować crack, zanim zrobi to ktoś inny.
Dennis,

@Dennis: Wystarczająco uczciwy. Próbowałem tego, ale nie znam CJam; Uznałem, że zamierzonym rozwiązaniem było użycie ~fgdzieś w programie.
Alex Van Liew

1
@ Mauris Pytanie mówi, kiedy zmieniane są tylko dwa znaki w programie (moje podkreślenie), więc założyłem, że było OK. W każdym razie faktoryzacja liczby była trudna.
Dennis,

15

Ruby, histokrat

Opis

Zmieniono x na tablicę zamiast skalara, dodając *

Zmieniono ostatni, 9aby 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

x=*9;puts x*9*?9

12

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

print (sum(range(054321)*9876)*87)#654)/01234

Tak, prawie dokładnie tak, jak to miałem (mój był print sum(range(054321)*9876)*87#654)/01234)
Blue

Sprytnie sprytnie! Cieszę się, że ktoś to dostał i że było to bardziej interesujące niż „zabawa liczbami”!
Alex Van Liew

11

Shakespeare, AboveFire

W scenie III należy zmienić Klaudiusza na Claudio w następującym fragmencie:

[Enter Claudio]

Claudius:
 Thou art as stupid as the sum of thee and the product of the 
 product of me and Helen and Helena

[Exeunt]

Zmodyfikowany kod:

The Hidden Change.

Helen, a young woman with a remarkable patience.
Helena, a likewise young woman of remarkable grace.
Claudio, a remarkable man much in dispute with Claudius.
Claudius, the flatterer.
The Archbishop of Canterbury, the useless.


          Act I: Claudius's insults and flattery.

          Scene I: The insulting of Helen.

[Enter Claudius and Helen]

Claudius:
 Thou art as hairy as the sum of a disgusting horrible fatherless 
 dusty old rotten fat-kidneyed cat and a big dirty cursed war.
 Thou art as stupid as the product of thee and a fat smelly 
 half-witted dirty miserable vile weak son.

[Exeunt]

          Scene II: The complimenting of Helena.

[Enter Claudio and Helena]

Claudio:
 Thou art the sunny amazing proud healthy peaceful sweet joy.
 Thou art as amazing as the product of thee and the pretty
 lovely young gentle handsome rich Hero. Thou art as great 
 as the sum of thee and the product of a fair golden prompt good honest 
 charming loving noble king and a embroidered rich smooth golden angel.

[Exeunt]

          Scene III: The insulting of Claudio

[Enter Claudius and Helen]

Helen:
 Thou art as stupid as the sum of the sum of thee and a cat and me.
[Exit Helen]

[Enter Claudio]

Claudio:
 Thou art as stupid as the sum of thee and the product of the 
 product of me and Helen and Helena

[Exeunt]

          Scene IV: The Final Countdown

[Enter The Archbishop of Canterbury and Claudius]

Claudius:
 Thou art the sum of you and a cat.

The Archbishop of Canterbury:
 Am I better than a fine road?

Claudius:
 If not, let us return to the insulting of Claudio.

[Exit The Archbishop of Canterbury]

[Enter Claudio]

Claudius:
 Open your heart!
 Open your heart!
[Exeunt]

Drukuje się przy użyciu kompilatora połączonego przez @AveveFire 11.


2
Czy możesz wyjaśnić, które postacie zostały zmienione? Niełatwo jest patrzeć w tę iz powrotem.
mbomb007,

Cholera, 15 minut spóźnienia. Gratulacje.
Sumyrda - Przywróć Monikę

2
Jeebus H. Christ. Dobra robota!
rayryeng - Przywróć Monikę

1
@ mbomb007 Mam nadzieję, że moja edycja wyjaśniła. AboveFire: przepraszam :)
plannapus

3
@plannapus Haha, jest w porządku, ale zamierzonym sposobem, aby to wyczyścić, było zastąpienie słowa „król” słowem „świnia”. Dzięki tej zmianie Helena była równa 0 oraz „sumie ciebie i iloczynu mojego produktu a Helen i Helena ”były równe 1. Zrobiłem listę wszystkich słów, które można odwrócić dwiema literami, i użyłem wielu z nich w moim kodzie (np .: radość-> świnia-> syn, wojna-> kot, road-> ropucha, Hero-> Piekło, klątwa-> torebka, helen-> helena, claudio-> claudius i wiele innych) Jedyne, co może zmienić program Szekspira za pomocą 2 znaków, to zmiana zmiennej, zmiana rzeczownik i zmiana goto.
AboveFire



7

C, LambdaBeta

Opis

Zamień się main(a,_)w main(_). Pierwszym argumentem main argcjest inicjalizowany jako 1.

Kod

main(_){puts(_*_-1||_*_*_-1||_*_*_*_-1?"Expected Output":"?");}

To rozwiązanie miałem na myśli. Dobry chwyt. Nawiasem mówiąc, jeśli argv zostanie załadowany do komórki pamięci 1, to nie zadziała. Po prostu nie mogę wymyślić żadnego systemu, który by to zrobił, który mógłby obsługiwać różne interpretowane języki na tej stronie.
LambdaBeta,

6

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 xi ydookoła, modyfikowanie operatorów, zmiana zasięgu).

'~'*sum({(x,y)[x%2] for x in[y for y in range(8)]})

Wyjaśnienie:

W oryginale [(x,y)[x%2]for x in[y for y in range(8)]]generuje następującą listę:

[0, 7, 2, 7, 4, 7, 6, 7]

Wynika to z faktu, że w Pythonie 2.7 ywewnę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 krotce yjest zawsze 7. x, jednak przechodzi przez listę jak zwykle, w zakresie od 0 do 7. Kiedy xjest parzysty, wybiera wartość x, gdy jest nieparzysty, wybiera y(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.


nie. To nie to. print len('~'*sum([(x,y)[x%2]for x in[y for y in range(6)]]))zwraca 21. Po prostu przypisz kod do zmiennej, a następnie wypisz, jeśli jest równy pożądanemu ciągowi. Jeśli widzisz True, złamałeś go.
mbomb007,

Dziwaczny. _chyba mnie zdradził.
Alex Van Liew

@ mbomb007 Mam to.
Alex Van Liew

Masz mnie. Dobra robota.
rp.beltran


5

Bash, Dennis

Oryginalny kod:

echo {{{1..9}}}

Oryginalne wyjście:

{{1}} {{2}} {{3}} {{4}} {{5}} {{6}} {{7}} {{8}} {{9}}

Zmodyfikowany kod:

echo {,{1..9},}

Zmodyfikowane wyjście:

1 2 3 4 5 6 7 8 9

Wyjaśnienie:

W Bash możesz wypisać listę elementów oddzielonych przecinkami w parze nawiasów klamrowych:

echo {a,b,c}

odbitki

a b c

Zmodyfikowany kod wypisuje więc listę niczego, liczby 1..9, nic.


5

MATLAB, Luis Mendo

Oryginalny kod:

-sin(2:.5:3)    
ans =    
   -0.9093   -0.5985   -0.1411

Nowa odpowiedź:

psi(2:.5:3)
ans =
    0.4228    0.7032    0.9228

Opis:

Zmieniono -sinna psifunkcję polygamma w MATLAB. -Znak jest podstawiony pi njest usuwany.


4

C, LambdaBeta

Opis

Zmień -1na, *0aby wynik pomnożenia był0 wynosił (wartość falsy).

Kod

main(a,_){puts(_*_*_*_*_*0?"Expected Output":"?");}

Ups, wygląda na to, że wprowadziłem (błąd bezpieczeństwa?) Podczas gry w golfa. Bezczynnie zastanowię się, czy mogę to naprawić. Niezły chwyt.
LambdaBeta,

4

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

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[>.+<-]

@muddyfish Podłączyłem tę odpowiedź w moim drugim komentarzu, ale wciąż czekam na potwierdzenie od Kurousagi
Sp3000,

4

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ć).

Float.makeBits32(1123581321)

1
Dostałeś mnie przez 1 minutę !!! dobrze zagrane
AboveFire,

1
Haha, masz mnie, ciesz się darmowym crackiem
Cain

@Cain Czy to zamierzone oo
The_Basset_Hound

1
@BassetHound Chodzi mi o to, że był to raczej eksperyment społeczny, aby sprawdzić, czy ludzie nie zawracają sobie głowy nauką jakiegoś niejasnego języka. Powinienem był utrudnić podjęcie rzeczywistej pracy.
Cain,

4

CJam, Basset Hound

25me

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.


Hehe, to było łatwe. Zwłaszcza dla boga CJam. Poprawny.
The_Basset_Hound

4

Python 2, Sp3000

Opis

Zmieniono 01234na 0x1234i minna9in .

Fakt, który 4669 = (01234-1)*sum(m<<m in R for m in R)wprowadza w błąd.

Kod

R=range(0x1234);print sum(m<<9in(m,n)for m in R for n in R)

Ładnie wykonane! Miałem m<<m in(m,n), ale najważniejsze było, aby zmienić minsię in.
Sp3000,

4

MATLAB / Octave, Stewie Griffin

Opis

Wymagało to zanegowania danych wejściowych do funkcji anonimowej g, a także zmiany współczynnika skalowania gfunkcji na 2 zamiast 7:

Kod

>> f=@(x)x^.7;g=@(x)2/f(x);g(-7)

ans =

  -0.3011 - 0.4144i

Dziękuję za komentarz do mojej (teraz usuniętej) odpowiedzi. Opublikowałem nowy (bardzo podobny), który można złamać za pomocą WolframAlpha. Uważam, że jest to bardziej sprawiedliwe.
Dr Belisarius,


3

Java, TheNumberOne

Opis

Program jest jednorazową implementacją Random.next()z początkowym początkiem Integer.MAX_INTi wszystkimi liczbami szesnastkowymi konwertowanymi na dziesiętne. Zmiana materiału siewnego na uzupełnienie MAX_INTgeneruje dane wyjściowe:

class T{public static void main(String[]a){System.out.print(((~Integer.MAX_VALUE^25214903917L)&281474976710655L)*25214903917L+11L&281474976710655L);}}

(ponieważ muszą być dokładnie dwie zmiany, wybierz dowolną zmianę bez opcji: dodanie gdzieś spacji, dodatkowego średnika itp.)


1
Ładny, można również okazało Integer.MAX_VALUEsię Integer.MAX_VALUE+1lubInteger.MIN_VALUE
TheNumberOne

Wiesz co? Próbowałem, +1ale 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.
Alex Van Liew

3

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)


3

Python 2, błotniak

Opis

Change << to <> (deprecated version of !=) and 0x156 to 0156, the code point for "n" (which appears 3 times in the length 23 string '<built-in function sum>').

Code

print sum((ord(i)<>0156 for i in `sum`))

3

JavaScript, by Razvan

Description

The modified output is clearly Euler's natural number, which can be accessed as Math['E'].

By changing '' to '3' and 32 to 36, String.fromCharCode generates the E.

Code

a=1,b=a*2,c=a+b,d=[a+b];while(c>b)c-=a;for(i=1;i<=c;i++)d.push(i);i='3'+c*d['length']*d['length'];alert(Math[String.fromCharCode(i.charCodeAt(0) * i.charCodeAt(1) / 36)])

Yes, that's correct. Still it was actually something deeper but it seems that you could bypass it with this trick. I'll think of something else and I'll come back.
Razvan

3

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

[7115432d/9,219.or(64),37,55,55][3]

(Inserted a comma, 0 -> 3)


Well crap, that wasn't the intended solution, my red herring was an actual solution
Cain

3

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,

[Enter Claudio]

Claudius:
 Open your heart!
 Open your heart!

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

The Hidden Change.

Helen, a young woman with a remarkable patience.
Helena, a likewise young woman of remarkable grace.
Claudio, a remarkable man much in dispute with Claudius.
Claudius, the flatterer.
The Archbishop of Canterbury, the useless.


          Act I: Claudius's insults and flattery.

          Scene I: The insulting of Helen.

[Enter Claudius and Helen]

Claudius:
 Thou art as hairy as the sum of a disgusting horrible fatherless 
 dusty old rotten fat-kidneyed cat and a big dirty cursed war.
 Thou art as stupid as the product of thee and a fat smelly 
 half-witted dirty miserable vile weak son.

[Exeunt]

          Scene II: The complimenting of Helena.

[Enter Claudio and Helena]

Claudio:
 Thou art the sunny amazing proud healthy peaceful sweet joy.
 Thou art as amazing as the product of thee and the pretty
 lovely young gentle handsome rich Hero. Thou art as great 
 as the sum of thee and the product of a fair golden prompt good honest 
 charming loving noble king and a embroidered rich smooth golden angel.

[Exeunt]

          Scene III: The insulting of Claudio

[Enter Claudius and Helen]

Helen:
 Thou art as stupid as the sum of the sum of thee and a cat and me.
[Exit Helen]

[Enter Claudio]

Claudius:
 Thou art as stupid as the sum of thee and the product of the 
 product of me and Helen and Helena

[Exeunt]

          Scene IV: The Final Countdown

[Enter The Archbishop of Canterbury and Claudius]

Claudius:
 Thou art the sum of you and a cat.

The Archbishop of Canterbury:
 Am I better than a fine road?

Claudius:
 If not, let us return to the insulting of Claudio.

[Exit The Archbishop of Canterbury]

[Enter Claudio]

Claudio: << changed Claudius to Claudio
 Open your heart!
 Open your heart!
[Exeunt]

Nope, Claudio value is not 1 xD. Better luck next time.
AboveFire

@AboveFire - crud.. I'll have another look at it when i get home, really thought I had it :(
Alex Carlsen

That was my first guess, too, but I didn't have a chance to try it, yet. Anyway, the only part I didn't understand yet is the one with the archbishop so I'll have a look at that when I get home.
Sumyrda - Reinstate Monica

3

VBA by JimmyJazzx

Changed IRR to MIRR and changed 5 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.

Sub q()
Dim a(2) As Double
a(0)=-5
a(1)=10
msgBox MIRR(a,0.2,3)
End Sub

Nice. Technically i added both the M and the , so the middle arg was 0.25 but i think they end up having the same result anyway. Thought using some finance functions could stump the programmers but was revealed by the documentation. Good job
JimmyJazzx

3

Matlab / Octave, Jonas

Description

In the last line, add ' to transform arg' 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 that arg was defined separately (instead of directly within the sin line) should have looked suspicious.

Code

format long
arg = [.1 .2 .3];
sin('arg'*exp(9))'

3

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.

4518^574%615489737231532

3

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

G={load="lfkjgGsHjkU83fy6dtrg"}
print(#tostring(_G.load))

Also, since this is my first post on here, I can't make a comment on the original answer.


I've left a comment on the cop answer. By the way, this doesn't quite work for me. The address is I get is 0x321a40c6d0, for a final output of 22.
Dennis

I am not sure why you are getting 22... on everything I tested it was 18 or 26.
TreFox

@Dennis Try it in the official lua demo.
Xrott

Aha, I was so close! I knew I needed the global load, and I knew _G referred to the global symbol table... I just didn't put the two together.
Alex Van Liew

3

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

import re;''.join(re.findall('\D(?=\w\d)','t74q joh7 jv f9dfij9j bfjtf0e nnjen3j nnjrb6fgam3gtm5tem3hj s3eim7djsd3ye d5dfhg5un7ljmm8nan3nn6n k m2ftm5bsof5bf r5arm4ken8 adcm3nub0 nfrn6sn3jfeb6n d m6jda5 gdif5vh6 gij7fnb2eb0g '))

w -> D, w -> d in the regex.


3

Pyth, isaacg

Description

The original code does the following:

 CG      Convert "abcdefghijklmnopqrstuvwxyz" from base 256 to integer, yielding
         156490583352162063278528710879425690470022892627113539022649722.
   ^3y21 Compute 3^(2 * 21).
%        Calculate the modulus.

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 replacing y2 with yG, we compute this power set.

We can retrieve the set's length by replacing 3 with l, which leaves us with ^lyG1, i.e., 226 raised to the first power.

Code

%CG^lyG1

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:

$ \time -v pyth -c '%CG^lyG1'
58227066
        Command being timed: "pyth/pyth.py -c %CG^lyG1"
        User time (seconds): 30.73
        System time (seconds): 2.12
        Percent of CPU this job got: 100%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:32.85
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 6742564
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 2269338
        Voluntary context switches: 1
        Involuntary context switches: 58
        Swaps: 0
        File system inputs: 0
        File system outputs: 0
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0

Correct! Well done.
isaacg
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.