Deux fait toute la différence - Voleurs


29

Pour le défi principal des flics, cliquez ici

AVIS - Ce défi est maintenant terminé. Toutes les fissures qui sont publiées maintenant ne seront pas comptées dans le classement et la réponse acceptée ne changera pas .

Défi

Étant donné le programme d'origine, sa sortie et la sortie du programme modifié, vous devez savoir quels caractères doivent être modifiés, supprimés ou ajoutés pour obtenir la sortie attendue.

Lorsque vous piratez le code de quelqu'un, laissez un commentaire avec un lien vers votre crack sur sa réponse.

Formatage

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

## Description

<description of change and how you found it>

## Code

<changed code>

Gagnant

La personne qui a trouvé le plus de solutions gagne.

Classement

13 fissures:

  • Dennis

8 fissures:

  • Alex Van Liew

5 fissures:

  • Sp3000
  • isaacg

3 fissures:

  • Luis Mendo
  • jimmy23013
  • Dom Hastings

2 fissures:

  • mbomb007
  • Sluck49

1 fissure:

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

1
@ mbomb007 Pouvez-vous vous abstenir de modifier ce message, car il est plus difficile pour moi de savoir où je suis lors de la mise à jour du classement
Beta Decay

Réponses:


10

CJam, par Mauris

La description

Le code original de Mauris fait ce qui suit:

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

Aucun autre opérateur mathématique de CJam ne donnerait un nombre aussi élevé pour de petites entrées, il :#ne peut donc pas être modifié. Puisque #, lorsqu'il est utilisé pour l'exponentiation, ne prend que des entiers en entrée, :iil ne peut pas être supprimé également. Cela ne laisse qu'un seul endroit pour modifier l'entrée: la chaîne "f~".

Quel que soit le nombre de caractères de la chaîne, le résultat sera une tour de puissance associative de gauche. CJam prend en charge les caractères compris entre 0 et 65535 (à l'exception des substituts), nous devons donc exprimer la sortie sous la forme b n × k × j , où b , n , k et j sont des entiers dans cette plage.

Le logarithme décimal de l'entier résultant du code modifié est légèrement plus petit que log 10 (2,44 × 10 242545 ) = log 10 (2,44) + 242545 , nous pouvons donc diviser cette valeur par les logarithmes de toutes les bases possibles pour trouver les valeurs appropriées pour n × k × j .

En réalité:

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

La comparaison des 8 premiers chiffres s'est avérée suffisante.

Cela signifie que nous pouvons exprimer la sortie comme 5 347 004 = 15625 57834 = 125 9 × 102 × 126 ,sorte qu'il suffit de remplacer "f~"avec "㴉"ou"} f~" .

Code

"㴉":i:#

ou

"}  f~":i:#

Notez que les espaces dans le code ASCII doivent en fait être un tabulateur.

Tenter d'exécuter ce code dans l'interpréteur en ligne est probablement une mauvaise idée, mais voici comment vérifier les résultats à partir de la ligne de commande:

$ 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
On ne bat pas simplement Dennis dans CJam
Fatalize

Comment avez-vous déterminé les numéros à utiliser?
Alex Van Liew

@AlexVanLiew Force brute. J'écris actuellement une explication. Je voulais juste que le crack soit affiché avant que quelqu'un d'autre ne le fasse.
Dennis

@Dennis: Très bien. J'essayais celui-ci mais je ne connais pas CJam; J'ai pensé que la solution envisagée impliquait réellement d'utiliser ~fquelque part dans le programme.
Alex Van Liew

1
@Mauris La question indique quand seulement deux caractères dans le programme sont modifiés (le mien est souligné), j'ai donc supposé que c'était OK. Quoi qu'il en soit, la factorisation du nombre était la partie difficile.
Dennis

15

Rubis, histocrate

La description

X changé pour être un tableau au lieu de scalaire en ajoutant *

Changé le dernier 9pour être une chaîne au lieu d'un nombre en ajoutant?

Le résultat est constitué d'un tableau avec un seul élément ( [9]) multiplié 9 fois puis implosé avec "9"comme séparateur.

Code

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

12

Python 2, muddyfish

La description

À travers des essais et des tribulations impliquant la factorisation de grands nombres et la recherche de facteurs conséquents, j'ai réalisé que changer le 87654 en 58116 serait suffisant. Ensuite, j'ai factorisé 58116 en 87 * 668. Ensuite, j'ai réalisé que 01234 = 668, donc je devais juste changer 87654 en 87 et supprimer complètement le 01234. Ceci est accompli avec un commentaire.

Code

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

Ouais, presque exactement comment je l'ai eu (le mien l'était print sum(range(054321)*9876)*87#654)/01234)
Blue

Intelligent intelligent! Je suis content que quelqu'un l'ait compris et que c'était plus intéressant que "jouer avec les chiffres"!
Alex Van Liew

11

Shakespeare, AboveFire

Dans la scène III, il faut changer Claudius en Claudio dans l'extrait de code suivant:

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

Code modifié:

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]

