Imprimindo ASCII ascendente, Robbers


13

Este é o fio dos ladrões. A discussão dos policiais vai aqui .

No segmento de policiais, a tarefa era criar um programa que produza caracteres ASCII imprimíveis em ordem crescente. A tarefa dos ladrões é decifrar o código que os policiais usaram para produzir essa saída.

O código quebrado não precisa ser idêntico, desde que tenha o mesmo comprimento e quaisquer caracteres revelados estejam nas posições corretas. O idioma também deve ser o mesmo (os números de versão podem ser diferentes). A saída deve, é claro, ser idêntica. Os policiais não podem usar comentários em seu código, mas os ladrões são livres para usá-los.

O vencedor do segmento de ladrões será o usuário que tiver quebrado mais envios até 7 de janeiro de 2016. Se houver um empate, o usuário que tiver quebrado os envios com o código combinado mais longo vencerá.

O envio deve ser formatado da seguinte forma:

Idioma, nn caracteres (incluindo link para resposta), nome de usuário do Cop

Código:

alphaprinter

Resultado

abcdefghijklmnopqrstuvwxyz

Explicação e comentários opcionais.

Entre os melhores:

Uma vitória esmagadora de 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

Respostas:


7

Python 2, 76 caracteres, wnnmaw

Código, com versão ofuscada abaixo:

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

Isso gera BKT]f. Não é a versão pretendida, com certeza haha.

Testado aqui


1
Comentários
furtivos

1
Isso ensinará você a publicar um programa cuja saída seja menor que a duração do programa em um idioma que tenha, a printmenos que você tenha revelado caracteres exatamente nos locais em que a string precisaria se sentar.
quintopia 30/12/2015

7

Brainfuck, 48 bytes, Adnan

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

Bem simples, gerando 64 e depois 26. Pode ser um pouco de arenque vermelho que

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

é uma maneira de obter 65, então você pode tentar fazer algo como

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

antes de perceber que é um beco sem saída.


Ahhh, bem feito :)
Adnan




4

JavaScript (ES6), 17 caracteres, Neil

Como o OP postou uma função, aqui está uma solução usando uma função:

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

A função anônima pode ser chamada como:

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

Uma solução mais ridícula que tive no começo:

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

Quando executado no console, ele imprimirá o número 11233.


2
Ninja me. Eu tenhofx=asdf=> "11233"
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Pensei, eu tinha que ser rápido neste. : D
insertusernamehere

1
Bem, parabéns a você por sua arma mais rápida no oeste. +1
Conor O'Brien

-1 para sem cordas: P
ev3commander

1
A versão do @ CᴏɴᴏʀO'Bʀɪᴇɴ parece ser a única que é uma função que retorna uma string.
Neil

4

PHP, 28 caracteres, Niet the Dark Absol

Encontrei várias versões para esta tarefa:

Versão original:

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

Minha versão:

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

Versão de 23 caracteres:

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

Versão de 26 caracteres:

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

Claro, você pode adicionar vários espaços em branco para chegar à marca de 28 caracteres.

Testado aqui


Dang, você me venceu: P O mais curto que posso fazer:<?=join(range(a,z));
LegionMammal978

Você me pegou - talvez eu devesse ter feito isso mais restritivo, colocando uma das letras de um nome de função como os personagens revelados ... De qualquer forma, para o registro, aqui está o original:<?=@implode(range('a','z'));
Niet the Dark Absol

4

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

Depois de algumas horas de tentativa e erro, entendi haha:

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

Incluindo código ofuscado:

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

Experimente aqui ( passo executado parece ser a única que trabalha com alerta)


Explicação

A primeira coisa em que fiquei preso foi a colocação do loop while. Eu não parecia colocá-lo no lugar certo haha. Depois de acertar, a segunda coisa que notei foi a colocação do sublinhado. Eu pensei que quase consegui, até ficar preso no sublinhado (gg Cᴏɴᴏʀ O'Bʀɪᴇɴ).

Aqui está uma explicação completa do código:

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

No pseudocódigo:

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

Estou interessado em ver qual foi a solução real :)


