Dois fazem toda a diferença - ladrões


29

Para o desafio dos policiais principais, clique aqui

AVISO - Este desafio está encerrado. Quaisquer rachaduras postadas agora não serão contadas na tabela de classificação e a resposta aceita não será alterada.

Desafio

Dado o programa original, sua saída e a saída do programa alterado, você precisa descobrir quais caracteres precisam ser alterados, removidos ou adicionados para obter a saída esperada.

Quando você decifrar o código de alguém, deixe um comentário com um link para o seu crack na resposta dele.

Formatação

# [<language>, <username of program owner>](<link to answer>)

## Description

<description of change and how you found it>

## Code

<changed code>

Ganhando

A pessoa que quebrou mais soluções ganha.

Entre os melhores

13 rachaduras:

  • Dennis

8 rachaduras:

  • Alex Van Liew

5 rachaduras:

  • Sp3000
  • isaacg

3 rachaduras:

  • Luis Mendo
  • jimmy23013
  • Dom Hastings

2 rachaduras:

  • mbomb007
  • Sluck49

1 rachadura:

  • O número um
  • Jakube
  • ProudHaskeller
  • David Zhang
  • samgak
  • paul.oderso
  • rayryeng
  • mgibsonbr
  • n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
  • Stewie Griffin
  • abligh

11
@ mbomb007 Você pode não editar esta postagem, porque fica mais difícil saber onde estou ao atualizar a tabela de classificação
Decay Beta

Respostas:


10

CJam, por Mauris

Descrição

O código original de Mauris faz o seguinte:

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

Nenhum outro operador matemático do CJam produziria um número tão grande para pequenas entradas, portanto :#não pode ser modificado. Como #, quando usado para exponenciação, leva apenas números inteiros como entrada, :inão pode ser removido também. Isso deixa apenas um lugar para modificar a entrada: a string "f~".

Não importa quantos caracteres a string tenha, o resultado será uma torre de poder associativa à esquerda. O CJam suporta caracteres no intervalo de 0 a 65535 (com exceção dos substitutos), portanto, temos que expressar a saída como b n × k × j , onde b , n , k e j são números inteiros nesse intervalo.

O logaritmo decimal do número inteiro resultante do código modificado é um pouco menor que o log 10 (2,44 × 10 242545 ) = log 10 (2,44) + 242545 , para que possamos dividir esse valor pelos logaritmos de todas as bases possíveis para encontrar os valores adequados para n × k × j .

De fato:

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

Comparar os 8 primeiros dígitos revelou-se suficiente.

Isso significa que podemos expressar a saída como 5 347.004 = 15625 57.834 = 125 9 × 102 × 126 , portanto basta substituir "f~"por "㴉"ou"} f~" .

Código

"㴉":i:#

ou

"}  f~":i:#

Observe que os espaços no código ASCII devem realmente ser um tabulador.

Tentar executar esse código no intérprete online provavelmente é uma má idéia, mas veja como você pode verificar os resultados na linha de comando:

$ 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
Não se vence simplesmente Dennis no CJam
Fatalize

Como você descobriu quais números usar?
precisa saber é o seguinte

@AlexVanLiew Brute force. Atualmente, estou escrevendo uma explicação. Eu só queria publicar o crack antes que alguém o fizesse.
Dennis

@ Dennis: Justo. Eu estava tentando este, mas não conheço o CJam; Imaginei que a solução pretendida envolvia realmente o uso ~fem algum lugar do programa.
Alex Van Liew

11
@ Mauris A pergunta diz quando apenas dois caracteres no programa são alterados (ênfase minha), então eu assumi que isso estava OK. Enfim, fatorar o número foi a parte mais difícil.
Dennis

15

Ruby, histocrata

Descrição

Alterou x para ser uma matriz em vez de escalar adicionando *

Alterou o último 9para ser uma sequência em vez de um número, adicionando?

O resultado é constituído por uma matriz com um único elemento ( [9]) multiplicado 9 vezes e depois implodido "9"como separador.

Código

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

12

Python 2, peixes barrentos

Descrição