En utilisant le compilateur lié par @AboveFire, cela s'imprime 11.


2
Pouvez-vous préciser quels caractères ont été modifiés? Ce n'est pas exactement facile de voir d'avant en arrière.
mbomb007

Merde, 15 minutes de retard. Toutes nos félicitations.
Sumyrda

2
Jeebus H. Christ. Bon travail!
rayryeng

1
@ mbomb007 J'espère que mon montage l'a rendu plus clair. AboveFire: désolé :)
plannapus

3
@plannapus Haha, ça va, mais le moyen prévu pour l'effacer était de remplacer le mot "roi" par "cochon". Avec ce changement, Helena était égale à 0 et "la somme de toi et le produit du produit de moi" et Helen et Helena "était égal à 1. J'avais fait une liste de tous les mots qui pouvaient être inversés avec deux lettres et utilisé beaucoup d'entre eux dans mon code (ex: joy-> hog-> son, war-> cat, road-> crapaud, Hero-> Enfer, malédiction-> sac à main, helen-> helena, claudio-> claudius et bien d'autres) Les seules choses qui peuvent changer un programme Shakespeare avec 2 caractères est le changement d'une variable, le changement de un nom et le changement d'un goto.
AboveFire



7

C, LambdaBeta

La description

Transformez main(a,_)en main(_). Le premier argument de main est celui argcqui est initialisé comme1 .

Code

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

C'est la solution que j'avais en tête. Belle prise. Par ailleurs, si l'argv se trouve être chargé dans la cellule mémoire 1, cela ne fonctionnera pas. Je ne peux tout simplement pas penser à un système qui ferait cela et qui pourrait également exécuter les différents langages interprétés sur cette page.
LambdaBeta

6

Python 2, rp.belrann

Modifiez la compréhension de la liste la plus externe en une compréhension d'ensemble. Crédit partiel à @ mbomb007, qui a éliminé toutes les solutions "ennuyeuses" (permutation xet ycontournement, peaufinage des opérateurs, changement de gamme).

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

Explication:

Dans l'original, [(x,y)[x%2]for x in[y for y in range(8)]]génère la liste suivante:

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

