Bonjour, PPCG! Quelle heure est-il? Esto significa qué hora es en francés, porque de eso se trata exactamente este desafío.
Decir la hora en francés (al menos formalmente) es un poco diferente de decir la hora en inglés. Decir que la hora comienza con Il est (es). Luego, pones la hora seguida de heures (en punto). (En caso de que no conozca los números franceses, aquí hay una lista: http://blogs.transparent.com/french/french-numbers-learn-how-to-count-from-1-to-1000/ ). Si es la 1 en punto, no esté seguro de esto. Para el mediodía, use midi (sin heures), y para la medianoche use minuit .
A menos que los minutos sean 00, entonces siga con la cantidad de minutos. Sin embargo, hay algunas excepciones a esto. Durante 15 minutos, quiere decir et cuarto , y durante 30 minutos quiere decir et demi . Para cualquier cosa después de 30 minutos, aumenta el número de la hora en uno, luego agrega la palabra moins y 60 - los minutos. Entonces, a las 6:40 p.m., es el mes de septiembre más reciente . 45 minutos serían moins le quart .
Finalmente, terminas con la hora del día. Por la mañana (1 AM a 12 PM), dices du matin . Para la tarde (subjetiva, pero la definiré como 1 p.m. a 5 p.m.), dices de l'apres-midi (técnicamente debería haber un acento por encima de la e, pero eh). Y para la noche (5 PM a 12 AM) dices du soir . Tenga en cuenta que para la medianoche y el mediodía ( minuit y midi ) no coloca ninguno de estos después: la hora del día está implícita en función de cuál usa.
Como probablemente ya haya comprobado, el desafío aquí es imprimir la hora local actual en francés utilizando estas reglas. Así es como debería verse la salida de muestra en diferentes momentos. (El tiempo entre paréntesis no tiene que imprimirse obviamente, solo está allí para que sepa qué horas son):
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)
Este es el código de golf, por lo que gana el código más corto. ¡Buena suerte!
EDITAR: El período es obligatorio.
fuente
Il est huit heures quarante et une du matin
(correcto) oIl est neuf heures moins dix-neuf du matin
(suena extraño)?après-midi
? ¿Podemos?Respuestas:
PHP -
521473 bytesHe agregado algunas líneas nuevas para facilitar la lectura:
El método utilizado para convertir un número a su número en francés está inspirado en esta respuesta en otro desafío de edc65 .
Aquí está la versión sin golf:
fuente
Python 3,
586547556506505502498497493 BytesMi primer intento de jugar al golf. Realmente no estoy seguro de la forma en que elijo, especialmente la
n
lista. Pero quería intentarlo.Sin golf:
fuente
'minuit#une#deux#...#vingt-neuf#et demi'.split('#')
. Puede ser incluso más corto para comprimir la cuerda de alguna manera.Javascript (ES6),
506495 bytesEditar: comprimido
a
para guardar unos pocos bytes.Explicación:
fuente
C,
860 835794 bytesAbsolutamente horrendo, pero probablemente puede hacerse aún más corto. Se agregaron muchas líneas nuevas para fines de formateo en este sitio. El código fuente real tiene nuevas líneas después de los #include y #defines, pero todo, desde char * hasta el último w (". \ N");} están todos en una línea. Lo acorté eliminando los valores de 22, ..., 29 en la matriz de cadenas, en su lugar reutilizando las cadenas para 2, ..., 9 y anteponiendo un "vingt-" cuando sea apropiado. (¡Realmente espero no haber introducido un error!)
Me gusta esto:
Versión sin golf, sin "optimizaciones de espacio" (también bastante fea):
(El material #if 0 fue solo para probar diferentes valores de tiempo a través de la línea de comandos).
fuente