Stampa ascendente ASCII, ladri


13

Questo è il filo dei ladri. Il thread della polizia va qui .

Nel thread della polizia, il compito era quello di creare un programma che emettesse caratteri ASCII stampabili in ordine crescente. Il compito dei ladri è di decodificare il codice usato dai poliziotti per produrre questo output.

Il codice crackato non deve essere identico, purché abbia la stessa lunghezza e tutti i caratteri rivelati siano nelle posizioni corrette. Anche la lingua deve essere la stessa (i numeri di versione possono essere diversi). L'output deve ovviamente essere identico. I poliziotti non possono usare i commenti nel loro codice, ma i ladri sono liberi di usarli.

Il vincitore del thread dei ladri sarà l'utente che ha superato il maggior numero di richieste entro il 7 gennaio 2016. In caso di pareggio, vincerà l'utente che ha superato le richieste con il codice combinato più lungo.

L'invio deve essere formattato in questo modo:

Lingua, nn caratteri (incluso il link per rispondere), nome utente di Cop

Codice:

alphaprinter

Produzione

abcdefghijklmnopqrstuvwxyz

Spiegazione e commenti opzionali.

Classifica:

Una schiacciante vittoria di 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

Risposte:


7

Python 2, 76 caratteri, wnnmaw

Codice, con la versione offuscata di seguito:

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

Questo produce BKT]f. Non è la versione prevista, questo è certo ahah.

Testato qui


1
Commenti
subdoli

1
Questo ti insegnerà a pubblicare un programma il cui output è più breve della lunghezza del programma in una lingua che ha a printmeno che tu non abbia rivelato i caratteri esattamente nei punti in cui dovrebbe trovarsi la stringa.
Quintopia,

7

Brainfuck, 48 byte, Adnan

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

Abbastanza semplice, generando 64 e poi 26. Potrebbe essere un po 'aringa rossa

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

è un modo per ottenere 65 anni, quindi potresti provare a fare qualcosa del genere

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

prima di notare che è un vicolo cieco.


Ahhh, ben fatto :)
Adnan il




4

JavaScript (ES6), 17 caratteri, Neil

Poiché l'OP ha pubblicato una funzione, ecco una soluzione che utilizza una funzione:

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

La funzione anonima può essere invocata come:

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

Una soluzione più ridicola che ho avuto all'inizio:

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

Quando eseguito nella console, stamperà il numero 11233.


2
Ninja'd me. Ho avutofx=asdf=> "11233"
Conor O'Brien il

@ CᴏɴᴏʀO'Bʀɪᴇɴ Pensato, dovevo essere veloce su questo. : D
insertusernamehere il

1
Beh, complimenti a te sulla tua pistola più veloce in Occidente. +1
Conor O'Brien,

-1 senza stringhe: P
ev3commander il

1
La versione di @ CᴏɴᴏʀO'Bʀɪᴇɴ sembra essere l'unica che restituisce una stringa.
Neil,

4

PHP, 28 personaggi, Niet the Dark Absol

Ho trovato diverse versioni per questa attività:

Versione originale:

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

La mia versione:

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

23 caratteri versione:

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

Versione a 26 caratteri:

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

Ovviamente, puoi semplicemente aggiungere diversi spazi bianchi per raggiungere il segno di 28 caratteri.

Testato qui


Dang, mi hai battuto: P Il più breve che posso fare:<?=join(range(a,z));
LegionMammal978,

Mi hai preso - forse avrei dovuto renderlo più restrittivo mettendo una delle lettere del nome di una funzione come personaggi rivelati ... Comunque, per la cronaca, ecco l'originale:<?=@implode(range('a','z'));
Niet the Dark Absol

4

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

Dopo alcune ore di tentativi ed errori, ho capito ahah:

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

Incluso codice offuscato:

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