En effet, dans Python 2.7, la ycompréhension dans la liste interne fuit dans la portée englobante à sa dernière valeur connue (qui, à la fin d'une plage, est 7). Ainsi, dans le tuple, yest toujours 7. x, cependant, parcourt la liste normalement, allant de 0 à 7. Quand xest pair, il choisit la valeur de x, quand il est impair, il choisit y(qui est toujours 7). J'ai remarqué que si j'incluais exactement un 7 et toutes les autres valeurs de x, j'obtenais 19; puis j'ai réalisé que je pouvais transformer la compréhension extérieure en une compréhension d'ensemble, ce qui éliminerait toutes les valeurs en double et me laisserait exactement 19.

C'était assez intelligent, je ne pense pas avoir déjà utilisé une compréhension d'ensemble auparavant. Gloire.


Nan. Ce n'est pas ça. print len('~'*sum([(x,y)[x%2]for x in[y for y in range(6)]]))retourne 21. Attribuez simplement le code à une variable, puis imprimez si elle est égale à la chaîne souhaitée. Si vous voyez True, vous l'avez craqué.
mbomb007

Bizarre. _m'a trahi, je suppose.
Alex Van Liew

@ mbomb007 Je l'ai.
Alex Van Liew

Tu m'as eu. Bien joué.
rp.beltran


5

Bash, Dennis

Code d'origine:

echo {{{1..9}}}

Sortie d'origine:

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

Code modifié:

echo {,{1..9},}

Sortie modifiée:

1 2 3 4 5 6 7 8 9

Explication:

Dans Bash, vous pouvez générer une liste d'éléments séparés par des virgules à l'intérieur d'une paire d'accolades, comme ceci:

echo {a,b,c}

impressions

a b c

Ainsi, le code modifié imprime une liste de rien, les chiffres 1 à 9, rien.


5

MATLAB, Luis Mendo

Code d'origine:

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

Nouvelle réponse:

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

La description:

Modifié -sinen psi, la fonction polygamma dans MATLAB. Le -signe est remplacé par pet nest supprimé.


4

C, LambdaBeta

La description

Transformez -1en de *0sorte que le résultat de la multiplication soit0 (une valeur fausse).

Code

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

Oups, on dirait que j'ai introduit un (défaut de sécurité?) Lors de mon golf. Je vais y réfléchir pour voir si je peux le réparer. Belle prise cependant.
LambdaBeta

4

Brainfuck, Kurousagi

La description

Supprimez le premier >et remplacez le premier <par.

Testé sur brainfuck.tk . Notez que la sortie ne correspond pas à la poste kurousagi exactement , en raison de SE manger des caractères non imprimables.

Code

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

@muddyfish J'ai lié cette réponse dans mon deuxième commentaire, mais j'attends toujours la confirmation de Kurousagi
Sp3000

4

Fantom, Cain

La sécurité par l'obscurité est une forme de sécurité très médiocre (surtout lorsque les deux méthodes sont côte à côte dans les documents Fantom et que toute personne qui sait à quoi ressemble un flotteur saura immédiatement quoi faire).

Float.makeBits32(1123581321)

1
Tu m'as eu 1 minute !!! bien joué
AboveFire

1
Haha tu m'as eu, profite du crack gratuit
Cain

@Cain était-ce intentionnel oo
The_Basset_Hound

1
@BassetHound Je veux dire, c'était plus une expérience sociale, pour voir si les gens prendraient la peine d'apprendre un langage obscur pour le crack. J'aurais dû rendre plus difficile cependant de prendre un travail réel.
Cain

4

CJam, par Basset Hound

25me

Calcule e 25 .Essayez-le en ligne.

L'interprète en ligne donne un résultat légèrement différent dans mon navigateur, ce qui semble être un problème d'arrondi.

L'interpréteur Java imprime 7.200489933738588E10, qui est la sortie souhaitée, mais dans un format différent.


Hehe, c'était facile. Surtout pour un dieu CJam. Correct.
The_Basset_Hound

4

Python 2, Sp3000

La description

Changé 01234vers 0x1234et minvers 9in.

Le fait 4669 = (01234-1)*sum(m<<m in R for m in R)est trompeur.

Code

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

Bien fait! J'en avais m<<m in(m,n), mais l'essentiel était de changer le minen in.
Sp3000

4

MATLAB / Octave, Stewie Griffin

La description

Cela a nécessité l'annulation de l'entrée dans la fonction anonyme g, ainsi que la modification du facteur d'échelle de la gfonction à 2 au lieu de 7:

Code

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

ans =

  -0.3011 - 0.4144i

Merci pour votre commentaire sur ma réponse (maintenant supprimée). J'en ai posté un nouveau (très similaire) qui peut être cracké en utilisant WolframAlpha. Je pense que c'est plus juste.
Dr belisarius

4

Perl, abligh

La description

Ajouter un opérateur de répétition de chaîne, x et insérez un chiffre supplémentaire!

Code

print sin 95x7

3

Java, TheNumberOne

La description

Le programme est une implémentation unique Random.next()avec une graine initiale de Integer.MAX_INTet tous les nombres hexadécimaux convertis en décimal. Changer la graine en complément de MAX_INTgénère la sortie:

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

(puisqu'il doit y avoir exactement deux changements, choisissez n'importe quel type de changement sans opération: ajouter un espace quelque part, un point-virgule supplémentaire, etc.)


1
Integer.MAX_VALUEInteger.MAX_VALUE+1Integer.MIN_VALUE
Bien

Oh, tu sais quoi? J'ai essayé +1mais comme je le faisais en Python, il a juste roulé en un long, ahaha. C'était ma première pensée, en fait.
Alex Van Liew

3

Brainfuck, AboveFire

ce programme est une modification de ce code me une réponse cookie. cette réponse fonctionne en pré-calculant d'abord une table de codes ascii utiles de caractères utiles, puis a trois instructions conditionnelles composées de trois boucles qui sont entrées en ayant un1 dans la position correcte.

le début de la façon dont j'ai cassé le code est que le motif répétitif dans la sortie modifiée est principalement ce qui est imprimé si vous entrez dans la troisième boucle avec le tableau décalé vers la gauche.

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

(les caractères supplémentaires sont marqués entre parenthèses)


3

Python 2, muddyfish

La description

Passez <<à <>(version obsolète de !=) et 0x156à 0156, le point de code pour "n"(qui apparaît 3 fois dans la chaîne de longueur 23).'<built-in function sum>' ).