Através de provações e tribulações envolvendo fatorar grandes números e procurar fatores conseqüentes, percebi que mudar o 87654 para o 58116 seria suficiente. Então, eu fatorei 58116 como 87 * 668. Então eu percebi que 01234 = 668, então eu só precisava alterar 87654 para 87 e remover o 01234 completamente. Isso é realizado com um comentário.

Código

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

Yep, quase exatamente como eu tinha (a minha era print sum(range(054321)*9876)*87#654)/01234)
azul

Inteligente, inteligente! Fico feliz que alguém tenha entendido e que foi mais interessante do que "brincar com números"!
Alex Van Liew

11

Shakespeare, Acima do Fogo

Na cena III, é preciso mudar Claudius para Claudio no seguinte trecho:

[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]

Código modificado:

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]

Usando o compilador vinculado por @AboveFire, isso é impresso 11.


2
Você pode deixar mais claro quais caracteres foram alterados? Não é exatamente fácil ver olhando para frente e para trás.
mbomb007

Porra, 15 minutos atrasado. Parabéns.
Sumyrda - Restabelece Monica

2
Jeebus H. Cristo. Bom trabalho!
Rayryeng # Reinstate Monica

11
@ mbomb007 Espero que minha edição tenha deixado mais claro. AboveFire: sorry :)
plannapus

3
@ plannapus Haha, está tudo bem, mas a maneira pretendida de limpá-la era substituir a palavra "rei" por "porco". Com essa mudança, Helena foi igual a 0 e "a soma de ti e o produto do produto de mim" e Helen e Helena "eram iguais a 1. Eu fiz uma lista de todas as palavras que poderiam ser invertidas com duas letras e usei muitas delas no meu código (ex: joy-> hog-> son, war-> cat, estrada-> sapo, Herói-> inferno, maldição-> bolsa, helena> helena, claudio-> claudius e muitas outras) As únicas coisas que podem mudar um programa de Shakespeare com 2 caracteres são a alteração de uma variável, a alteração de um substantivo e a mudança de um goto.
AboveFire



7

C, LambdaBeta

Descrição

Transformar main(a,_)em main(_). O primeiro argumento de main é o argcque é inicializado como 1.

Código

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

Essa é a solução que eu tinha em mente. Boa pegada. Aliás, se o argv for carregado na célula de memória 1, isso não funcionará. Eu simplesmente não consigo pensar em nenhum sistema que faça isso que também possa executar as várias linguagens interpretadas nessa página.
LambdaBeta

6

Python 2, rp.belrann

Altere a compreensão da lista mais externa em uma compreensão definida. Crédito parcial para @ mbomb007, que eliminou todas as soluções "chatas" (trocar xe trocar y, ajustar operadores, alterar o alcance).

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

Explicação:

No original, [(x,y)[x%2]for x in[y for y in range(8)]]gera a seguinte lista:

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

Isso ocorre porque, no Python 2.7, a ycompreensão da lista interna vaza para o escopo anexo no último valor conhecido (que, no final de um intervalo, é 7). Portanto, na tupla, ysempre é 7. x, no entanto, percorre a lista normalmente, variando de 0 a 7. Quando xé par, escolhe o valor de x, quando é ímpar, escolhe y(que é sempre 7). Percebi que, se eu incluísse exatamente um 7 e todo o restante dos valores x, obtinha 19; então percebi que podia transformar a compreensão externa em uma compreensão definida, o que eliminaria todos os valores duplicados e me deixaria exatamente 19.

Isso foi muito inteligente, acho que nunca usei uma compreensão definida antes. Parabéns.


Não. Não é isso. print len('~'*sum([(x,y)[x%2]for x in[y for y in range(6)]]))retorna 21. Apenas atribua o código a uma variável e imprima se for igual à string desejada. Se você vê True, você o quebrou.
mbomb007

Bizarro. _me traiu, eu acho.
Alex Van Liew

@ mbomb007 eu entendi.
Alex Van Liew

Você me pegou. Bem feito.
precisa saber é o seguinte


5

Dennis Bash

Código original:

