Écrivez un programme ou une fonction sans entrée qui imprime ou renvoie cette chaîne de 24 heures et de 12 heures :
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 chaîne doit être sortie exactement telle qu'elle apparaît ici. La seule exception est qu'il peut éventuellement avoir une seule nouvelle ligne de fin.
Le hachage MD5 de votre sortie doit donc être
827ae6e2dbb1df494930baedb3ee2653
si vous ne disposez pas d'un saut de ligne et
cd4c3d18abee9bafb495f390a919a13f
si tu fais. (Votre hachage peut être différent si votre système utilise un autre type de nouvelle ligne mais c'est OK.)
Le code le plus court en octets gagne. Tiebreaker est une réponse antérieure.
code-golf
string
kolmogorov-complexity
arithmetic
date
Loisirs de Calvin
la source
la source
Réponses:
Bash + coreutils,
4330seq
génère des entiers 0-23, un par ligne.date
interprète chaque ligne comme un datetime. Les entiers nus semblent suffisants pour être reconnus comme des heures de la journée pardate
.date
sort ensuite à chaque fois avec la mise en forme requise en utilisant les spécificateurs de format d'heure disponibles .Suppose des
LANG=C
paramètres régionaux, selon cette méta-réponse .Ideone.
la source
seq 0 23
et économiser 7 octets%H:00
→%R
enregistre un autre 3.%R
insère un zéro non souhaité par l'OP.Python 2, 66 octets
la source
i=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24
change le code de trois manières différentes, mais chaque changement a la même longueur.C, 73 octets
mIllIbyte a trouvé un moyen particulièrement soigné de réécrire cette réponse. Merci!
la source
?:
?:
c'est en fait l'équivalent le plus proche de Perl||
, je crois. C||
est plus comme(a || b) ? 1 : 0
.i++,i%12?:12,"ap"[i/12])
manque un point de séquence. Je ne peux pas être certain quand celai++
se produit. Peutfor(i=0;i<24;i++) ...i,i%12?:12,"ap"[i/12]...
i++<24
est mieux - n'ajoute pas plus d'octets au code sourceMATL,
464234 octetsAuparavant, 42 octets,
12tEt:q2M/736330+t15XObZ"!b16XOhhkw14:X~Z)
et 46 octets736330 24t:qw/+t15XO' '24TX"b16XOhhk14: 12X~Z)
. Bien sûr, le 736330 n'était pas nécessaire, c'était fou!Remarque: ne fonctionne pas avec TryItOnline, je pense qu'il y a un problème de compatibilité entre l'implémentation de Matlab et Octaves
datestr
.datestr
prend la représentation numérique d'une date et la convertit en représentation sous forme de chaîne de cette date. L'heure du jour est la partie fractionnaire du nombre, donc 0,0 correspond au 0 janvier 0000, à l'heure 00:00:00, et 1.0 correspond au 1er janvier 0000, à 00:00:00. 1/24 est 1h du matin, 2/24 2h du matin etc.Explication
Pour montrer que cela fonctionne dans Matlab, voici une capture d'écran
la source
/// , 160 octets
Essayez-le en ligne!
Non golfé
la source
:00
remplacement est un octet de plus ... TIO:00
c'est une chaîne de 3 octets qui apparaît 3 fois. 3 × 3 = 9, faire un remplacement dans votre cas coûte 3 + 1 + 3 = 7 car il utilise un alias de 1 octet, et vous l'utilisez 3 fois, donc 7 + 3 = 10. 9 <10, donc je ne le remplacerai pas.MarioLANG,
965834 octetsEssayez-le en ligne
eh bien, c'était ridiculement compliqué.
Techniquement, la sortie est valide, mais en pratique, la sortie Tio pour MarioLANG "n" au lieu de "n" lorsque nous imprimons un nombre avec ':'
si je trouve le temps, je suppose que je vais essayer de faire une version (probablement beaucoup plus longue) du programme qui sort correctement sur Tio
Explication:
notre principal problème ici est le fait que nous avons 6 caractères NaN (newLine, Space,:, a, p, m)
dans marioLANG, pour imprimer des caractères, nous avons besoin de leur valeur ascii:
La première chose à faire est donc de régler la mémoire:
avec cela, la mémoire ressemble à:
nous transformerons a en p pendant le reste du programme
puis nous faisons la sortie réelle:
la source
Julia,
88716664 octetsIl s'agit d'un programme complet qui imprime la chaîne avec une seule nouvelle ligne de fin.
Essayez-le en ligne!
5 octets enregistrés grâce à Sp3000 et 2 grâce à Dennis!
la source
Fonction C #, 100 octets
Version non golfée:
Console.Write()
prend trop de caractères!la source
$
à la chaîne?JavaScript (ES2015),
147138137134133 octetsDans cette version, j'ai profité de la méthode String.repeat () pour se débarrasser des longs .slice () et .join () et déplacé l'incrémentation dans la boucle.
La version précédente:
Donne une sortie avec une nouvelle ligne de fin. Testé dans Firefox Scratchpad. Je ne sais pas si la transmission d'arguments à IIFE est OK avec la règle "pas d'entrée".
C'est ma première soumission, alors bonjour à tous! :)
la source
TSQL (SQLServer 2012)
146124121Essayez-le en ligne!
Première tentative, un peu plus longue, mais à une ligne:
Essayez-le en ligne!
la source
Perl 5, 58
la source
Javascript,
122 octets, 120 octetsEdit: Petit bug corrigé + sortie:
la source
V ,
5653 octetsEssayez-le en ligne!
Comme cela peut être difficile à saisir, voici un hexdump réversible:
Une version non concurrente est trivialement 2 octets plus courte si vous remplacez les deux occurrences de
G$
parL
, qui était censé être le même mais qui avait un bogue.Explication:
la source
05AB1E ,
5150484442 octetsEnregistrement de deux octets grâce à carusocomputing
Code:
Essayez-le en ligne!
Explication
la source
23Ý
au lieu de24L<
1 octet. Et depuis combien de tempsë
existe-t-il? Je me sens tellement stupide de ne pas connaître les autres déclarations dans 05AB1E jusqu'à présent.PowerShell v2 +, 76 octets
Les boucles de
0..23
et chaque boucle définissent une chaîne avec l'-f
opérateur. Le premier{0:D2}
garantit que nous avons des zéros ajoutés, le second{1,3}
garantit que nous avons des espaces rembourrés pour la colonne du milieu. L'{0}
un correspond à celui$_
de l'-f
opérateur, tandis que le{1}
correspond au pseudo-ternaire qui choisit entre$_%12
ou12
selon qu'il$_%12
est différent de zéro ou non (c'est-à-dire, si nous y sommes$_=13
, cela choisira1
pour 13 h). Nous concaténons ensuite cela avec un autre pseudo-ternaire qui choisit leam
/ appropriépm
.Contrairement à ma réponse sur List toutes les heures de la journée à un taux d'une demi-heure , il est en fait plus court ici de forcer les chiffres, car nous obtenons un rembourrage beaucoup moins cher. Voici la réponse en utilisant les fonctions de date, à 78 octets
la source
C ++,
8179 octetsCe code nécessite
using namespace std
quelque part le précédant.Il fait une boucle sur les valeurs 0 ... 23. Il multiplie chaque valeur par 3600, convertit en une
tm
structure et l'imprime. Le format d'impression%R
affiche les 24 heures et les minutes; les formats d'impression%l
et la%P
sortie des pièces de 12 heures appropriées; ils ont besoin de GNU .Une version en ligne fonctionnelle est ici .
la source
Rubis,
6662 octetsNouvelle version
la source
24.times
est plus court. Pas besoin d'espace autourputs
.(i-1)
par~-i
pour 2 octets.JavaScript (ES6),
119116 octetsla source
Sclipting, 76 octets
Le programme suppose que l'entrée est vide (ou
'0'
ou tout ce qui se convertit en entier0
).Le nombre d'octets suppose un codage UTF-16.
Non golfé:
Chaque itération de la boucle laisse beaucoup de petites chaînes sur la pile; à la fin, ils sont tous automatiquement concaténés.
la source
JavaScript,
9795 octetsCeci est basé sur la réponse de Starcorder . Merci à George Reith pour une amélioration de 2 octets.
Non golfé:
la source
n < 10
comme9 < n
et échangeant les cas ternairesLot, 167 octets
la source
Kotlin , 95 octets
Il peut être amélioré à coup sûr.
la source
PHP,
vue éclatée110107 octetsUn peu surpris, a essayé de transformer le
($i < 10 ? $s : "") . "$i:00"
bit en fonction, mais il a fini par ajouter environ 25 caractères. Non, allez-y.la source
Swift, 85 octets
la source
String(format: "%02d:00 %2d:00\(x<12 ?"a":"p")m", x, x%12 != 0 ? x%12 : 12)
Fonction C, 82 octets
Utilisation, 94 octets
Non golfé, 337 octets
cela fonctionne sous Windows:
Programme C, 85 octets
la source
i=0
la version de la fonction. Et pour la version du programme, vous pouvez bourrer le code directement dansmain
- pas besoin de définir une fonction là-bas!i%12==0?12:i%12
->i%12?i%12:12
Foo, 163 octets
Approche assez brutale; rien d'intelligent ici (j'ai essayé à quelques endroits mais cela a fini par être plus court pour ne pas le faire), je voulais juste essayer Foo. Foo imprime automatiquement tout ce qui se trouve entre guillemets.
$c10
imprime un saut de ligne.(## ... )
boucles jusqu'à ce que la cellule actuelle soit égale##
.Ungolfed un peu:
Essayez-le en ligne
la source
Javascript (en utilisant une bibliothèque externe - énumérable) (107 octets)
Lien vers la bibliothèque: https://github.com/mvegh1/Enumerable/
Explication du code: créez un tableau d'entiers de 0 à 23, pour chaque écriture une ligne en fonction du prédicat. Ce prédicat vérifie si la valeur actuelle est inférieure à 10 et le remplit avec 0, sinon utilise la valeur actuelle telle quelle. Ajoute ensuite la chaîne des minutes. Ensuite, il fait essentiellement une petite ruse pour convertir les militaires en heure am / pm, et gère le rembourrage pour am / pm fois moins de 10.
la source
SmileBASIC, 73 octets
Quelqu'un a trouvé une meilleure formule de 24 à 12 heures que l'ancienne, qui enregistre 3 octets et 5 octets dans un autre programme
la source
PHP,
676564 octetsCela utilise le codage IBM-850.
Avec la chaîne non codée (66 octets):
Courez comme ceci:
Tweaks
la source
-n
place de-d error_reporting=30709
. Il ne devrait pas y avoir d'espace avantam
/pm
. Enregistrez un octet sur la version non codée avec un saut de ligne physique.tcl, 93
démo
la source