Code

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

3

JavaScript, par Razvan

La description

La sortie modifiée est clairement le nombre naturel d'Euler, auquel on peut accéder comme Math['E'] .

En changeant ''vers '3'et 32vers 36, String.fromCharCodegénère leE .

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

Oui c'est correct. C'était en fait quelque chose de plus profond, mais il semble que vous pouvez le contourner avec cette astuce. Je penserai à autre chose et je reviendrai.
Razvan

3

Fantom, Cain

La description

L'indexation du tableau est déjà configurée, donc je dois juste faire un 55. Honnêtement, la partie la plus difficile a été de télécharger la langue.

Code

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

(Inséré une virgule, 0-> 3)


Eh bien merde, ce n'était pas la solution prévue, mon hareng rouge était une solution réelle
Cain

3

Shakespeare, AboveFire

PAS CORRECT - désolé :(

J'y approfondirai quand je rentrerai du travail Dans la valeur originale de Claudio est 1132462081 et la valeur de Claudius est 1

Dans la scène finale, la valeur de Claudio est imprimée deux fois,

[Enter Claudio]

Claudius:
 Open your heart!
 Open your heart!

ouvrez votre cœur x2 = valeur d'impression de l'autre personne sur scène (Claudio). Donc, si vous changez Claudius en Claudio (2 caractères) - la valeur de Claudius sera imprimée - qui est 1 - deux fois

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]

Non, la valeur Claudio n'est pas 1 xD. Plus de chance la prochaine fois.
AboveFire

