Codificación las 24 horas


47

Escriba un programa de una sola línea de dos o más caracteres de longitud que no contenga terminadores de línea y no tome entrada. Por ejemplo, su programa podría ser:

MyProgram

Cuando su programa se organiza en las formas que hacen las manecillas de un reloj a las 12, 3, 6 y 9 en punto, debe emitir el número de hora correspondiente. No hay otros tiempos que sean compatibles.

Específicamente:

  • Cuando su programa está organizado como las manecillas del reloj a las 12 en punto (🕛)

    m
    a
    r
    g
    o
    r
    P
    y
    M
    

    ejecutarlo debería dar salida 12.

  • Cuando su programa está organizado como las manecillas del reloj a las 3 en punto (🕒)

    m
    a
    r
    g
    o
    r
    P
    y
    MyProgram
    

    ejecutarlo debería dar salida 3.

  • Cuando su programa está organizado como las manecillas del reloj a las 6 en punto (🕕)

    m
    a
    r
    g
    o
    r
    P
    y
    M
    y
    P
    r
    o
    g
    r
    a
    m
    

    ejecutarlo debería dar salida 6.

  • Cuando su programa está organizado como las manecillas del reloj a las 9 en punto (🕘)

    ........m
    ........a
    ........r
    ........g
    ........o
    ........r
    ........P
    ........y
    margorPyM
    

    ejecutarlo debería dar salida 9.

Notas

  • El primer carácter en su programa siempre se coloca en el centro del reloj. (Tenga en cuenta que solo hay uno Men el ejemplo de las 6 en punto).

  • Se puede usar cualquier carácter que no sea de línea nueva para sangrar el programa para la disposición de las 9 en punto. En los ejemplos .se usa, pero el espacio o /o #sería igual de válido.

  • Para la disposición de las 3 en punto, no debe haber caracteres en la región superior derecha vacía. (es decir, manténgalo vacío, no lo llene con espacios).

  • El arreglo inicial del programa ( MyProgramcomo está) no necesita hacer nada. Solo las disposiciones de las 12, 3, 6 y 9 en punto deben tener una salida correcta y bien definida.

  • El código que solo funciona como una función o comando REPL no está permitido. Cada uno de los cuatro arreglos debe estar listo para ejecutarse como programas completos como es.

El programa más corto en bytes gana. Por ejemplo, MyProgramtiene una longitud de 9 bytes.


27
No tengo ni idea de cómo comenzar a hacer esto
Nic Hartley

1
¿Está bien si se imprime un carácter y luego se borra con retroceso?
feersum

55
Aquí hay un script de CJam para generar los cuatro códigos de una sola línea y un carácter de relleno: cjam.tryitonline.net/… No dude en incluirlo en la publicación.
Martin Ender

44
Intentaría esto en Brainfuck, pero resulta que el desafío me jodió el cerebro antes de que BF pudiera.
gato

2
@cat Creo que es imposible porque los programas 3y 6Brainfuck no se distinguirían porque solo difieren en los espacios en blanco.
Martin Ender

Respuestas:


37

GolfScript, 11 10 bytes

21;;3#9];6

Se utiliza #como carácter de relleno.

12 en punto

6
;
]
9
#
3
;
;
1
2

Pruébalo en línea!

Cómo funciona.

  • 6es empujado en la pila, lo ;descarta.

  • ] envuelve la pila en una matriz (no afecta la salida).

  • 9y 3son empujados en la pila, ;y los ;descartan.

  • Finalmente, 1y 2se empujan en la pila, y se imprimen implícitamente sin separación.

3 en punto

6
;
]
9
#
3
;
;
1
21;;3#9];6

Pruébalo en línea!

Cómo funciona

  • 6es empujado en la pila, lo ;descarta.

  • ] envuelve la pila en una matriz (no afecta la salida).

  • 9y 3son empujados en la pila, ;y los ;descartan.

  • 1y 21son empujados en la pila, los ;;descarta.

  • 3 es empujado en la pila.

  • # comienza un comentario hasta el final de la línea.

6:00

