Bonjour, PPCG! Quelle heure est-il? Isso significa que horas são em francês, pois é exatamente disso que se trata esse desafio.
Dizer o tempo em francês (pelo menos formalmente) é um pouco diferente do tempo em inglês. Dizer que o tempo começa com Il est (é). Então, você coloca a hora seguida por heures (horas). (Caso você não saiba os números em francês, aqui está uma lista: http://blogs.transparent.com/french/french-numbers-learn-how-to-count-from-1-to-1000/ ). Se for 01:00, fazer heure une para isso. Ao meio-dia, use midi (sem alturas) e, à meia-noite, use minuit .
A menos que os minutos sejam 00, você o segue com o número de minutos. No entanto, existem algumas exceções. Por 15 minutos, você quer dizer et quart , e por 30 minutos, você quer dizer et demi . Depois de 30 minutos, você aumenta o número da hora em um e depois adiciona a palavra moins e 60 - os minutos. Então, 18:40 é Il est set heures moins vingt (vingt = 20). 45 minutos seriam moins le quart .
Finalmente, você termina com a hora do dia. Pela manhã (das 13h às 12h), você diz du matin . Durante a tarde (subjetivo, mas definirei como 13h às 17h), você diz l'apres-midi (tecnicamente deve haver um sotaque acima do e, mas eh). E de noite (17:00 às 00:00), você diz du soir . Observe que, para meia-noite e meio-dia ( minuit e midi ), você não coloca nada disso depois - a hora do dia está implícita com base na qual você usa.
Como você provavelmente já constatou, o desafio aqui é imprimir a hora local atual em francês usando essas regras. Aqui está a aparência da saída de amostra em momentos variados. (O tempo entre parênteses não precisa ser impresso, obviamente, é apenas para que você saiba que horas são):
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)
Isso é código-golfe, então o código mais curto vence. Boa sorte!
EDIT: O período é obrigatório.
fonte
Il est huit heures quarante et une du matin
(correto) ouIl est neuf heures moins dix-neuf du matin
(soa estranho)?après-midi
? Nós podemos?Respostas:
PHP -
521473 bytesAdicionei algumas novas linhas para facilitar a leitura:
O método usado para converter um número para seu numeral em francês é inspirado por esta resposta em outro desafio do edc65 .
Aqui está a versão não destruída:
fonte
Python 3,
586547556506505502498497493 BytesMinha primeira tentativa de jogar golfe. Eu realmente não tenho certeza sobre a maneira que escolho, especialmente a
n
lista. Mas eu queria tentar.Ungolfed:
fonte
'minuit#une#deux#...#vingt-neuf#et demi'.split('#')
. Pode ser ainda mais curto para comprimir a corda de alguma forma.Javascript (ES6),
506495 bytesEditar: compactado
a
para salvar alguns bytes.Explicação:
fonte
C,
860 835794 bytesAbsolutamente horrendo, mas provavelmente pode ser ainda mais curto. Muitas novas linhas foram adicionadas para fins de formatação neste site. O código fonte atual possui novas linhas após os #includes e #defines, mas tudo, desde char * até o último w (". \ N");} estão todos em uma linha. Reduzi-o removendo os valores de 22, ..., 29 na matriz de cadeias, reutilizando as cadeias para 2, ..., 9 e acrescentando um "vingt-" quando apropriado. (Eu realmente espero não ter introduzido um bug!)
Como isso:
Versão não destruída, sem "otimizações de espaço" (também muito feia):
(O material #if 0 era apenas para testar diferentes valores de tempo através da linha de comando).
fonte