Dada una cadena de entrada que contiene solo letras y números, escriba un programa o función que imprima los posibles caracteres ASCII imprimibles (Hex 20-7E) que se corresponden con el valor de la cadena en las bases 8, 10 y 16 (donde sea posible). Los caracteres deben escribirse en orden creciente en términos de las bases con las que se corresponden (base 8 primero, etc.). La salida puede estar en formato de matriz (como [& . F]
) o separada por espacios o nuevas líneas (una nueva línea final es opcional) como las muestras.
Si no se puede formar un posible carácter ASCII imprimible, el programa no debe tener ningún resultado.
Muestras
31
==> 1
47
==> ' / G
69
==> E i
7A
==> z
100
==> @ d
156
==> n
189
==> <empty>
potaTO
==> <empty>
5G
==> <empty>
19
==> <empty>
Este es el código de golf , por lo que gana la respuesta con la menor cantidad de bytes. Aplican reglas estándar.
fuente
map
yfilter
, las comprensiones de matriz son realmente útiles.'0'+b+...
cuándob
siempre será una cadena?0+b+...
MATL , 23
2428bytes1 byte apagado gracias a @David
Pruébalo en línea!
fuente
D
es necesario, ¿verdad? Buen trabajo en la creación del vector, hice casi lo mismo que usted pero no pude acortar el vector[8,10,16]
.D
era necesario en este caso vaciar la pila. Pero tienes razón, no lo es! ¡Gracias!' ':'~'
un literal predefinido para el próximo lanzamiento!32:126m
¡¡es una buena idea!!Python 3,
8482 bytesfuente
Pyth,
23212018 bytesSalida como una matriz. Hay un literal
\x80
entre la barra diagonal inversa y la C, que he reemplazado con a•
.Pruébalo aquí .
fuente
Jolf, 26 bytes
Pruébalo aquí! Banco de pruebas
Explicación
fuente
Bash + utilidades GNU + ascii , 36
No estoy seguro si el uso de la
ascii
utilidad está permitido. La entrada se toma como un parámetro de línea de comandos.ascii
se puede instalar en Ubuntu consudo apt-get install ascii
.fuente
Javascript ES6, 89 caracteres
Prueba:
fuente
Lua, 147 bytes
No creo que pueda jugar mucho más, he probado muchas formas de hacerlo, y aquí viene la más corta. Incluso el uso de un compilador antiguo que contiene la función obsoleta
table.foreach(table,function)
no elimina algunos bytes.Este programa toma una cadena como argumento e imprime la concatenación de los valores de una tabla separados por espacios.
Sin golfos y explicaciones
Si está deambulando por qué hay un conjunto de variables pero no se usa en un código golfizado (la variable
_
en el bucle for), este es el motivo:Tiene 2 formas de iterar sobre una matriz en Lua, ya sea en un estilo for:
o en un estilo foreach:
Necesitaba los valores contenidos en la tabla,
{8,10,16}
ya que son las diferentes bases sobre las que tengo que repetir. Pero las funciones con retorno múltiple no le permitirán elegir cuál desea que se devuelva, siguen un pedido. Para tener la variablevalue
establecida, también necesito capturar el valor dekey
: eso es lo que llamamos un maniquí_
.fuente
C (función), 76
Ideona
fuente
j*=j,j/=6
está más claramente escrito comoj=j*j/6
j*=j/6
pero eso no funcionó debido a la pérdida de precisión durante la división de enterosj<20,
el operador de coma descarta todo el efecto de esto.JavaScript ES6,
8988 bytes¡Guardado 1 byte gracias a Neil!
Devuelve una matriz. Si no está bien, esto funciona para 8 bytes adicionales, mostrando las posibles coincidencias.
Mostrar fragmento de código
fuente
47
.Number()
requiere0o
peroeval
es feliz con solo0
. Perdón por la confusion.R, 84 bytes
utiliza
strtoi
para convertir a cada una de las bases y luego convertir a personaje si está en el rango apropiado. Podría ahorrar 4 bytes más al eliminarcat
si permitimos la impresión predeterminada de caracteres (envuelta""
)fuente