echo {{{1..9}}}

Saída original:

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

Código modificado:

echo {,{1..9},}

Saída modificada:

1 2 3 4 5 6 7 8 9

Explicação:

No Bash, você pode gerar uma lista de itens separados por vírgula dentro de um par de chaves, assim:

echo {a,b,c}

impressões

a b c

Portanto, o código modificado está imprimindo uma lista de nada, os números 1..9, nada.


5

Luis Mendo MATLAB

Código original:

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

Nova resposta:

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

Descrição:

Alterado -sinpara psi, a função poligamma no MATLAB. O -sinal é substituído por pe o né removido.


4

C, LambdaBeta

Descrição

Mude -1para *0para que o resultado da multiplicação seja0 (um valor Falsas).

Código

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

Opa, parece que eu apresentei uma (falha de segurança?) Durante o golfe. Vou examiná-lo à toa para ver se consigo consertá-lo. Boa captura embora.
LambdaBeta

4

Brainfuck, Kurousagi

Descrição

Remova o primeiro >e altere o primeiro <para.

Testado em brainfuck.tk . Note-se que a saída não coincide com o post de kurousagi exatamente , devido ao SE comendo caracteres não imprimíveis.

Código

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

@muddyfish I ligada esta resposta no meu segundo comentário, mas eu ainda estou aguardando a confirmação do kurousagi
SP3000

4

Fantom, Caim

A segurança através da obscuridade é uma forma muito pobre de segurança (especialmente quando os dois métodos estão próximos uns dos outros nos documentos do Fantom e qualquer pessoa que saiba como é a aparência de um flutuador saberá imediatamente o que fazer).

Float.makeBits32(1123581321)

11
Você me pegou por 1 min !!! bem jogado
AboveFire

11
Haha você me pegou, aproveite o crack grátis
Caim

@Cain Foi intencional oo
The_Basset_Hound

11
@BassetHound Quero dizer, foi mais um experimento social, para ver se as pessoas se incomodariam em aprender alguma linguagem obscura para o crack. Eu deveria ter dificultado ainda mais o trabalho de verdade.
Caim

4

CJam, de Basset Hound

25me

Calcula e 25 . Experimente online.

O intérprete online fornece um resultado ligeiramente diferente no meu navegador, o que parece ser um problema de arredondamento.

O interpretador Java imprime 7.200489933738588E10, que é a saída desejada, mas em um formato diferente.


Hehe, foi fácil. Especialmente para um deus CJam. Corrigir.
The_Basset_Hound

4

Python 2, Sp3000

Descrição

Alterado 01234para 0x1234e minpara9in .

O fato de que 4669 = (01234-1)*sum(m<<m in R for m in R) é enganoso.

Código

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

Bem feito! Eu tinha m<<m in(m,n), mas o principal era mudar o minpara in.
SP3000

4

MATLAB / Oitava, Stewie Griffin

Descrição

Isso exigiu negar a entrada na função anônima g, além de alterar o fator de escala da gfunção para 2 em vez de 7:

Código

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

ans =

  -0.3011 - 0.4144i

Obrigado pelo seu comentário na minha resposta (agora excluída). Publiquei um novo (muito semelhante) que pode ser quebrado usando o WolframAlpha. Eu acredito que é mais justo.
Dr. belisarius


3

Java, TheNumberOne

Descrição

O programa é uma implementação única Random.next()com uma semente inicial de Integer.MAX_INTe todos os números hexadecimais convertidos em decimal. Alterar a semente para o complemento de MAX_INTgera a saída:

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

(como deve haver exatamente duas alterações, escolha qualquer alteração não operacional: adicione um espaço em algum lugar, um ponto e vírgula extra, etc.)


11
Bom, você também poderia ter se transformado Integer.MAX_VALUEem Integer.MAX_VALUE+1ouInteger.MIN_VALUE
TheNumberOne

Sabe o que mais? Eu tentei, +1mas desde que eu estava fazendo isso em Python, ele rolou para um longo, ahaha. Esse foi o meu primeiro pensamento, na verdade.
precisa

3

