Schreiben Sie ein Programm oder eine Funktion ohne Eingabe, die diese Zeichenfolge 24-Stunden- und 12-Stunden- Mal ausgibt oder zurückgibt :
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
Der String muss genau so ausgegeben werden , wie er hier erscheint. Die einzige Ausnahme ist, dass es optional eine einzelne nachgestellte Newline geben kann.
So sollte der MD5-Hash Ihrer Ausgabe sein
827ae6e2dbb1df494930baedb3ee2653
wenn Sie keinen abschließenden Zeilenumbruch haben und
cd4c3d18abee9bafb495f390a919a13f
wenn Sie tun. (Ihr Hash könnte anders sein, wenn Ihr System einen anderen Newline- Typ verwendet, aber das ist in Ordnung.)
Der kürzeste Code in Bytes gewinnt. Tiebreaker ist frühere Antwort.
code-golf
string
kolmogorov-complexity
arithmetic
date
Calvins Hobbys
quelle
quelle
Antworten:
Bash + Coreutils,
4330seq
Erzeugt ganze Zahlen von 0 bis 23, eine pro Zeile.date
interpretiert jede Zeile als Datum / Uhrzeit. Bloße ganze Zahlen scheinen ausreichend zu sein, um als Stunden des Tages von erkannt zu werdendate
.date
Anschließend wird jedes Mal mit der erforderlichen Formatierung unter Verwendung der verfügbaren Zeitformatspezifizierer ausgegeben .Nimmt das
LANG=C
Gebietsschema gemäß dieser Meta-Antwort an .Ideone.
quelle
seq 0 23
7 Bytes speichern%H:00
→%R
speichert weitere 3.%R
fügt eine führende Null ein, die vom OP nicht gewünscht wird.Python 2, 66 Bytes
quelle
i=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24
Ändert den Code auf drei verschiedene Arten, aber jede Änderung ist gleich lang.C 73 Bytes
mIllIbyte hat eine besonders gute Möglichkeit gefunden, diese Antwort umzuschreiben. Vielen Dank!
quelle
?:
?:
ist das Äquivalent zu Perl||
. C||
ist eher so(a || b) ? 1 : 0
.i++,i%12?:12,"ap"[i/12])
Fehlt ein Sequenzpunkt. Kann nicht sicher sein, wanni++
auftritt. Vielleichtfor(i=0;i<24;i++) ...i,i%12?:12,"ap"[i/12]...
i++<24
ist besser - fügt dem Quellcode keine weiteren Bytes hinzuMATL,
464234 BytesZuvor 42 Byte
12tEt:q2M/736330+t15XObZ"!b16XOhhkw14:X~Z)
und 46 Byte736330 24t:qw/+t15XO' '24TX"b16XOhhk14: 12X~Z)
. Natürlich wurde der 736330 nicht benötigt, das war verrückt!Hinweis: Funktioniert nicht mit TryItOnline. Ich denke, dass es ein Kompatibilitätsproblem zwischen Matlab und Octaves gibt
datestr
.datestr
Nimmt die Zahlendarstellung eines Datums und konvertiert sie in die Zeichenfolgendarstellung dieses Datums. Die Tageszeit ist der Bruchteil der Zahl, sodass 0.0 dem 0. Januar 0000 zur Zeit 00:00:00 entspricht und 1.0 dem 1. Januar 0000 um 00:00:00 entspricht. 1/24 ist 1 Uhr morgens, 2/24 2 Uhr morgens usw.Erläuterung
Um zu zeigen, dass es in Matlab funktioniert, ist hier ein Screenshot
quelle
/// 160 Bytes
Probieren Sie es online!
Ungolfed
quelle
:00
:00
es sich um eine 3-Byte-Zeichenfolge handelt, die dreimal vorkommt. 3 × 3 = 9, ein Ersatz kostet in Ihrem Fall 3 + 1 + 3 = 7, da ein 1-Byte-Alias verwendet wird und Sie ihn dreimal verwenden, also 7 + 3 = 10. 9 <10, also werde ich es nicht ersetzen.MarioLANG,
965834 BytesProbieren Sie es online aus
Nun, das war lächerlich kompliziert.
Technisch gesehen ist die Ausgabe gültig, aber in der Praxis gibt Tio for MarioLANG "n" anstelle von "n" aus, wenn wir eine Zahl mit ":" ausgeben.
Wenn ich die Zeit finde, werde ich wahrscheinlich versuchen, eine (wahrscheinlich viel längere) Version des Programms zu erstellen, die korrekt auf Tio ausgegeben wird
Erklärung:
Unser Hauptproblem hierbei ist die Tatsache, dass wir 6 NaN-Zeichen haben (newLine, Space,:, a, p, m).
in marioLANG benötigen wir ihren ASCII-Wert, um Zeichen zu drucken:
Das erste, was zu tun ist, ist den Speicher zu setzen:
damit sieht die Erinnerung so aus:
Wir werden a im weiteren Verlauf des Programms in p umwandeln
dann machen wir die eigentliche Ausgabe:
quelle
Julia,
88716664 BytesDies ist ein vollständiges Programm, das die Zeichenfolge mit einer einzelnen nachgestellten Zeile ausgibt.
Probieren Sie es online!
5 Bytes dank Sp3000 und 2 dank Dennis gespart!
quelle
C # -Funktion, 100 Bytes
Ungolfed-Version:
Console.Write()
braucht zu viele Zeichen!quelle
$
mit der Zeichenkette?JavaScript (ES2015),
147138137134133 BytesIn dieser Version habe ich die String.repeat () -Methode genutzt, um langwierige .slice () und .join () zu entfernen und die Inkrementierung innerhalb der Schleife zu verschieben.
Vorherige Version:
Gibt eine Ausgabe mit nachfolgender Newline aus. Getestet in Firefox Scratchpad. Ich bin nicht sicher, ob die Übergabe von Argumenten an IIFE mit der Regel "Keine Eingabe" in Ordnung ist.
Es ist meine erste Einreichung, also hallo an alle! :)
quelle
TSQL (SQL Server 2012)
146124121Probieren Sie es online!
Erster Versuch, etwas länger, aber ein Einzeiler:
Probieren Sie es online!
quelle
Perl 5, 58
quelle
Javascript,
122 Bytes, 120 BytesBearbeiten: Kleiner Fehler behoben + Ausgabe:
quelle
V ,
5653 BytesProbieren Sie es online!
Da dies schwer einzugeben sein kann, gibt es hier einen umkehrbaren Hexdump:
Eine nicht konkurrierende Version ist trivial 2 Bytes kürzer, wenn Sie beide Vorkommen von
G$
durch ersetzenL
, die eigentlich gleich sein sollten, aber einen Fehler aufwiesen.Erläuterung:
quelle
05AB1E ,
5150484442 BytesZwei Bytes dank Carusocomputing gespart
Code:
Probieren Sie es online!
Erläuterung
quelle
23Ý
statt24L<
für 1 Byte. Und wie lange gibt esë
schon? Ich bin so dumm, dass ich bis jetzt nichts über else-Anweisungen in 05AB1E weiß.PowerShell v2 +, 76 Byte
Schleifen von
0..23
und jede Schleife legt eine Zeichenfolge mit dem-f
Operator fest. Das erste{0:D2}
stellt sicher, dass wir Nullen vorangestellt haben, das zweite{1,3}
stellt sicher, dass wir Leerzeichen für die mittlere Spalte aufgefüllt haben. Der{0}
eine entspricht dem$_
des-f
Operators, während der{1}
andere dem Pseudoternären entspricht, der zwischen$_%12
oder12
basierend darauf auswählt, ob er$_%12
nicht Null ist oder nicht (dh, wenn wir gerade dabei sind$_=13
, wird dies1
für 13:00 Uhr gewählt). Wir verketten das dann mit einem anderen Pseudoternären, der das passendeam
/ auswähltpm
.Im Gegensatz zu meiner Antwort auf List zu jeder Tageszeit mit einer halben Stunde ist es hier tatsächlich kürzer , die Zahlen zu brachialisieren, da wir eine deutlich billigere Polsterung erhalten. Hier ist die Antwort mit Datumsfunktionen bei 78 Bytes
quelle
C ++,
8179 BytesDieser Code muss
using namespace std
irgendwo davor stehen.Es führt eine Schleife mit den Werten 0 ... 23 durch. Jeder Wert wird mit 3600 multipliziert, in eine
tm
Struktur konvertiert und gedruckt. Das Druckformat%R
gibt 24 Stunden und Minuten aus. die Druckformate%l
und die%P
Ausgabe der richtigen 12-Stunden-Teile; Sie benötigen GNU .Eine funktionierende Online-Version ist hier .
quelle
Ruby,
6662 BytesNeue Version
quelle
24.times
ist kürzer. Keine Notwendigkeit für die Räume herumputs
.(i-1)
mit~-i
2 Bytes.JavaScript (ES6),
119 bis116 Bytequelle
Sclipting, 76 Bytes
Das Programm geht davon aus, dass die Eingabe leer ist (
'0'
oder irgendetwas, das in eine Ganzzahl konvertiert wird0
).Die Byteanzahl setzt die UTF-16-Codierung voraus.
Ungolfed:
Bei jeder Iteration der Schleife verbleiben viele kleine Zeichenfolgen auf dem Stapel. am Ende werden sie alle automatisch verkettet.
quelle
JavaScript,
9795 BytesDies basiert auf der Antwort von starcorder . Vielen Dank an George Reith für eine 2-Byte-Verbesserung.
Ungolfed:
quelle
n < 10
wie9 < n
und Vertauschen der ternären FälleBatch, 167 Bytes
quelle
Kotlin , 95 Bytes
Es kann sicher verbessert werden.
quelle
PHP,
Explosionszeichnung110107 BytesEtwas überrascht, versuchte er, das
($i < 10 ? $s : "") . "$i:00"
Bit in eine Funktion umzuwandeln, fügte jedoch ~ 25 Zeichen hinzu. Nein, geh dorthin.quelle
Schnell, 85 Bytes
quelle
String(format: "%02d:00 %2d:00\(x<12 ?"a":"p")m", x, x%12 != 0 ? x%12 : 12)
C Funktion, 82 Bytes
Verwendung, 94 Byte
Ungolfed, 337 Bytes
es funktioniert unter Windows:
C Programm, 85 Bytes
quelle
i=0
die Funktionsversion initialisieren . Und für die Programmversion können Sie den Code direkt einfügenmain
- Sie müssen dort keine Funktion definieren!i%12==0?12:i%12
->i%12?i%12:12
Foo, 163 Bytes
Ziemlich brachialer Ansatz; Hier gibt es nichts Kluges (ich habe es an einigen Stellen versucht, aber es wurde kürzer, es nicht zu tun), ich wollte Foo nur eine Chance geben. Foo druckt automatisch alles in Anführungszeichen.
$c10
druckt einen Zeilenumbruch.(## ... )
Schleifen, bis die aktuelle Zelle gleich ist##
.Ein bisschen Ungolfed:
Probieren Sie es online aus
quelle
Javascript (mit externer Bibliothek - Enumerable) (107 Bytes)
Link zur Bibliothek: https://github.com/mvegh1/Enumerable/
Codeerklärung: Erstellen Sie ein Array von Ganzzahlen von 0 bis 23, und schreiben Sie für jede Zeile eine Zeile entsprechend dem Prädikat. Dieses Prädikat überprüft, ob der aktuelle Wert kleiner als 10 ist, und füllt ihn mit 0 auf, andernfalls wird der aktuelle Wert unverändert verwendet. Dann wird die Minutenzeichenfolge hinzugefügt. Im Grunde genommen ist es dann ein kleiner Trick, das Militär in AM / PM-Zeit umzuwandeln und das Auffüllen für AM / PM-Zeiten unter 10 zu handhaben.
quelle
SmileBASIC, 73 Bytes
Jemand fand eine bessere 24-> 12-Stunden-Formel als meine alte, die 3 Bytes und 5 Bytes in einem anderen Programm spart
quelle
PHP,
676564 BytesDies verwendet die IBM-850-Codierung.
Mit der unverschlüsselten Zeichenfolge (66 Bytes):
Laufen Sie wie folgt:
Optimierungen
quelle
-n
anstelle von verwenden-d error_reporting=30709
. Voram
/ sollte kein Leerzeichen seinpm
. Speichern Sie ein Byte in der unverschlüsselten Version mit einem physischen Zeilenumbruch.tcl, 93
Demo
quelle