Muestre los 12 números en una esfera del reloj exactamente así:
12
11 1
10 2
9 3
8 4
7 5
6
Para ver mejor la cuadrícula, aquí hay uno con puntos:
...........12............
.....11...........1......
.........................
.10...................2..
.........................
.........................
9.......................3
.........................
.........................
..8...................4..
.........................
......7...........5......
............6............
Tenga en cuenta que la cuadrícula se estira en ancho por un factor de dos para que se vea más cuadrada.
También tenga en cuenta que los números de dos dígitos están alineados con sus dígitos en su lugar. Los 9 dígitos deben estar al ras de la izquierda.
Devuelva o imprima el resultado como una cadena multilínea (no una lista de líneas). Todos los espacios finales son opcionales. La nueva línea final también es opcional.
charCodeAt()
05AB1E ,
393331 bytes¡Gracias a Magic Octopus Urn por guardar 6 bytes!
Código
Algunas alternativas de 33 bytes:
Utiliza la codificación 05AB1E . Pruébalo en línea!
fuente
ÿ
con.V
, muy original! Y es curioso cómo solías12¤
tener ambos12
y2
en la pila. Probablemente lo hubiera usado12Y
, pero supongo que es irrelevante, ya que ambos tienen 12 y 2 en la pila. Si hubiera intentado este desafío en 05AB1E, habría terminado mucho más alto en el conteo de bytes. Supongo que todavía tengo mucho que aprender. ;)Y
. Esa hubiera sido una opción más fácil jajaja.6xsŸ5L•δ;Ì’•2ôúð.ø‚ζJ012∞S¶×‚ζJ.c
pero puedes usar cualquier cosa aquí.6xŠ»
, nunca hubiera pensado en eso.6502 código máquina (C64),
827673 bytes1
especialmente los dígitos inicialesLa idea aquí es almacenar solo los dígitos de todos los números en el orden en que se necesitan. La información adicional requerida es la cantidad de líneas nuevas a anteponer y la cantidad de espacios al frente.
El número máximo de líneas nuevas es
3
, por lo que necesitamos 2 bits para esto, y el número máximo de espacios es23
, por lo tanto, 5 bits son suficientes. Por lo tanto, para cada dígito a imprimir, podemos exprimir esta información en un solo "byte de control".Entonces, los datos para esta solución toman exactamente 30 bytes: 15 dígitos individuales y 15 "bytes de control" asociados.
Demostración en línea
Uso:
SYS49152
para comenzar.Desmontaje comentado :
fuente
JSR $FFD2 / DEY / BNE loop / LDA .control,X / RTS
requiera tanto líneas nuevas como espacios? Creo que tendría +10 bytes de longitud y guardaría -12 bytes en el código principal.JSR $FFD2 / DEY / BPL loop / LDA .control,X / RTS
y el punto de entrada es elDEY
. De esta manera, no tiene que probar0
en el código principal.DEY / BPL / RTS
saldrá inmediatamente sin procesar ningunoJSR $FFD2
. (Tenga en cuenta que con ese esquema, el punto de entrada de la subrutina debe serDEY
).Perl 6 ,
7674 bytesPruébalo en línea!
La respuesta de Port of Arnauld hasta que pueda llegar a algo más corto.
fuente
R ,
7568 bytesPruébalo en línea!
Comprimió las posiciones de los dígitos. Hicimos esto después de pasar mucho tiempo tratando de encontrar una respuesta trigonométrica (ver el historial de ediciones).
Inspirado por esta otra respuesta R, compre J.Doe - ¡vote por él!
Guardado 7 bytes gracias a J.Doe.
fuente
write
llamada para usar el separador predeterminado.HTML + JavaScript (Canvas), 13 + 161 = 174 bytes
El posicionamiento arbitrario del lienzo utiliza 6 bytes.
Con rejilla para comparar:
Explicación de la fórmula de posicionamiento
Vea mi JavaScript con la respuesta SVG .
fuente
Java
811,141138 bytesPruébelo en línea (NOTA:
String.repeat(int)
se emularepeat(String,int)
para el mismo recuento de bytes, porque Java 11 aún no está en TIO).La explicación es similar a la siguiente, pero se usa
" ".repeat(x-48)
para los espacios en lugar del formato con"%"+(x-48)+"s"
.Java 8, 141 bytes
Pruébalo en línea.
Explicación:
Explicación adicional
92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G
:92
).fuente
R,
168159125 bytesLa solución ingenua de escribir los números en los puntos prescritos en una matriz de texto. Los puntos se almacenan como letras UTF-8 decodificadas a través de
utf8ToInt
Se eliminaron 9 bytes con la sugerencia de JayCe de usar
write
y evitar definir la matriz.Se eliminaron otros 34 bytes con la sugerencia de almacenamiento de JayCe.
fuente
m
y usenwrite
: TIO . PD: no está obligado a incluir un enlace TIO en su respuesta, pero la formatea muy bien, vea el icono de enlace en la parte superior de la página TIO.!
operador para llegar a 125 caracteres . Muy buena solución!Haskell,
8887 bytesEl método de codificar espacios como letras (visto por primera vez en la respuesta de @ Arnauld ) en Haskell. Usarlo
{
y expandirlo\n
es un byte más corto que usarlo\n
directamente.Pruébalo en línea!
fuente
Óxido , 96 bytes
Pruébalo en línea!
fuente
brainfuck ,
240235 bytesPruébalo en línea!
Código comentado
¡Un raro ejemplo en el que el texto es lo suficientemente repetitivo como para que el programa brainfuck sea menos de
dosveces 1.6 veces la longitud de la salida!2 bytes guardados por sugerencia de Jo King:
>>>>>>-
->[<]>-
Se guardan 3 bytes moviendo el tercer conteo descendente de 20 lugares desde el extremo derecho de los códigos ASCII
10 30 50
a inmediatamente a la izquierda de ellos. Se guarda<<>>
al llenar el espacio entre8
y,4
pero agrega 1 byte a la línea>>>++
.Versión original
fuente
Python 2 , 97 bytes
Pruébalo en línea!
Calcula todos los espacios y líneas nuevas en el bucle
fuente
Jalea , 32 bytes
Un programa completo que imprime el resultado.
Pruébalo en línea!
¿Cómo?
(Todavía no he pensado / encontrado algo más corto que
“¿×¿ Œ4ç4Œ!¿Ø‘
lo que me parece largo para esta parte: rebotes / descompresión de base / incrementos, ¡nada parece salvar!)fuente
C (gcc) ,
145137125 bytesSolo las posiciones de las pestañas están codificadas: todos los espacios entre líneas y valores de reloj se generan en el bucle.
Gracias de nuevo a ceilingcat por las sugerencias.
Pruébalo en línea!
fuente
"\r\7\3"[j]
lugar de"NHDA"[j]-65
PHP , 97 bytes
Pruébalo en línea!
Esta es una cadena comprimida codificada. ¡No pude encontrar una solución más corta que esta!
fuente
file_put_contents($path, '<?=gzinflate("'.gzdeflate($clockString,9).'");');
, pero no estoy seguro de cómo publicar un código con datos binarios dentro. Un archivo como ese tiene 70 bytes.Pyke , 37 bytes
Pruébalo aquí! (bytes sin procesar)
Pruébalo aquí! (Legible por humanos)
fuente
brainfuck ,
315313 bytesahorrado 2 bytes gracias a los ovs !
Pruébalo en línea!
todo en un bloque de código:
fuente
++++[>++++<-]>
para los 16 al principio.><
en tu códigoPowershell,
948882 bytesOperador directo de formato Powershell .
{i,w}
significa un marcador de posición para un parámetro con índicei
, el ancho del marcador de posición estáw
alineado a la derecha.Powershell, 88 bytes
Respuesta Javascript del Puerto de Arnauld
-6 bytes gracias a @AdmBorkBork
Para ver mejor la cuadrícula, use
'.'
en su lugar' '
.fuente
.PadLeft
88 bytes? ¡ Pruébelo en línea!-f
. ¿Por qué no incluye enlaces para probarlo en línea! para que otros puedan ver cómo funciona tu código?This site can’t be reached
. Lo siento.C (gcc) ,
125109105 bytessizeof(wchar_t) == sizeof(int)
- no funcionará en Windows :) Gracias ErikF por la idea.Pruébalo en línea!
Este es un puerto de mi idea general de la solución de 6502 a C. Es un poco modificado: En lugar de tener una bandera para un líder
1
, el carácter se imprime como un decimal restando 48, por lo que 10 - 12 se codifican como:
a<
.fuente
Adjunto , 69 bytes
Pruébalo en línea!
Esto codifica cada corrida de espacios como
NTS[count of spaces]
:;NTS
es el valor incorporado "numérico a corto", que permite que los números se expresen como cadenas. Por ejemplo,NTS[95] = $R1
yNTS[170297] = $XQO
.STN
es el inverso de este incorporado.Esta respuesta reemplaza (
ReplaceF
) todas las ocurrencias de letras (/\l/
) en la entrada con el resultado de la funciónsp&`*@STN
, que primero decodifica la letra y luego repitesp
(un espacio) tantas veces.fuente
Swift ,
178165bytesvar b="";for c in"L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6"{let i=c.unicodeScalars.first!.value;if c=="n"{b+="\n"}else if i>64{for _ in 0..<(i-65){b+=" "}}else{b+="(c)"}};print(b)
Según lo publicado por Downgoat, he reducido esto a 165 bytes:
print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map{let x=Int($0.value);return x==110 ?"\n":(x>64 ?String(repeating:" ",count:x-65):"($0)")}.joined())
Expandido, con
$0
convertido a una variable con nombre:print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map { c in let x = Int(c.value) return x == 110 ? "\n" : (x>64 ? String(repeating:" ", count: x-65) : "(c)") }.joined())
La cadena de entrada se codifica de la siguiente manera: las letras mayúsculas (
A-Z
) representan bloques de espacios, compensados por 65. EntoncesA
significa 0 espacios,B
significa 1 espacio, el primeroL
significa 11 espacios, etc.n
s se convierten en líneas nuevas. Todos los demás caracteres se imprimen tal cual.Ejecútelo en línea aquí (gracias, mbomb007)
fuente
{"L12NF11L1NNB10T2NNN9X3NNNC8T4NNG7L5NM6".unicodeScalars.map({(c)->String in let x=c.value;return x==78 ? "\n" : x>64 ?String(repeating:" ",count:x-65) : "\(c)"}).joined()}
(swift 3 (-swift-version 3
en respuesta) porque swift 4 dejó caer la resta parece)Pure Bash , 123
printf
hace el trabajo pesado aquí:Pruébalo en línea!
fuente
Rojo , 151 bytes
Pruébalo en línea!
fuente
JavaScript con SVG, 188 bytes
La altura de línea arbitraria del 120% usa 4 bytes.
Con rejilla para comparar:
Explicación de la fórmula de posicionamiento
Dejar
f(x) = round(sin(x * π/6) * 6)
.Suponiendo que el origen es el centro del reloj, las coordenadas de la cuadrícula del dígito más a la derecha de cualquier número de reloj dado
x
son [f(x) * 2
,f(9 - x)
].fuente
Bash, 225 bytes
Es molesto que esto sea más largo que la solución ingenua de simplemente imprimir cada línea en un bucle (132 caracteres si se usan tabuladores).
fuente
tr -d \<space>
(dónde<space>
está el carácter de espacio) en lugar de la sustitución sed?tr -d\
sería equivalente ased 's/ //g'
Python 3 ,
1128887 bytesUna solución usando interpolación de cadenas.
Pruébalo en línea!
-25 bytes gracias a ovs y Herman L.
fuente
{11:7}
.C (gcc) ,
135123110 bytesEsto utiliza una codificación simple donde cualquiera
c
entre'a'
y'z'
representac-'a'+1
espacios repetidos,'`'
representa una nueva línea y todos los demás caracteres se dejan sin cambios.Pruébalo en línea!
fuente
*s=L"...";f(i){
lugar def(i){char*s="...";
T-SQL, 132 bytes
Solo 12 bytes más cortos que la solución trivial (
PRINT
de la cadena completa tal como está).Encontré una variación que me gusta que es mucho más larga (
235226 bytes), pero mucho más similar a SQL:STRING_SPLIT
lo divide en filas en las comas yPARSENAME
divide cada fila en los puntos. El 1er y 3er se usan para cuántos espacios imprimir, el 2do y 4to se usan para qué mostrar.(los saltos de línea en este son solo para facilitar la lectura)
fuente
Perl 6 , 116 bytes
Pruébalo en línea!
(Ta @JoKing para guardar 26 bytes)
Perl 6 , 142 bytes
Pruébalo en línea!
Yo quería hacer algo diferente. Entonces, este calcula las posiciones de todos los dígitos, a través de pares de caracteres, elimina el espacio inicial e imprime las líneas.
Fácilmente modificable para diferentes parámetros, por ejemplo, una versión de 45 caracteres de ancho con 17 dígitos .
fuente