6
;
]
9
#
3
;
;
1
2
1
;
;
3
#
9
]
;
6

Pruébalo en línea!

Cómo funciona

  • 6es empujado en la pila, lo ;descarta.

  • ] envuelve la pila en una matriz (no afecta la salida).

  • 9y 3son empujados en la pila, ;y los ;descartan.

  • 1, 2y 1son empujados en la pila.

  • ;y ;descartar el último 1y 2.

  • 3y 9son empujados en la pila.

  • ]y ;envolver la pila en una matriz y descartarla, limpiando la pila.

  • 6 es empujado en la pila.

9:00

#########6
#########;
#########]
#########9
##########
#########3
#########;
#########;
#########1
6;]9#3;;12

Pruébalo en línea!

Cómo funciona

  • Todas las líneas menos la última son comentarios.

  • 6es empujado en la pila, lo ;descarta.

  • ] envuelve la pila en una matriz (no afecta la salida).

  • 9 es empujado en la pila.

  • # comienza un comentario hasta el final de la línea.


25

> <> , 20 bytes

X   n-+g+aa0g+9a2c!v

Hay no imprimibles allí, a saber:

  • Después de el Xes\x06\t
  • Después de el ces\x03

La misma parte del código fuente se ejecuta cada vez, utilizando gdos partes del código fuente para determinar qué restar de 12.

v                         Make IP move downwards
 !\x03                    Jump over the \x03
      c                   Push 12
       2a9+g              Get the char at position (2, 19), i.e. the \t for
                          3 o'clock, the \x03 for 9 o'clock, 0 otherwise
            0aa+g         Get the char at position (0, 20), i.e. first char on
                          the line after the X, \x06 for 6 o'clock
                 +        Add
                  -       Subtract from the 12
                   n      Output as number
                    \t    Unrecognised instruction - errors out

12:00 | 3 en punto | 6 en punto | 9 en punto (parece desalineado debido a la pestaña)


77
"12 votos 0 respuestas? Espere hasta que Sp demuestre que es trivial, por favor". –Helka, en el chat
Alex A.

1

ROOP , 54 bytes

OW    3#H V  1#1  H#6  WO#H V>V1#OW V>V9#OW   2#OW   1

Se utiliza <como carácter de relleno.

12 en punto | 3:00 | 6 en punto | 9:00

12 en punto

Los 1y los 2que están cerca de la parte superior caen durante 3 ciclos. Cuando llegan al Woperador, el operador coloca el número en O, que representa la salida.

El 1en esta parte

1


V

H

cayó durante 2 ciclos, el Voperador lo mueve hacia abajo y en el siguiente ciclo activa el Hoperador que finaliza el programa.

3 en punto

OTambién son objetos que se mueven y caen. Como el código ahora tiene una línea con más de un carácter, todas las demás líneas están llenas de espacios vacíos. Todos se Omueven hacia la derecha y caen, lo que hace que los Woperadores no tengan un lugar para enviar el 1y 2.

Lo único Oque no se mueve es el que está atrapado en el centro. Lo 3anterior cae durante 4 ciclos a la W.

Entonces los números que caen están llenando los 4 espacios entre el Wy 3. Cuando se llena, otro número puede pasar sobre todos ellos y llegar al Hoperador que finaliza el programa.

6:00

1


H
#
6


W
O

Muy similar a la 12, las 6caídas a la Wy la 1a la H. Esto ocurre en 2 ciclos, finalizando el programa antes de que ocurra el caso 12.

9:00

<9
<V
<>
<V
< 
<W
<O
<#
<1
<V
<>
<V
< 
<H

(Muestro una sola columna de <porque los demás no hacen nada).

La Vtoma 9y la mueve a la tubería de abajo, que desvía el objeto hacia la izquierda. La tubería <mueve el objeto hacia abajo y el siguiente hacia la derecha. El Voperador coloca el 9en el espacio de abajo y luego se envía a la salida.

El 1hace movimientos iguales y alcanza el H, que termina el programa. A medida que las tuberías mueven objetos en el mismo ciclo, todo esto toma un solo ciclo.

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.