@AboveFire - crud .. J'y reverrai quand je rentrerai, je pensais vraiment l'avoir :(
Alex Carlsen

C'était aussi ma première supposition, mais je n'ai pas encore eu l'occasion de l'essayer. Quoi qu'il en soit, la seule partie que je n'ai pas encore comprise est celle avec l'archevêque, donc je vais y jeter un œil lorsque je rentrerai.
Sumyrda

3

VBA par JimmyJazzx

Changé IRRpour MIRRet changé 5à ,donc il y a 3 paramètres.

J'ai trouvé cela en cherchant comment IRRfonctionne la fonction d'Excel . Il y avait un article: Comment la fonction MIRR d'Excel peut corriger la fonction IRR . Cela m'a informé. Une tentative intelligente, cependant. Je n'avais jamais utilisé VBA auparavant, donc c'était intéressant aussi.

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

Agréable. Techniquement, j'ai ajouté le M et le, donc l'argument du milieu était de 0,25 mais je pense qu'ils finissent par avoir le même résultat de toute façon. La pensée d'utiliser certaines fonctions financières pourrait gêner les programmeurs mais a été révélée par la documentation. Bon travail
JimmyJazzx

3

Matlab / Octave, Jonas

La description

Dans la dernière ligne, ajoutez 'pour transformer arg'en chaîne 'arg', qui sera alors interprétée comme des nombres ASCII. Et puis ajoutez un autre' à la fin pour conserver le format de colonne.

Le presque inutile 'dans le code d'origine était l'indice principal. En outre, rétrospectivement, le fait qui a argété défini séparément (au lieu de directement dans lesin ligne) aurait dû paraître suspect.

Code

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

3

bc, abligh

Simplement inséré les opérateurs mathématiques. Il a fallu environ 1 minute pour résoudre une fois que j'ai recherché ce qu'était bc et quelles opérations mathématiques il avait. La première chose à laquelle j'ai pensé était la division, mais il n'y avait pas de facteurs communs qui avaient l'air bien. J'ai donc immédiatement opté pour l'exponentiation et le module. Au moins 15 chiffres étaient nécessaires pour le module b / c de la sortie attendue. Après cela, j'ai deviné deux fois et l'ai trouvé.

4518^574%615489737231532

3

Lua, TreFox

La description

"_G" est la table globale, ce qui fait que "_G.load" fait référence à la fonction globale "load". La conversion d'une fonction en chaîne entraîne le renvoi de l'adresse de la fonction, qui est ensuite transformée en longueur de la chaîne par l'opérateur de longueur "#".

Code

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

De plus, puisque c'est mon premier post ici, je ne peux pas faire de commentaire sur la réponse originale.


J'ai laissé un commentaire sur la réponse du flic. Soit dit en passant, cela ne fonctionne pas tout à fait pour moi. L'adresse est je reçois est 0x321a40c6d0, pour une sortie finale de 22.
Dennis

Je ne sais pas pourquoi vous obtenez 22 ... sur tout ce que j'ai testé c'était 18 ou 26.
TreFox


Aha, j'étais si proche! Je savais que j'avais besoin du global load, et je savais que je me référais _Gà la table des symboles mondiaux ... Je n'ai tout simplement pas réuni les deux.
Alex Van Liew

3

Python, rp.beltran

La description

J'ai remarqué que les lettres nécessaires étaient toujours 2 devant un chiffre. changer la troisième \wpour \dobtenir toutes les bonnes lettres sauf les espaces. \Détait le seul\ groupe je pouvais trouver qui permettait les lettres et les espaces.

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-> ddans l'expression régulière.


3

Pyth, isaacg

La description

Le code d'origine effectue les opérations suivantes:

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

Depuis 156490583352162063278528710879425690470022892627113539022649722 - 58227066 donne 156490583352162063278528710879425690470022892627113538964422656 , ce qui équivaut à 2 26 × 3 × 7 × 7477 × 381524422711 × × 17007550201751761 2288745700077000184147 , la sortie désirée peut être obtenue par le remplacement ^3y21de ce qui est évalué à un diviseur de ce produit et est supérieure à 58.227.066 .

Le ^dans le code d'origine suggère que nous pourrions l'utiliser pour calculer une puissance de 2 , le 3 que nous pourrions calculer un diviseur convenable de la forme 3 × 2 n .

Les deux sont trompeurs. Solutions avec une distance Levenshtein de 3 ( %CG^2 26, %CG^y2 13, %CG^4y13) ou (4%CG.<3y13 ) sont faciles à trouver, mais la solution à la distance 2 nécessite une approche différente.

L'alphabet minuscule ( G) a 26 lettres, donc son jeu de puissance (l'ensemble de toutes les séquences strictement croissantes de lettres minuscules) a 2 26 éléments. En remplaçant y2paryG , nous calculons cet ensemble de puissance.

Nous pouvons récupérer la longueur de l'ensemble en remplaçant 3parl , ce qui nous laisse ^lyG1, c'est-à-dire 2 26 élevé à la première puissance.

Code

%CG^lyG1

Notez que cela ne fonctionnera que sur un ordinateur avec suffisamment de mémoire disponible (environ 6,43 Gio, selon time ), donc cela ne fonctionnera pas avec l'interpréteur en ligne.

Voici comment vous pouvez vérifier les résultats à partir de la ligne de commande:

$ \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! Bien joué.
isaacg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.