Impression ascendante ASCII, Robbers


13

Ceci est le fil des voleurs. Le fil des flics va ici .

Dans le fil de la police, la tâche consistait à créer un programme qui génère des caractères ASCII imprimables dans l'ordre croissant. La tâche des voleurs consiste à déchiffrer le code utilisé par les flics pour produire cette sortie.

Le code fissuré ne doit pas nécessairement être identique, tant qu'il a la même longueur et que tous les caractères révélés sont dans les bonnes positions. La langue doit également être la même (les numéros de version peuvent être différents). La sortie doit bien sûr être identique. Les flics ne peuvent pas utiliser de commentaires dans leur code, mais les voleurs sont libres de les utiliser.

Le gagnant du fil de voleurs sera l'utilisateur qui a craqué le plus de soumissions d'ici le 7 janvier 2016. S'il y a égalité, l'utilisateur qui a craqué les soumissions avec le code combiné le plus long gagnera.

La soumission doit être formatée comme suit:

Langue, nn caractères (y compris le lien vers la réponse), nom d'utilisateur du cop

Code:

alphaprinter

Production

abcdefghijklmnopqrstuvwxyz

Explication et commentaires facultatifs.

Classement:

Une écrasante victoire d' Adnan !

Adnan: 7
Pietu1998: 3
Mitch Schwartz: 2
Quintopia: 2
Martin Büttner: 2
cat: 1
Dennis: 1
insertusernamehere: 1
isaacg: 1
jimmy23013: 1
MegaTom: 1
plannapus: 1
user81655: 1

Réponses:


7

Python 2, 76 caractères, wnnmaw

Code, avec la version obscurcie ci-dessous:

print "BKT]f"#__h______________________v_____________,___)_________)_______)
print __________h______________________v_____________,___)_________)_______)

Cela sort BKT]f. Pas la version prévue, c'est sûr haha.

Testé ici


1
Commentaires sournois :)
wnnmaw

1
Cela vous apprendra à publier un programme dont la sortie est plus courte que la longueur du programme dans une langue qui a, printsauf si vous avez révélé des caractères exactement aux endroits où la chaîne devrait s'asseoir.
quintopie du

7

Brainfuck, 48 octets, Adnan

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

Assez simple, générant 64 puis 26. Il pourrait être un peu hareng rouge qui

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

est un moyen d'obtenir 65 ans, donc vous pourriez essayer de faire quelque chose comme

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

avant de remarquer que c'est une impasse.


Ahhh, bien joué :)
Adnan




4

JavaScript (ES6), 17 caractères, Neil

Comme l'OP a publié une fonction, voici une solution utilisant une fonction:

()=>xxx=11000+233
__=____=_________

La fonction anonyme peut être invoquée comme:

(()=>xxx=11000+233)();

Une solution plus ridicule que j'avais d'abord:

xx=yyyy=z=11230+3
__=____=_________

Lorsqu'il est exécuté dans la console, il imprime le numéro 11233.


2
Ninja'd moi. J'ai eufx=asdf=> "11233"
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Pensé, je devais être rapide sur celui-ci. : D
insertusernamehere

1
Eh bien, bravo à vous sur votre arme la plus rapide à l'ouest. +1
Conor O'Brien

-1 pour aucune
chaîne

1
La version de @ CᴏɴᴏʀO'Bʀɪᴇɴ semble être la seule qui est une fonction qui renvoie une chaîne.
Neil

4

PHP, 28 caractères, Niet the Dark Absol

J'ai trouvé plusieurs versions pour cette tâche:

Version originale:

<?=@implode(range('a','z'));

Ma version:

<?=join('',range('a', 'z'));

Version 23 caractères:

<?=join('',range(a,z));

Version à 26 caractères:

<?=implode('',range(a,z));

Bien sûr, vous pouvez simplement ajouter plusieurs espaces pour atteindre la marque de 28 caractères.

Testé ici


Dang, tu m'as battu: P Le plus court que je puisse faire:<?=join(range(a,z));
LegionMammal978

Vous m'avez eu - j'aurais peut-être dû le rendre plus restrictif en mettant l'une des lettres d'un nom de fonction comme caractères révélés ... Quoi qu'il en soit, pour mémoire, voici l'original:<?=@implode(range('a','z'));
Niet the Dark Absol

4

Jolf, 27 personnages, Cᴏɴᴏʀ O'Bʀɪᴇɴ

Après quelques heures d'essais et d'erreurs, je l'ai eu haha:

on-pl'u'Wa-n"vwxyz"`--'01_2

Y compris le code obscurci:

on-pl'u'Wa-n"vwxyz"`--'01_2
________W___________--_____
                         |

