Hoy era el día de inscripción para el examen AP en mi escuela, y aunque estaba meticulosamente burbujeando en las páginas y páginas de información requeridas, la idea de este desafío me golpeó. Entonces, dada una cadena de letras y números, genera un gráfico de burbujas debidamente completado.
Reglas:
- Para cada carácter en la cadena de entrada, reemplace ese carácter en la columna correspondiente con uno
#
o@
cualquier otro símbolo razonable (si su idioma puede manejarlo, el carácter Unicode 'full_block': █ se ve muy bien) - Un espacio está representado por una columna en blanco (ver ejemplos)
- La entrada válida será una cadena que se compone solo de letras mayúsculas, dígitos numéricos y espacios.
- La entrada tendrá una longitud con un mínimo de 1 y un máximo de 32 caracteres.
- La salida debe ser MAYÚSCULAS
- Si la longitud de entrada es menor que la longitud máxima de 32, su programa aún debe generar las columnas en blanco restantes
- Su programa no tiene que manejar la entrada en minúscula de la misma manera que si fuera mayúscula, sino puntos de bonificación si puede.
Formato de tablero:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
44444444444444444444444444444444
55555555555555555555555555555555
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
Ejemplos:
CODE GOLF ->
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
█CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DD█DDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEE█EEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFF█FFFFFFFFFFFFFFFFFFFFFFF
GGGGG█GGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLL█LLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
O█OOOO█OOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
44444444444444444444444444444444
55555555555555555555555555555555
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
ABCDEFGHIJKLMNOPQRSTUVWXYZ012345 ->
@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
B@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEE@EEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFF@FFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGG@GGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHH@HHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIII@IIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJ@JJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKK@KKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLL@LLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMM@MMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNN@NNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOO@OOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPP@PPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQ@QQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRR@RRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSS@SSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTT@TTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUU@UUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVV@VVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWW@WWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXX@XXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYY@YYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZ@ZZZZZZ
00000000000000000000000000@00000
111111111111111111111111111@1111
2222222222222222222222222222@222
33333333333333333333333333333@33
444444444444444444444444444444@4
5555555555555555555555555555555@
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ->^^^
Y, por supuesto, este es el código de golf , por lo que gana la respuesta más corta
[A-Z0-9]{1,32}
y permitir cualquier comportamiento para las entradas que no coincidan.$
no aparecerá en las entradasRespuestas:
Casco , 23 bytes
¡Pruébelo en línea o inténtelo con el elegante personaje █ (pero un bytecount inválido)!
Lamentablemente, no pude fusionar los dos
map
s en uno (excepto con el uso de paréntesis, que cuesta 24 bytes).Explicación
fuente
Ruby , 62 bytes
Pruébalo en línea!
Devuelve una matriz de cadenas. Podría jugar más golf descartando uniones de cadenas y devolviendo una matriz 2D de caracteres como suele ser la norma, pero no estoy seguro de si está permitido aquí.
fuente
C (gcc) ,
132126 bytesPruébalo en línea!
Gracias a Jonathan Frech por guardar 6 bytes.
fuente
puts("")
es equivalente aputchar(10)
.++a)putchar((x[a-s]-*_)?*_:64);
->)putchar(x[a++-s]-*_?*_:64);
.64
a1
.putchar
llamada podría ser respondidaputchar(*_*(*_!=a[x-s]));
.Rojo , 177 bytes
Pruébalo en línea!
Más legible:
fuente
Carbón , 21 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Versión anterior con validación de entrada,
3432 bytes. Editar: guardado 2 bytes gracias a @ ASCII-only.Pruébalo en línea! El enlace es a la versión detallada del código.
fuente
StringReplace
) En una nota al margen, un reemplazo incorporado sería realmente útilCast
R , 104 bytes
Pruébalo en línea!
fuente
Jalea ,
1817 bytesUtiliza un personaje espacial. Para usar un
#
reemplazo⁶
con”#
un costo de un byte.Pruébalo en línea!
¿Cómo?
fuente
³Ḣ,⁶yØA;ØD¤µ32СZY
18 años, lo que creo que también puede mejorarse! Sin embargo, salir ...C ++ 14,
319 bytes237Esta es la primera vez que hago esto, en el peor lenguaje CodeGolf posible: P
Pruébalo en línea!
fuente
Nodo.js, 85 bytes
Port to Node.js sugerido por @DanielIndie
Pruébalo en línea!
JavaScript (ES6),
10398 bytesPruébalo en línea!
fuente
+""
, ¿ verdad ?)x/32
para guardar 2 bytes más, ya que seBuffer
está convirtiendo en números enteros.f=(s,x=561,c=Buffer([48+x/33%43]))=>x<1749?(s[x++%33]==c?'@':x%33?c:`\n`)+f(s,x):''
Perl 5
-F
, 47 bytesPruébalo en línea!
fuente
Haskell , 86 bytes
Para un enfoque mucho más agradable (y menos bytes), ¡vea la solución de Laikoni !
Pruébalo en línea!
Alternativamente para el mismo número de bytes, podríamos usar:
Pruébalo en línea!
Explicación / Ungolfed
El operador
(#)
es muy similar a,zipWith
sin embargo, la función está codificada, st. usa#
si dos caracteres son iguales y, de lo contrario, mantiene el segundo, sin golfizar:Si la primera lista está agotada, solo agrega los elementos restantes de la segunda:
Con ese ayudante solo necesitamos generar la cadena
"A..Z0..9"
, replicar cada elemento 32 veces y comprimir la entrada con cada cadena, sin golf:fuente
max
. Creo que debe publicar eso como su propia solución, ya que es muy diferente de mi solución.Haskell , 74 bytes
Pruébalo en línea! Una cadena de entrada
x
se rellena con espacios hasta una longitud de 32 contake 32$x++cycle" "
. Para cada carácterc
deA
aZ
y0
a9
, nos fijamos en los caracteresa
de la cadena de entrada acolchado y reemplazarlas por~
cuandoa
yc
son iguales y porc
lo contrario. Esto se logra mediantemax[c]['~'|a==c]
, que es, por ejemplo ,max "A" "~" = "~"
cuándoa = c = 'A'
, ymax "A" "" = "A"
cuándoc = 'A'
ya = 'B'
. Como esto produce una cadena singleton en lugar de un carácter,do
se utiliza la notación que concatena las cadenas singleton en una cadena.Basado en la solución Haskell de BMO .
fuente
Python 2, 138 bytes
Admite caracteres en mayúsculas y minúsculas y deja una columna sin rellenar para espacios.
Si el bono no vale la pena, entonces usaré 125 bytes y solo admitiré entradas en mayúsculas:
fuente
Stax , 15 bytes
Ejecutar y depurarlo
Se utiliza
'#'
para indicar una burbuja llena.Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
fuente
Pyth,
2320 bytesPruébalo aquí
Explicación
fuente
APL + WIN, 56 bytes
Solicita una cadena de entrada y usa el carácter # como identificador:
Explicación:
fuente
C (gcc) , 124 bytes
Pruébalo en línea!
En lugar de una matriz codificada, la reemplacé con una función de búsqueda. Afortunadamente, el conjunto de caracteres ASCII tiene rangos contiguos alfabéticos y numéricos (¡te estoy mirando, EBCDIC!) Además, me aseguré de mantener la salida a exactamente 32 caracteres usando
sprintf()
: si este no era un requisito de la tarea, el la función sería de 97 bytes:Pruébalo en línea!
fuente
CJam , 31 bytes
Pruébalo en línea! Utiliza espacios como el carácter "agujero".
Si se permite el espacio en blanco al final, esto funciona para 29 bytes :
Pruébalo en línea!
Aquí hay una variación de 34 bytes que utiliza el bloque completo Unicode (
█
) en su lugar:Pruébalo en línea!
Explicación
fuente
Python 2 ,
1039694 bytes-7 bytes gracias a Mnemonic
-2 bytes gracias a Jonathan Frech
Usos
'
como el símboloPruébalo en línea!
fuente
05AB1E , 19 bytes
Pruébalo en línea!
Explicación
fuente
a[b]
no funciona como lo quieres aquí, ¿verdad: P?MATL , 21 bytes
Utiliza un espacio como marcador.
Pruébalo en línea!
Explicación
fuente
Lisp común , 150 bytes
Pruébalo en línea!
Explicación
fuente
Java 10,
120118117 bytesPruébelo en línea (para TIO he usado '█' (en
9608
lugar de35
) para una mejor visibilidad).Explicación:
fuente
Retina , 64 bytes
Pruébalo en línea!
Rellena la cadena de entrada a la derecha con espacios de 36 caracteres.
Luego, coloca cada carácter en su propia línea y agrega
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
antes.Haga coincidir un par del mismo personaje en la misma línea, que hay uno si y solo si el personaje de esa línea coincide con uno de
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
. Reemplace el primero con@
y retire el segundo.Las únicas líneas no coincidentes son las que tienen espacios, por lo que los caracteres no espaciales son un bloque cuadrado de 36 × 36. Transponerlo.
Solo mantenga los primeros 32 caracteres en cada línea
fuente
Tcl ,
153145bytesGracias @sergiol por -8 bytes
Pruébalo en línea!
Explicación
fuente
SNOBOL4 (CSNOBOL4) ,
155150 bytesPruébalo en línea!
Explicación:
fuente
Prólogo (SWI) ,
235229228222214198173167165 bytes-6 bytes gracias a @Cows quack , -6 bytes gracias a @ 0 '
Pruébalo en línea!
Explicación
fuente
SOGL V0.12 , 19 bytes
Pruébalo aquí!
fuente
Octava , 61 bytes
Pruébalo en línea!
La función funciona de la siguiente manera:
fuente
Perl 6 , 57 bytes
Pruébalo en línea!
fuente