Provalo qui (il passaggio sembra essere l'unico che funziona con avviso)


Spiegazione

La prima cosa su cui mi sono bloccato è stato il posizionamento del ciclo while. Non mi sembrava di averlo nel posto giusto ahah. Dopo aver capito bene, la seconda cosa che ho notato è stata la posizione del trattino basso. Pensavo di averlo quasi capito, fino a quando non mi sono bloccato sul carattere di sottolineatura (gg Cᴏɴᴏʀ O'Bʀɪᴇɴ).

Ecco la spiegazione completa del codice:

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

In pseudocodice:

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

Sono interessato a vedere quale fosse la soluzione effettiva :)


1
santa madre di Dio non è quello che volevo, ma comunque un bel lavoro! Ho pubblicato il codice effettivo sulla mia risposta.
Conor O'Brien,


4

R, 60 byte, fax

Codice:

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

Produzione:

0123456789ABCDEFGHTUVWXYZdefghijklmnopqrstuvw


4

Python 3, 58 byte, Mathias Ettinger

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

Uso di base del modulo stringa .


Non ho visto che l'avevi rotto prima di me, ho provato a usare stringma non ho pensato di usare sorted(perché ho dimenticato che esiste). Non so se dovrei lasciare il mio crack, dal momento che non è affatto vicino allo stesso metodo ma funziona.
cat

2
@cat Non so quale sarebbe l'opinione di Stewie Griffin a riguardo, ma comunque ti ho dato +1 e penso che abbia senso mantenere la tua risposta poiché non è la stessa della mia.
Mitch Schwartz,

4

05AB1E, 13 caratteri, Adnan

Codice (e codice cancellato):

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

Produzione:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Spiegazione:

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 !! Lavoro straordinario :)
Adnan,


3

JavaScript (ES6), 60 caratteri, insertusernamehere

Codice:

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

Uscita (in Chrome):

    :ERacddeeeeeeffiinnnoorrrrst

L'ho capito subito perché stavo per fare la stessa cosa! xD


Bello uno - personaggio per personaggio. : D
inserireusernamehere il

1
@inserireusernamehere Avresti potuto [...e+'']fare un po 'più breve. Questo mi ha gettato via all'inizio. ;)
user81655 il

Cosa fa return[...e.toString()]effettivamente? Conosco solo un lil JS ...
cat

3
@cat Inserisce semplicemente ogni lettera del messaggio di errore in un array. Deve farlo perché sortfunziona solo su array, non su stringhe.
user81655,


3

Malbolge, 254 personaggi, Federico

Versione offuscata:

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

La mia versione:

('&%: ^"!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

Questo produrrà:

`AB\cd`

Puoi provarlo qui .



2

05AB1E, 7 caratteri Adnan

Codice e codice cancellato:

576T*uH
___T___

Produzione:

22368

Spiegazione:

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

Sono quasi sicuro che questo non fosse il programma originale, ma grazie ad Adnan per aver fornito l'unica informazione che lo ha reso possibile (il ucomando).


Penso che questo fosse il programma originale ahah. Ben fatto :)
Adnan il

2

Questa risposta non è valida e non dovrebbe valere per il mio punteggio (non che io sia vicino a vincere comunque) perché non ho visto che era già stato violato.

Python 3, 58 caratteri, Mathias Ettinger

Codice, con il codice originale di seguito:

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

Chiaramente non la soluzione prevista, che era:

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

Produzione:

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

(Nota lo spazio iniziale.)

Una cosa divertente da decifrare: mi ci è voluto un po 'per capire come far genexprfunzionare correttamente. :)


1

Pyth, 17 personaggi, Luke

Codice (con codice cancellato):

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

Produzione:

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

Provalo online.

È stato divertente. L'ho portato a 18 byte più volte usando #come operatore filtro, ma poi ho capito che potevo semplicemente scartarlo dalla stringa. Se rimuovi il te il #risultato sarebbe probabilmente il codice Pyth più breve per quell'output.

Fondamentalmente:

  • "#X0231 rende la stringa #X0231
  • t"#X0231rimuove il #:X0231
  • `t"#X0231 ottiene la rappresentazione della stringa: 'X0231'
  • *T`t"#X0231lo moltiplica per 10: 'X0231''X0231''X0231'...
  • u]G6*T`t"#X0231 lo avvolge in un array 6 volte
  • `u]G6*T`t"#X0231ottiene la rappresentazione della stringa: [[[[[['X0231'...'X0231']]]]]]
  • S`u]G6*T`t"#X0231 ordina per ottenere l'output

Molto bella! E piuttosto diverso da quello che avevo fatto.
Luca,



0

Python 2, 62 caratteri, RikerW

Versione offuscata:

______________________________________________________________
         | |   ||                  |  |  ||

La mia versione:

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

Questo rimuove semplicemente tutti i caratteri di sottolineatura e gli output abcde .

Ho provato qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.