Brainfuck, AboveFire

Este programa é uma modificação deste código, uma resposta de cookie. essa resposta funciona primeiro pré-calculando uma tabela de códigos ASCII úteis de caracteres úteis e, em seguida, possui três instruções condicionais compostas por três loops inseridos por ter um 1na posição correta.

o começo de como eu quebrei o código é que o padrão de repetição na saída alterada é principalmente o que é impresso se você inserir o terceiro loop com a tabela deslocada para a esquerda.

++++++++++[->++++++++<]>>++++++[-<---------->]<-------[----------->>>-<<+<[->->+<<]]>>>+<<>>>+++[->++++++++++<]>(<)++ .<+++++++++[->>>>>>>++++++++++<+++++<++++++++++++++<++++++++++<+++++<++++++++++<<]++++++++++>>+++++...>++>++>-->+>(>)++++<<<<<<<.<<<[->>>>>>.<<>>>>>.<<<<<.>>>>>.<<<<<>>>.<<<<.>>>>>.<<<<.>>>>>.<<<<<.>>>>.<<<<<.>>>>.<<...>.<<<<<<]>[->>>>>.<<...>>>.<<<<.>>>>>.<<<<...>>>>.<<<<<.>>>>.<<...>.<<<<<]>[->>>>.<<>>>>>>.<<<<<<..>>>.<<<<.>>>>>.<<<<>>>>>>.<<<<<<.>>>>>>.<<<<<<>>>>.<<<<<.>>>>.<<...>.<<<<]

(os caracteres adicionais estão marcados entre parênteses)


3

Python 2, peixes barrentos

Descrição

Altere <<para <>(versão obsoleta de !=) e 0x156para 0156, o ponto de código para "n"(que aparece 3 vezes na cadeia de comprimento 23'<built-in function sum>' ).

Código

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

3

JavaScript, por Razvan

Descrição

A saída modificada é claramente o número natural de Euler, que pode ser acessado como Math['E'] .

Ao mudar ''para '3'e 32para 36, String.fromCharCodegera oE .

Código

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)])

Sim esta correto. Ainda assim, era realmente algo mais profundo, mas parece que você poderia ignorá-lo com esse truque. Vou pensar em outra coisa e voltarei.
Razvan

3

Fantom, Caim

Descrição

A indexação do array já está configurada, então eu só preciso fazer um 55. Honestamente, a parte mais difícil foi baixar o idioma.

Código

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

(Inserção de vírgula, 0-> 3)


Bem porcaria, que não era a solução pretendida, o meu arenque vermelho era uma solução real
Cain

3

Shakespeare, Acima do Fogo

NÃO CORRETO - desculpe :(

Irá investigar mais quando chegar em casa do trabalho No valor original de Claudio é 1132462081 e o valor de Claudius é 1

Na cena final, o valor de Claudio é impresso duas vezes,

[Enter Claudio]

Claudius:
 Open your heart!
 Open your heart!

abra seu coração x2 = valor de impressão da outra pessoa no palco (Claudio). Portanto, se você mudar Claudius para Claudio (2 caracteres) - o valor de Claudius será impresso - que é 1 - duas vezes

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]

Não, o valor de Claudio não é 1 xD. Mais sorte da próxima vez.
AboveFire