1
santa mãe de Deus, não o que eu pretendia, mas bom trabalho, de qualquer maneira! Publiquei o código real na minha resposta.
Conor O'Brien




4

Python 3, 58 bytes, Mathias Ettinger

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

Uso básico do módulo de string .


Eu não vi que você tinha resolvido isso antes de mim, tentei usar, stringmas não pensei em usar sorted(porque esqueço que existe). Eu não sei se devo deixar meu crack, já que não é nem de longe o mesmo método, mas funciona.
cat

2
@cat Eu não sei qual seria a opinião de Stewie Griffin sobre isso, mas mesmo assim eu lhe dei +1 e acho que faz sentido manter sua resposta, pois não é a mesma resposta que a minha.
Mitch Schwartz

4

05AB1E, 13 caracteres, Adnan

Código (e código em branco):

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

Resultado:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Explicação:

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 !! Trabalho incrível :)
Adnan


3

JavaScript (ES6), 60 caracteres, insertusernamehere

Código:

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

Saída (no Chrome):

    :ERacddeeeeeeffiinnnoorrrrst

Eu soube disso imediatamente porque estava prestes a fazer a mesma coisa! xD


Nice one - personagem por personagem. : D
insertusernamehere

1
@insertusernamehere Você poderia ter feito isso [...e+'']para ficar um pouco mais curto. Isso me assustou no começo. ;)
user81655

O que return[...e.toString()]realmente faz? Eu sei apenas um lil JS ...
cat

3
@cat Apenas coloca cada letra da mensagem de erro em uma matriz. Ele precisa fazer isso porque sortfunciona apenas em matrizes, não em seqüências de caracteres.
user81655


3

Malbolge, 254 caracteres, frederick

Versão ofuscada:

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

Minha versão:

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

Isso produzirá:

`AB\cd`

Você pode tentar aqui .



2

05AB1E, 7 caracteres Adnan

Código e código em branco:

576T*uH
___T___

Resultado:

22368

Explicação:

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

Eu quase tive certeza de que esse não era o programa original, mas agradeço a Adnan por fornecer a única informação que tornou possível (o ucomando).


Eu acho que esse foi o programa original haha. Bem feito :)
Adnan

2

Esta resposta é inválida e não deve contar para a minha pontuação (não que eu esteja perto de ganhar de qualquer maneira), porque eu não vi que ela já estava quebrada.

Python 3, 58 caracteres, Mathias Ettinger

Código, com código original abaixo:

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

Claramente, não a solução pretendida, que era:

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

Resultado:

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

(Observe o espaço à esquerda.)

Um divertido para quebrar: levei um tempo para descobrir como fazer o genexprtrabalho corretamente. :)


1

Pitão, 17 caracteres, Lucas

Código (com código em branco):

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

Resultado:

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

Experimente online.

Isso foi divertido. Eu consegui 18 bytes várias vezes usando #como operador de filtro, mas então descobri que poderia descartá-lo da string. Se você remover o te# resultado provavelmente seria o código Pyth mais curto para essa saída.

Basicamente:

  • "#X0231 faz a corda #X0231
  • t"#X0231remove o #:X0231
  • `t"#X0231 obtém a representação da string: 'X0231'
  • *T`t"#X0231multiplica por 10: 'X0231''X0231''X0231'
  • u]G6*T`t"#X0231 envolve-o em uma matriz 6 vezes
  • `u]G6*T`t"#X0231obtém a representação da string: [[[[[['X0231''X0231']]]]]]
  • S`u]G6*T`t"#X0231 classifica para obter a saída

Muito agradável! E bem diferente do que eu tinha feito.
Lucas



0

Python 2, 62 caracteres, RikerW

Versão ofuscada:

______________________________________________________________
         | |   ||                  |  |  ||

Minha versão:

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

Isso simplesmente remove todos os sublinhados e saídas abcde .

Tentei aqui

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.