Impresión ascendente ASCII, ladrones

13

Este es el hilo de los ladrones. El hilo de la policía va aquí .

En el hilo policías, la tarea consistía en crear un programa que generara caracteres ASCII imprimibles en orden ascendente. La tarea de los ladrones es descifrar el código que los policías usaron para producir esta salida.

El código descifrado no tiene que ser idéntico, siempre que tenga la misma longitud y los caracteres revelados estén en las posiciones correctas. El idioma también debe ser el mismo (los números de versión pueden ser diferentes). La salida, por supuesto, debe ser idéntica. Los policías no pueden usar comentarios en su código, pero los ladrones son libres de usarlos.

El ganador del hilo de los ladrones será el usuario que haya descifrado la mayor cantidad de envíos antes del 7 de enero de 2016. Si hay un empate, el usuario que haya descifrado los envíos con el código combinado más largo ganará.

La presentación debe tener el siguiente formato:

Idioma, nn caracteres (incluido el enlace para responder), nombre de usuario del policía

Código:

alphaprinter

Salida

abcdefghijklmnopqrstuvwxyz

Explicación opcional y comentarios.

Tabla de clasificación:

¡Una victoria aplastante 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
Stewie Griffin
fuente

Respuestas:

7

Python 2, 76 caracteres, wnnmaw

Código, con la versión ofuscada a continuación:

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

Esto da salida BKT]f. No es la versión prevista, eso es seguro jaja.

Probado aquí

Adnan
fuente
1
Comentarios
furtivos
1
Eso le enseñará a publicar un programa cuya salida es más corta que la longitud del programa en un idioma que printno lo haya hecho, a menos que haya revelado los caracteres exactamente en los lugares donde la cadena tendría que sentarse.
quintopia
7

Brainfuck, 48 bytes, Adnan

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

Bastante sencillo, generando 64 y luego 26. Podría ser un arenque rojo que

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

es una forma de obtener 65, por lo que puede intentar hacer algo como

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

antes de notar que es un callejón sin salida.

Mitch Schwartz
fuente
Ahhh, bien hecho :)
Adnan
4

JavaScript (ES6), 17 caracteres, Neil

A medida que el OP publicó una función, aquí hay una solución que usa una función:

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

La función anónima se puede invocar como:

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

Una solución más ridícula que tuve al principio:

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

Cuando se ejecuta en la consola, imprimirá el número 11233.

insertusernamehere
fuente
2
Ninja'd me Tengofx=asdf=> "11233"
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Pensé que tenía que ser rápido en esto. : D
insertusernamehere
1
Bueno, felicitaciones por tu arma más rápida en el oeste. +1
Conor O'Brien
-1 sin condiciones: P
ev3commander
1
La versión de @ CᴏɴᴏʀO'Bʀɪᴇɴ parece ser la única que es una función que devuelve una cadena.
Neil
4

PHP, 28 caracteres, Niet the Dark Absol

Encontré varias versiones para esta tarea:

Versión original:

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

Mi version:

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

Versión de 23 caracteres:

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

Versión de 26 caracteres:

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

Por supuesto, solo puede agregar varios espacios en blanco para llegar a la marca de 28 caracteres.

Probado aquí

Adnan
fuente
Dang, me ganaste: P Lo más corto que puedo hacer:<?=join(range(a,z));
LegionMammal978
Me entendiste, tal vez debería haberlo hecho más restrictivo al poner una de las letras de un nombre de función como los personajes revelados ... De todos modos, para el registro, aquí está el original:<?=@implode(range('a','z'));
Niet the Dark Absol
4

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

Después de unas horas de prueba y error, lo tengo jaja:

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

Incluyendo código ofuscado:

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

Pruébelo aquí (la ejecución de pasos parece ser la única que funciona con alerta)


Explicación

Lo primero que me atascó fue la colocación del bucle while. Parece que no lo conseguí en el lugar correcto jaja. Después de hacerlo bien, lo segundo que noté fue la ubicación del guión bajo. Pensé que casi lo entendí, hasta que me quedé atrapado en el guión bajo (gg Cᴏɴᴏʀ O'Bʀɪᴇɴ).

Aquí está la explicación completa del 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

En pseudocódigo:

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

Estoy interesado en ver cuál fue la solución real :)

Adnan
fuente
1
Santa Madre de Dios, no es lo que pretendía o______o sino un buen trabajo Publiqué el código real en mi respuesta.
Conor O'Brien
4

R, 60 bytes, máquina de fax

Código:

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

Salida:

0123456789ABCDEFGHTUVWXYZdefghijklmnopqrstuvw
plannapus
fuente
4