@AboveFire - crud .. eu vou ter um outro olhar para isso quando eu chegar em casa, realmente pensei que tinha :(
Alex Carlsen

Esse foi o meu primeiro palpite também, mas ainda não tive a chance de tentar. De qualquer forma, a única parte que ainda não entendi é a do arcebispo, então vou dar uma olhada nisso quando chegar em casa.
Sumyrda - Restabelece Monica 13/08/15

3

VBA por JimmyJazzx

Mudado IRRpara MIRRe mudou 5a um, forma que há 3 parâmetros.

Descobri isso enquanto procurava como a IRRfunção do Excel funciona. Havia um artigo: Como a função MIRR do Excel pode corrigir a função IRR . Isso me deu uma dica. Tentativa inteligente, no entanto. Eu nunca tinha usado o VBA antes, então isso também era interessante.

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

Agradável. Tecnicamente, eu adicionei o M e o, então o argumento do meio era 0,25, mas acho que eles acabam tendo o mesmo resultado. O pensamento de usar algumas funções financeiras poderia atrapalhar os programadores, mas foi revelado pela documentação. Bom trabalho
JimmyJazzx

3

Matlab / Octave, Jonas

Descrição

Na última linha, adicione 'para transformar arg'na sequência 'arg', que será interpretada como números ASCII. E depois adicione outro 'no final para manter o formato da coluna.

O quase desnecessário 'no código original foi a pista principal. Além disso, em retrospecto, o fato de que argfoi definido separadamente (em vez de diretamente dentro dosin linha) deveria parecer suspeito.

Código

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

3

bc, abligh

Apenas inseriu os operadores matemáticos. Demorei cerca de 1 minuto para resolver uma vez que procurei o que era bc e que operações matemáticas ele possuía. A primeira coisa que pensei foi em divisão, mas não havia fatores comuns que pareciam bons. Então eu imediatamente fui para exponenciação e módulo. Foram necessários pelo menos 15 dígitos para o módulo b / c da saída esperada. Depois disso, adivinhei duas vezes e encontrei.

4518^574%615489737231532

3

Lua, TreFox

Descrição

"_G" é a tabela global, fazendo com que "_G.load" se refira à função global "load". A conversão de uma função em uma string resulta no retorno do endereço da função, que é transformado no comprimento da string pelo operador de comprimento "#".

Código

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

Além disso, como este é meu primeiro post aqui, não posso comentar a resposta original.


Deixei um comentário sobre a resposta policial. A propósito, isso não funciona muito bem para mim. O endereço que eu recebo é 0x321a40c6d0, para uma saída final de 22.
Dennis

Não sei por que você está obtendo 22 ... em tudo que eu testei, tinha 18 ou 26 anos
#


Aha, eu estava tão perto! Eu sabia que precisava do global loade sabia que se _Greferia à tabela de símbolos globais ... Eu simplesmente não juntei os dois.
Alex Van Liew

3

Python, rp.beltran

Descrição

Notei que as letras necessárias estavam sempre 2 na frente de um dígito. alterar o terceiro \wpara \dobter todas as letras certas, exceto os espaços. \Dfoi o único \grupo que pude encontrar que permitiu letras e espaços.

Código

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-> dno regex.


3

Pyth, isaacg

Descrição

O código original faz o seguinte:

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

Desde 156490583352162063278528710879425690470022892627113539022649722 - 58227066156490583352162063278528710879425690470022892627113538964422656 , o que equivale a 2 26 × 3 × 7 × 7477 × 381524422711 × 17007550201751761 × 2288745700077000184147 , a saída desejada pode ser obtida substituindo ^3y21com algo que é avaliada como um divisor de este produto e é maior do que 58227066 .

O ^código original sugere que podemos usá-lo para calcular uma potência de 2 , os 3 que podemos calcular um divisor apropriado da forma 3 × 2 n .

Ambos são enganosos. Soluções com uma distância Levenshtein de 3 ( %CG^2 26, %CG^y2 13, %CG^4y13) ou 4 (%CG.<3y13 ) são facilmente encontrados, mas a solução a distância 2 requer uma abordagem diferente.

O alfabeto em minúsculas ( G) possui 26 letras; portanto, seu conjunto de poder (o conjunto de todas as seqüências estritamente crescentes de letras em minúsculas) possui 2 26 elementos. Ao substituir y2poryG , calculamos esse conjunto de potência.

Podemos recuperar o comprimento do conjunto substituindo 3porl , o que nos deixa com ^lyG1, por exemplo, 2 26 elevados à primeira potência.

Código

%CG^lyG1

Observe que isso funcionará apenas em um computador com memória disponível suficiente (aproximadamente 6,43 GiB, de acordo com time), portanto, não funcionará com o intérprete online.

Veja como você pode verificar os resultados na linha de comando:

$ \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

Corrigir! Bem feito.
Isaacg
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.