Escriba un programa o función sin entrada que imprima o devuelva esta cadena de 24 horas y 12 horas :
00:00 12:00am
01:00 1:00am
02:00 2:00am
03:00 3:00am
04:00 4:00am
05:00 5:00am
06:00 6:00am
07:00 7:00am
08:00 8:00am
09:00 9:00am
10:00 10:00am
11:00 11:00am
12:00 12:00pm
13:00 1:00pm
14:00 2:00pm
15:00 3:00pm
16:00 4:00pm
17:00 5:00pm
18:00 6:00pm
19:00 7:00pm
20:00 8:00pm
21:00 9:00pm
22:00 10:00pm
23:00 11:00pm
La cadena debe salir exactamente como aparece aquí. La única excepción es que, opcionalmente, puede tener una nueva línea final.
Entonces el hash MD5 de su salida debería ser
827ae6e2dbb1df494930baedb3ee2653
si no tiene una nueva línea final y
cd4c3d18abee9bafb495f390a919a13f
si lo haces. (Su hash podría ser diferente si su sistema usa otro tipo de nueva línea, pero está bien).
El código más corto en bytes gana. Tiebreaker es la respuesta anterior.
code-golf
string
kolmogorov-complexity
arithmetic
date
Pasatiempos de Calvin
fuente
fuente
Respuestas:
Bash + coreutils,
4330seq
genera enteros 0-23, uno por línea.date
interpreta cada línea como una fecha y hora. Los enteros desnudos parecen ser suficientes para ser reconocidos como horas del díadate
.date
luego sale cada vez con el formato requerido usando los especificadores de formato de tiempo disponibles .Asume la
LANG=C
configuración regional, según esta meta respuesta .Ideona
fuente
seq 0 23
y guardar 7 bytes%H:00
→%R
guarda otro 3.%R
inserta un cero inicial, no deseado por el OP.Python 2, 66 bytes
fuente
i=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24
cambia el código de tres maneras diferentes, pero cada cambio tiene la misma longitud.C, 73 bytes
mIllIbyte encontró una forma particularmente clara de reescribir esta respuesta. ¡Gracias!
fuente
?:
?:
es el equivalente más cercano al de Perl||
. C||
es más como(a || b) ? 1 : 0
.i++,i%12?:12,"ap"[i/12])
carece de un punto de secuencia. No puedo estar seguro de cuándoi++
ocurre. Quizásfor(i=0;i<24;i++) ...i,i%12?:12,"ap"[i/12]...
i++<24
es mejor - no agrega más bytes al código fuenteMATL,
464234 bytesAnteriormente, 42 bytes,
12tEt:q2M/736330+t15XObZ"!b16XOhhkw14:X~Z)
, y 46 bytes,736330 24t:qw/+t15XO' '24TX"b16XOhhk14: 12X~Z)
. Por supuesto, el 736330 no era necesario, ¡eso era una locura!Nota: No funciona con TryItOnline, creo que hay un problema de compatibilidad entre la implementación de Matlab y Octaves
datestr
.datestr
toma la representación numérica de una fecha y la convierte en la representación de cadena de esa fecha. La hora del día es la parte fraccionaria del número, por lo que 0.0 corresponde al 0 de enero de 0000 a las 00:00:00 y 1.0 corresponde al 1 de enero de 0000 a las 00:00:00. 1/24 es 1am, 2/24 2am etc.Explicación
Para mostrar que funciona en Matlab, aquí hay una captura de pantalla
fuente
/// , 160 bytes
Pruébalo en línea!
Sin golf
fuente
:00
:00
es una cadena de 3 bytes que aparece 3 veces. 3 × 3 = 9, hacer un reemplazo en su caso cuesta 3 + 1 + 3 = 7 ya que usa un alias de 1 byte, y lo usa 3 veces, por lo que 7 + 3 = 10. 9 <10, así que no lo reemplazaré.MarioLANG,
965834 bytesPruébalo en línea
Bueno, esto era ridículamente complicado.
Técnicamente, la salida es válida, pero en la práctica el Tio para MarioLANG muestra "n" en lugar de "n" cuando imprimimos un número con ':'
si encuentro el tiempo, supongo que intentaré hacer una versión (probablemente mucho más larga) del programa que salga correctamente en Tio
Explicacion:
Nuestro principal problema aquí es el hecho de que tenemos 6 caracteres NaN (newLine, Space,:, a, p, m)
en marioLANG, para imprimir caracteres, necesitamos su valor ascii:
Entonces, lo primero que debe hacer es configurar la memoria:
con esto, el recuerdo se ve así:
transformaremos a en p durante el resto del programa
entonces hacemos la salida real:
fuente
Julia,
88716664 bytesEste es un programa completo que imprime la cadena con una nueva línea final.
Pruébalo en línea!
¡Ahorré 5 bytes gracias a Sp3000 y 2 gracias a Dennis!
fuente
Función C #, 100 bytes
Versión sin golf:
Console.Write()
¡Toma demasiados personajes!fuente
$
haciendo la guía a la cadena?JavaScript (ES2015),
147138137134133 bytesEn esta versión aproveché el método String.repeat () para deshacerme de los largos .slice () y .join () y moví el incremento dentro del bucle.
Versión previa:
Da salida con la nueva línea final. Probado en Firefox Scratchpad. No estoy seguro si pasar argumentos a IIFE está bien con la regla "no input".
Es mi primera presentación, ¡hola a todos! :)
fuente
TSQL (SQL Server 2012)
146124121Pruébalo en línea!
Primer intento, un poco más largo, pero de una sola línea:
Pruébalo en línea!
fuente
Perl 5, 58
fuente
Javascript,
122 bytes, 120 bytesEditar: pequeño error corregido + salida:
fuente
V ,
5653 bytesPruébalo en línea!
Como esto puede ser difícil de ingresar, aquí hay un hexdump reversible:
Una versión no competidores es trivialmente 2 bytes más corto si se reemplaza dos apariciones de
G$
laL
que se suponía que era la misma, pero tenía un error.Explicación:
fuente
05AB1E ,
5150484442 bytesAhorro de dos bytes gracias a carusocomputing
Código:
Pruébalo en línea!
Explicación
fuente
23Ý
en lugar de24L<
por 1 byte. ¿Y cuánto tiempo haë
existido? Me siento tan tonto sin saber sobre las declaraciones de else en 05AB1E hasta ahora.PowerShell v2 +, 76 bytes
Bucles desde
0..23
y cada bucle establece una cadena con el-f
operador. El primero{0:D2}
asegura que tengamos ceros antepuestos, el segundo{1,3}
asegura que tengamos espacios acolchados para la columna central. El{0}
uno corresponde al$_
del-f
operador, mientras que el{1}
correspondiente al pseudoternario que elige entre$_%12
o en12
función de si$_%12
es distinto de cero o no (es decir, si estamos en$_=13
, elegirá1
para la 1:00 pm). Luego concatenamos eso con otro pseudoternario que elige elam
/pm
.A diferencia de mi respuesta en la Lista de todas las horas del día a una velocidad de media hora , en realidad es más corto aquí para forzar los números con fuerza bruta, ya que obtenemos un relleno significativamente más barato. Aquí está la respuesta usando funciones de fecha, a 78 bytes
fuente
C ++,
8179 bytesEste código requiere
using namespace std
algún lugar que lo preceda.Hace un bucle en los valores 0 ... 23. Multiplica cada valor por 3600, lo convierte en una
tm
estructura y lo imprime. El formato de impresión%R
genera las 24 horas y los minutos; los formatos de impresión%l
y la%P
salida de las piezas adecuadas de 12 horas; requieren GNU .Una versión en línea que funciona está aquí .
fuente
Ruby,
6662 bytesNueva versión
fuente
24.times
Es más corto. No hay necesidad de espacios alrededorputs
.(i-1)
con~-i
de 2 bytes.JavaScript (ES6),
119116bytesfuente
Sclipting, 76 bytes
El programa asume que la entrada está vacía (
'0'
o cualquier cosa que se convierta al entero0
).El recuento de bytes supone la codificación UTF-16.
Sin golf:
Cada iteración del bucle deja muchas cadenas pequeñas en la pila; Al final, todos se concatenan automáticamente.
fuente
JavaScript,
9795 bytesEsto se basa en la respuesta de Starcorder . Gracias a George Reith por una mejora de 2 bytes.
Sin golf:
fuente
n < 10
como9 < n
y el trueque de los casos ternariosLote, 167 bytes
fuente
Kotlin , 95 bytes
Se puede mejorar con seguridad.
fuente
PHP,
vista en despiece ordenado110107 bytesAlgo sorprendido, trató de convertir el
($i < 10 ? $s : "") . "$i:00"
bit en una función, pero terminó agregando ~ 25 caracteres. No vayas allí.fuente
Rápido, 85 bytes
fuente
String(format: "%02d:00 %2d:00\(x<12 ?"a":"p")m", x, x%12 != 0 ? x%12 : 12)
Función C, 82 bytes
Uso, 94 bytes
Sin golf, 337 bytes
Funciona en Windows:
Programa C, 85 bytes
fuente
i=0
para la versión de la función. Y para la versión del programa, puede introducir el código directamentemain
, ¡no es necesario definir una función allí!i%12==0?12:i%12
->i%12?i%12:12
Foo, 163 bytes
Bastante enfoque de fuerza bruta; nada inteligente aquí (lo intenté en un par de lugares pero terminó siendo más corto para no hacerlo), solo quería darle una oportunidad a Foo. Foo imprime automáticamente cualquier cosa entre comillas.
$c10
imprime un salto de línea.(## ... )
bucles hasta que la celda actual es igual##
.Ungolfed un poco:
Pruébalo en línea
fuente
Javascript (usando una biblioteca externa - Enumerable) (107 bytes)
Enlace a la biblioteca: https://github.com/mvegh1/Enumerable/
Explicación del código: cree una matriz de enteros del 0 al 23, para cada uno escriba una línea de acuerdo con el predicado. Ese predicado verifica si el valor actual es menor que 10 y lo rellena con 0; de lo contrario, utiliza el valor actual tal como está. Luego agrega la cadena de minutos. Luego, básicamente, hace un pequeño truco para convertir a los militares en horario de am / pm, y maneja el relleno para am / pm veces menos de 10.
fuente
SmileBASIC, 73 bytes
Alguien encontró una mejor fórmula de 24-> 12 horas que la anterior, que ahorra 3 bytes y 5 bytes en otro programa
fuente
PHP,
676564 bytesEsto utiliza la codificación IBM-850.
Con la cadena sin codificar (66 bytes):
Corre así:
Ajustes
fuente
-n
lugar de-d error_reporting=30709
. No debe haber espacio antes deam
/pm
. Ahorre un byte en la versión sin codificar con un salto de línea físico.tcl, 93
manifestación
fuente