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

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í


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.


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.


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í


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


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

Python 3, 58 bytes, Mathias Ettinger

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

Uso básico del módulo de cadena .


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)

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


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

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



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


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


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

¡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í

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.