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
Stewie Griffin
la source

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

Adnan
la source
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.

Mitch Schwartz
la source
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.

insertusernamehere
la source
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

Adnan
la source
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 :)

Adnan
la source
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

R, 60 octets, télécopieur

Code:

cat(c(0:9,LETTERS[1:8],LETTERS[20:26],letters[4:23]),sep="")

Production:

0123456789ABCDEFGHTUVWXYZdefghijklmnopqrstuvw
plannapus
la source
4

Python 3, 58 octets, Mathias Ettinger

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

Utilisation basique du module chaîne .

Mitch Schwartz
la source
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)
quintopie
la source
Woooww !! Travail incroyable :)
Adnan
3

JavaScript, 83 caractères, BlockCoder1392

a=aaaaraaaa=uaaaa=aasaa=console;b=0;a.log("Hi~~~");auaaaaaaaAaaaaaaaa =aeaaaa="^~^"

Un peu trop de caractères pour une chaîne aussi courte.

Martin Ender
la source
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

user81655
la source
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

Pyth, 6 caractères, Adnan

Code (avec code vierge):

S`.n 3
S_____

Production

.0113345678888999

Essayez-le en ligne.

It's φ's representation, sorted. This could've been done in 5, if you remove the space.

PurkkaKoodari
la source
Awww, I forgot about the backticks :p. My original code was S+.n3"
Adnan
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.

Adnan
la source
2

Befunge, 11 characters, histocrat

Code:

89'**'z...@

Output:

1223788

That was fun. This is an alternate solution I also found:

8]..@#37.z'
MegaTom
la source
Oh, cool, funge-98 solutions.
histocrat
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).

quintopia
la source
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. :)

cat
la source
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
PurkkaKoodari
la source
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

Adnan
la source