Bonjour, PPCG! Quelle heure est-il? Das heißt, wie spät ist es auf Französisch, denn genau darum geht es bei dieser Herausforderung.
Zeit auf Französisch zu sagen (zumindest formal) ist ein bisschen anders als Zeit auf Englisch zu sagen. Die Zeitmessung beginnt mit Il est (It is). Dann stellen Sie die Stunde ein, gefolgt von heures (Uhr). (Falls Sie keine französischen Nummern kennen, finden Sie hier eine Liste: http://blogs.transparent.com/french/french-numbers-learn-how-to-count-from-1-to-1000/ ). Wenn es 1 Uhr ist, tun Sie dies bitte . Verwenden Sie für Mittag Midi (ohne Heures) und für Mitternacht Minuit .
Wenn die Minuten nicht 00 sind, folgen Sie ihr mit der Anzahl der Minuten. Es gibt jedoch einige Ausnahmen. Für 15 Minuten möchten Sie et quart sagen , und für 30 Minuten möchten Sie et demi sagen . Für alles, was nach 30 Minuten passiert, erhöhen Sie die Stundenzahl um eins, fügen dann das Wort moins und 60 - die Minuten hinzu. Also 6:40 PM is Il est sept heures moins vingt (vingt = 20). 45 Minuten wäre moins le quart .
Schließlich beenden Sie es mit der Tageszeit. Für den Morgen (1 bis 12 Uhr) sagen Sie du Matin . Für den Nachmittag (subjektiv, aber ich werde es als 13.00 bis 17.00 Uhr definieren), sagen Sie de l'apres-midi (technisch sollte es einen Akzent über dem e geben, aber eh). Und für die Nacht (5 Uhr bis 12 Uhr) sagst du du soir . Beachten Sie, dass Sie für Mitternacht und Mittag ( Minuit und Midi ) keine dieser Angaben nachträglich machen - die Tageszeit hängt davon ab, welche Sie verwenden.
Wie Sie wahrscheinlich bereits festgestellt haben, besteht die Herausforderung darin, die aktuelle Ortszeit nach diesen Regeln auf Französisch auszudrucken. So sollte die Beispielausgabe zu verschiedenen Zeiten aussehen. (Die Zeit in Klammern muss nicht unbedingt ausgedruckt werden, sie ist nur da, damit Sie wissen, wie spät es ist.):
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)
Das ist Code-Golf, also gewinnt der kürzeste Code. Viel Glück!
EDIT: Der Zeitraum ist erforderlich.
quelle
Il est huit heures quarante et une du matin
(richtig) oderIl est neuf heures moins dix-neuf du matin
(klingt seltsam)?après-midi
? Können wir?Antworten:
PHP -
521473 BytesIch habe einige Zeilen hinzugefügt, um die Lesbarkeit zu verbessern:
Die Methode, mit der eine Zahl in ihre französische Zahl umgewandelt wird, ist von dieser Antwort auf eine andere Herausforderung von edc65 inspiriert .
Hier ist die ungolfed Version:
quelle
Python 3,
586547556506505502498497493 BytesMein erster Versuch etwas zu golfen. Ich bin mir wirklich nicht sicher, wie ich mich entscheide, insbesondere was die
n
Liste angeht. Aber ich wollte es versuchen.Ungolfed:
quelle
'minuit#une#deux#...#vingt-neuf#et demi'.split('#')
. Könnte sogar noch kürzer sein, um die Saite einfach irgendwie zu komprimieren.Javascript (ES6),
506495 BytesBearbeiten: Komprimiert
a
, um ein paar Bytes zu sparen.Erläuterung:
quelle
C
860 835794 BytesAbsolut horrend, kann aber wohl noch kürzer gemacht werden. Viele neue Zeilen wurden zu Formatierungszwecken auf dieser Site hinzugefügt. Der eigentliche Quellcode enthält nach #includes und #defines Zeilenumbrüche, aber alles, beginnend mit char * bis zum letzten w (". \ N");}, befindet sich in einer Zeile. Ich habe es gekürzt, indem ich die Werte von 22, ..., 29 im String-Array entfernt habe, stattdessen die Strings für 2, ..., 9 wiederverwendet und gegebenenfalls ein "vingt-" vorangestellt habe. (Ich hoffe wirklich, dass ich keinen Bug eingeführt habe!)
So was:
Ungolfed-Version, ohne "Raumoptimierungen" (auch ziemlich hässlich):
(Das Zeug #if 0 diente nur zum Testen verschiedener Zeitwerte über die Befehlszeile).
quelle