Bonjour, PPCG! Quelle heure est-il? Cela signifie quelle heure il est en français, car c'est exactement de cela qu'il s'agit.
Raconter l'heure en français (du moins formellement) est un peu différent de l'heure en anglais. Raconter l'heure commence par Il est (C'est). Ensuite, vous mettez l'heure suivie des heures (heures). (Si vous ne connaissez pas les numéros français, voici une liste: http://blogs.transparent.com/french/french-numbers-learn-how-to-count-from-1-to-1000/ ). S'il est 1h, faites une heure pour cela. Pour midi, utilisez midi (sans heures), et pour minuit, utilisez minuit .
Sauf si la minute est 00, vous la suivez ensuite avec le nombre de minutes. Il y a cependant quelques exceptions. Pendant 15 minutes, vous voulez dire et quart , et pendant 30 minutes, vous voulez dire et demi . Pour quoi que ce soit après 30 minutes, vous augmentez le nombre d'heures d'une unité , puis ajoutez le mot moins et 60 - les minutes. Donc, 18h40 est Il est sept heures moins vingt (vingt = 20). 45 minutes seraient moins le quart .
Enfin, vous le terminez avec l'heure de la journée. Pour le matin (1h à 12h), vous dites du matin . Pour l'après-midi (subjectif, mais je le définirai de 13h à 17h ), vous dites de l'apres-midi (techniquement il devrait y avoir un accent au dessus du e, mais eh). Et pour la nuit (17h à 12h) tu dis du soir . Notez que pour minuit et midi ( minuit et midi ), vous ne mettez aucun de ces éléments par la suite - l'heure de la journée est implicite en fonction de celle que vous utilisez.
Comme vous l'avez probablement déjà constaté, le défi ici est d'imprimer l'heure locale actuelle en français en utilisant ces règles. Voici à quoi devraient ressembler les résultats de sortie à des heures différentes. (L'heure entre parenthèses n'a pas besoin d'être imprimée évidemment, elle est juste là pour que vous sachiez quelle heure sont):
Il est sept heures du matin. (7:00 A.M)
Il est deux heures de l'apres-midi. (2:00 P.M)
Il est une heure du matin. (1:00 A.M)
Il est huit heures du soir. (8:00 P.M)
Il est midi. (12:00 P.M, Noon)
Il est minuit. (12:00 A.M, Midnight)
Il est cinq heures vingt du soir. (5:20 P.M)
Il est six heures et quart du matin. (6:15 A.M)
Il est neuf heures et demi du matin. (9:30 A.M)
Il est quatre heures moins dix de l'apres-midi. (3:50 P.M, not 4:50!)
Il est midi moins le quart. (11:45 A.M)
C'est le code-golf, donc le code le plus court l'emporte. Bonne chance!
EDIT: La période est obligatoire.
la source
Il est huit heures quarante et une du matin
(correct) ouIl est neuf heures moins dix-neuf du matin
(semble étrange)?après-midi
? Peut-on?Réponses:
PHP -
521473 octetsJ'ai ajouté quelques nouvelles lignes pour la lisibilité:
La méthode utilisée pour convertir un nombre en son chiffre en français s'inspire de cette réponse sur un autre défi d' edc65 .
Voici la version non golfée:
la source
Python 3,
586547556506505502498497493 octetsMa première tentative de jouer au golf. Je ne suis vraiment pas sûr de la façon dont je choisis, en particulier la
n
liste. Mais je voulais l'essayer.Non golfé:
la source
'minuit#une#deux#...#vingt-neuf#et demi'.split('#')
. Peut être encore plus court pour simplement compresser la chaîne.Javascript (ES6),
506495 octetsEdit: compressé
a
pour économiser quelques octets.Explication:
la source
C,
860 835794 octetsAbsolument horrible, mais peut probablement être encore plus court. De nombreuses nouvelles lignes ont été ajoutées à des fins de formatage sur ce site. Le code source réel a des nouvelles lignes après les #includes et #defines, mais tout ce qui va de char * au dernier w (". \ N");} sont tous sur une seule ligne. Je l'ai raccourci en supprimant les valeurs de 22, ..., 29 dans le tableau de chaînes, à la place en réutilisant les chaînes pour 2, ..., 9 et en ajoutant un "vingt-" le cas échéant. (J'espère vraiment que je n'ai pas introduit de bug!)
Comme ça:
Version non golfée, sans "optimisations d'espace" (également assez moche):
(Le truc #if 0 était juste pour tester différentes valeurs de temps via la ligne de commande).
la source