Essayez-le ici (l' étape d'exécution semble être la seule à fonctionner avec l'alerte)


Explication

La première chose sur laquelle je suis resté est le placement de la boucle while. Je ne semblais pas l'avoir au bon endroit haha. Après avoir bien fait les choses, la deuxième chose que j'ai remarquée était le placement du trait de soulignement. Je pensais que j'avais presque compris, jusqu'à ce que je sois coincé sur le soulignement (gg Cᴏɴᴏʀ O'Bʀɪᴇɴ).

Voici une explication complète du code:

on-pl'u'Wa-n"vwxyz"`--'01_2

o                           # assign
 n                          # n / standard variable
   pl                       # pl = "abcdefghijklmnopqrstuvwxyz"
  -  'u                     # pl - "u" = "abcdefghijklmnopqrstvwxyz"
       'W                   # a string in the middle doing nothing
          -n"vwxyz"         # n - "vwxyz"
         a                  # alert(
                   `        # is an extra semicolon
                     -'01   # "0" - 1
                    -    _2 # ("0" - 1) - negative 2

En pseudocode:

n = minus("abcdefghijklmnopqrstuvwxyz", "u");
"W";
alert(minus(n,"vwxyz"));
;
minus(minus("0", 1), negative(2));

Je suis intéressé de voir quelle était la solution réelle :)


1
sainte mère de Dieu pas ce que je voulais o______o mais bon travail, de toute façon! J'ai affiché le code réel sur ma réponse.
Conor O'Brien




4

Python 3, 58 octets, Mathias Ettinger

import string;print(''.join(sorted(string.printable))[5:])

Utilisation basique du module chaîne .


Je n'ai pas vu que vous aviez craqué cela avant moi, j'ai essayé d'utiliser stringmais je n'ai pas pensé à l'utiliser sorted(parce que j'oublie qu'il existe). Je ne sais pas si je dois laisser mon crack, car ce n'est pas du tout la même méthode mais ça marche.
chat

2
@cat Je ne sais pas quelle serait l'opinion de Stewie Griffin à ce sujet, mais de toute façon je vous ai donné +1 et je pense qu'il est logique de garder votre réponse car ce n'est pas la même réponse que la mienne.
Mitch Schwartz

4

05AB1E, 13 caractères, Adnan

Code (et code vierge):

1TD*<F3<*}bRJ
__D____<_____

Production:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Explication:

1                       Push 1
 TD*<                   Push 99
     F   }              For loop
      3<*               multiply top of stack by 3-1 (e.g. double it)
          b             convert to list of binary digits (note we have just computed 2^99)
           R            reverse it
            J           join it into a string.
                        (top of stack implicitly printed)

Woooww !! Travail incroyable :)
Adnan


3

JavaScript (ES6), 60 caractères, insérer le nom d'utilisateur ici

Code:

e=e=>{try{a}catch(e){return[...e.toString()].sort().join``}}
e_e_______a__a____e___e________e__o___________o______o______

Sortie (dans Chrome):

    :ERacddeeeeeeffiinnnoorrrrst

Je l'ai su tout de suite parce que j'allais faire la même chose! xD


Nice one - caractère par caractère. : D
insertusernamehere

1
@insertusernamehere Vous auriez pu faire [...e+'']pour le raccourcir un peu. Cela m'a bouleversé au début. ;)
user81655

Que fait-il return[...e.toString()]réellement? Je connais seulement un petit JS ...
chat

3
@cat Il place simplement chaque lettre du message d'erreur dans un tableau. Il doit le faire car sortne fonctionne que sur des tableaux, pas sur des chaînes.
user81655


3

Malbolge, 254 characters, frederick

Obfuscated version:

_____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ __

My version:

('&%: ^"!65 4Xzyx w4-Qs rpo'K mlk"' ~Dfdc ba}v< ::8[Z XnVlq }0/mO ,*MbK JH^6# 4`C|0 ?U=Sw uPsaq L4on2 Mjjh, ged)c '<$$p ]!};Y WiVxS eRQ>= ).K]l Ij"Fh gfedc b,=;z L\q%H X3E2C /ng-k N*KJI 8%6#D ~2^Ai >g<<d tUr`6 oJ"!1 /|{CU f)d>b <A_^! \};Yj yUxTS dtsr` ML

This will output:

`AB\cd`

You can try it here.



2

05AB1E, 7 characters Adnan

Code and blanked code:

576T*uH
___T___

Output:

22368

Explanation:

576       Push this number.
   T      Push ten.
    *     Multiply. (5760)
     u    Convert to string.
      H   Interpret as a hex number and push decimal (22368) (implicit output).

I almost positive this wasn't the original program, but thanks to Adnan for providing the one bit of information that made it possible (the u command).


I think this was the original program haha. Well done :)
Adnan

2

This answer is invalid and shouldn't count towards my score (not that I'm anywhere near winning anyways) because I didn't see it had already been cracked.

Python 3, 58 characters, Mathias Ettinger

Code, with original code below:

x=range(95);  print(''.join((chr(i+32) for i in x  )    ))
______________print(_______(_______________________)_____)

Clearly not the intended solution, which was:

import string;print(''.join(sorted(string.printable))[5:])

Output:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

(Note the leading space.)

A fun one to crack: it took me a while to figure how to get the genexpr to work properly. :)


1

Pyth, 17 characters, Luke

Code (with blanked code):

S`u]G6*T`t"#X0231
___________#____1

Output:

""''''''''''''''''''''0000000000111111111122222222223333333333XXXXXXXXXX[[[[[[]]]]]]

Try it online.

This was fun. I got it to 18 bytes multiple times using # as the filter operator, but then I figured out I could just discard it from the string. If you remove the t and the # the result would probably be the shortest Pyth code for that output.

Basically:

  • "#X0231 makes the string #X0231
  • t"#X0231 removes the #: X0231
  • `t"#X0231 gets the string representation: 'X0231'
  • *T`t"#X0231 multiplies it by 10: 'X0231''X0231''X0231'
  • u]G6*T`t"#X0231 wraps it in an array 6 times
  • `u]G6*T`t"#X0231 gets the string representation: [[[[[['X0231''X0231']]]]]]
  • S`u]G6*T`t"#X0231 sorts it to get the output

Very nice! And pretty different from what I had done.
Luke



0

Python 2, 62 characters, RikerW

Obfuscated version:

______________________________________________________________
         | |   ||                  |  |  ||

My version:

print "ab_c_de___".replace("_","")#___________________________

This simply removes all the underscores and outputs abcde.

Tried it here

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.