Python 3, 58 bytes, Mathias Ettinger

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

Uso básico del módulo de cadena .

Mitch Schwartz
fuente
No vi que habías resuelto esto antes que yo, intenté usarlo stringpero no pensé en usarlo sorted(porque olvido que existe). No sé si debería dejar mi crack, ya que no está cerca del mismo método, pero funciona.
gato
2
@cat No sé cuál sería la opinión de Stewie Griffin sobre eso, pero de todos modos te di +1 y creo que tiene sentido mantener tu respuesta, ya que no es la misma respuesta que la mía.
Mitch Schwartz
4

05AB1E, 13 caracteres, Adnan

Código (y código en blanco):

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

Salida:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Explicación:

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)
quintapia
fuente
Woooww !! Increíble trabajo :)
Adnan
3

JavaScript (ES6), 60 caracteres, insertar nombre de usuario aquí

Código:

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

Salida (en Chrome):

    :ERacddeeeeeeffiinnnoorrrrst

¡Lo supe de inmediato porque estaba a punto de hacer lo mismo! xD

usuario81655
fuente
Nice one - personaje por personaje. : D
insertusernamehere
1
@insertusernameherePodrías haber hecho [...e+'']que sea un poco más corto. Eso me tiró al principio. ;)
user81655
¿Qué hace return[...e.toString()]realmente? Solo conozco un lil JS ...
gato
3
@cat Simplemente pone cada letra del mensaje de error en una matriz. Necesita hacer esto porque sortsolo funciona en matrices, no en cadenas.
user81655
3

Pyth, 6 personajes, Adnan

Código (con código en blanco):

S`.n 3
S_____

Salida

.0113345678888999

Pruébalo en línea.

Es la representación de φ, ordenada. Esto podría haberse hecho en 5, si elimina el espacio.

PurkkaKoodari
fuente
Awww, me olvidé de los backticks: p. Mi código original eraS+.n3"
Adnan el
3

Malbolge, 254 personajes, frederick

Versión ofuscada:

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

Mi 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

Esto generará:

`AB\cd`

Puedes probarlo aquí .

Adnan
fuente
2

Befunge, 11 personajes, histocrat

Código:

89'**'z...@

Salida:

1223788

Eso fue divertido. Esta es una solución alternativa que también encontré:

8]..@#37.z'
MegaTom
fuente
Oh, buenas soluciones funge-98.
histocrat
2

05AB1E, 7 caracteres Adnan

Código y código en blanco:

576T*uH
___T___

Salida:

22368

Explicación:

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

Casi estoy seguro de que este no era el programa original, pero gracias a Adnan por proporcionar la información que lo hizo posible (el ucomando).

quintapia
fuente
Creo que este fue el programa original jaja. Bien hecho :)
Adnan
2

Esta respuesta no es válida y no debería contar para mi puntaje (no es que esté cerca de ganar de todos modos) porque no vi que ya se había descifrado.

Python 3, 58 caracteres, Mathias Ettinger

Código, con el código original a continuación:

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

Claramente no es la solución prevista, que era:

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

Salida:

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

(Tenga en cuenta el espacio inicial).

Una divertida para descifrar: me tomó un tiempo descubrir cómo hacer genexprque funcione correctamente. :)

gato
fuente
1

Pyth, 17 personajes, Luke

Código (con código en blanco):

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

Salida:

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

Pruébalo en línea.

Esto fue divertido. Lo llevé a 18 bytes varias veces usando #como operador de filtro, pero luego descubrí que podía descartarlo de la cadena. Si elimina el ty el #resultado, probablemente sería el código Pyth más corto para esa salida.

Básicamente:

  • "#X0231 hace la cuerda #X0231
  • t"#X0231elimina el #:X0231
  • `t"#X0231 obtiene la representación de cadena: 'X0231'
  • *T`t"#X0231lo multiplica por 10: 'X0231''X0231''X0231'...
  • u]G6*T`t"#X0231 lo envuelve en una matriz 6 veces
  • `u]G6*T`t"#X0231obtiene la representación de cadena: [[[[[['X0231'...'X0231']]]]]]
  • S`u]G6*T`t"#X0231 lo ordena para obtener la salida
PurkkaKoodari
fuente
¡Muy agradable! Y bastante diferente de lo que había hecho.
Lucas
0

Python 2, 62 caracteres, RikerW

Versión ofuscada:

______________________________________________________________
         | |   ||                  |  |  ||

Mi version:

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

Esto simplemente elimina todos los guiones bajos y salidas abcde.

Intenté aquí

Adnan
fuente