Kürzeste Antwort gewinnt.
Es muss sortiert sein und innerhalb von 24 Stunden. Die letzte Zeile enthält kein Komma.
Die Ausgabe sollte wie folgt sein:
'00:00',
'00:30',
'01:00',
'01:30',
'02:00',
'02:30',
'03:00',
'03:30',
'04:00',
'04:30',
'05:00',
'05:30',
'06:00',
'06:30',
'07:00',
'07:30',
'08:00',
'08:30',
'09:00',
'09:30',
'10:00',
'10:30',
'11:00',
'11:30',
'12:00',
'12:30',
'13:00',
'13:30',
'14:00',
'14:30',
'15:00',
'15:30',
'16:00',
'16:30',
'17:00',
'17:30',
'18:00',
'18:30',
'19:00',
'19:30',
'20:00',
'20:30',
'21:00',
'21:30',
'22:00',
'22:30',
'23:00',
'23:30'
code-golf
kolmogorov-complexity
sequence
Espen Schulstad
quelle
quelle
Antworten:
Pyth, 26 Bytes
Demonstration.
Wir beginnen mit dem kartesischen Produkt von
range(24)
(U24
) mit der Zeichenkette"03"
.Anschließend ordnen wir diese Werte der entsprechenden Zeichenfolge zu, die die Substitution (
m%"'%02d:%s0',"d
) bildet.Anschließend werden die resultierenden Zeichenfolgen mit dem Zeilenumbruchzeichen (
jb
) verbunden.Zum Schluss entfernen wir das nachstehende Komma (
P
) und drucken.quelle
Befunge-93, 63 Bytes
(Animation gemacht mit BefunExec )
quelle
Bash:
584746 Zeichenquelle
echo \'{00..23}:{0,3}0\'|sed 's/ /,\n/g'
mit 40 Zeichen vorgeschlagen. Nett. Vielen Dank. Aber ich nutze lieber diebash
eigene Kraft.printf "'%s',\n" {00..23}:{0,3}0
printf "'%s'\n" {00..23}:{0,3}0|sed $\!s/$/,/
ist 45 BytesCJam,
31 3029 BytesMit printf-Formatierung geht das ganz einfach:
Probieren Sie es hier online aus
quelle
Python 2,
5856 BytesWie die Antwort von sentiao, aber mit einer
for
Schleife, bei der das Komma entfernt wird. Vielen Dank an @grc für das Ausschalten von zwei Bytes.quelle
"'%02d:%s0',"[:57-i]
Java - 119 Bytes
Ich habe mit dem StringJoiner von Java 8 angefangen, aber das bedeutet, dass ich eine import-Anweisung einfügte. Deshalb habe ich beschlossen, es auf die alte Weise zu tun:
Vielleicht kann dies verbessert werden, indem die mehrfachen Vorkommen
String
undSystem
Schlüsselwörter beseitigt werden.quelle
a
, verschieben Sie dasi
Inkrement, verlieren Sie diefor
geschweiften Klammern und verschieben Sie das Komma / die neue Linie an den Anfang (wodurch Sie das Kürzere verwendensubstring
und loswerden könnenlength()
). Da Funktionen standardmäßig zulässig sind, können Sie sie durch Eliminieren von Boilerplate noch kürzer machen:void f(){String s="";for(int i=0;i<24;)s+=String.format(",\n'%02d:00',\n'%02d:30'",i,i++);System.out.print(s.substring(2));}
Noch ein bisschen mehr, wenn Sie nur den String zurückgeben, anstatt ihn zu drucken, aber das scheint gegen den Geist zu verstoßen, wenn nicht gegen den Buchstaben.String.format
zus.format
. Ihr Compiler / IDE kann sich darüber beschweren, aber es funktioniert;)Ruby,
94615651Vielen Dank an @blutorange (wieder) für seine Hilfe beim Golfen!
quelle
puts (0..47).to_a.map{|h|"'%02d:%02d'"%[h/2,h%2*30]}.join","
(nach dem letzten Komma steht ein Zeilenumbruch)puts Array.new(48){|i|"'%02d:%02d'"%[i/2,i%2*30]}.join','
.join
mit*
:)Perl,
52,50,48,45BMit Hilfe von ThisSuitIsBlackNot :)
quelle
JAVA
9594 BytesIch liebe die Tatsache, dass printf in Java existiert:
Ungolfed
EDIT Ersetzt das
','
mit44
quelle
Pyth,
3231 BytesIch habe etwas in Python gespielt, aber es stellte sich heraus, dass es genau so war wie die Antwort von Sp3000. Also habe ich beschlossen, es mit Pyth zu versuchen:
Es ist eine genaue Übersetzung der Sp3000-Antwort:
Es ist mein erster Versuch in Pyth, also klären Sie mich bitte über diese 1-Byte-Einsparung auf.
quelle
PHP, 109 Bytes
quelle
Ruby,
5451 Bytesquelle
\n
zu tatsächlichen Zeilenumbrüchen wechseln und den Abstand zwischenjoin
und entfernen"
. Beachten Sie andererseits, dass die angegebene Ausgabe führende Nullen für die Stunden enthält.puts
von$><<
(ohne Leerzeichen) und.join
mit*
. Sie haben jedoch immer noch das Problem mit der führenden Null für die Stunden.C
116,115,101,100,95,74,73, 71Ist möglicherweise in der Lage, ein paar weitere Bytes davon abzukratzen ...
quelle
T-SQL,
319307305 BytesUngolf-Version:
quelle
Pyth, 34 Bytes
Dies kann definitiv verbessert werden.
Probieren Sie es online aus: Pyth Compiler / Executor
Erläuterung:
quelle
j+\,bm%"'%02d:%s0'",/d2*3%d2 48
mit String-FormatierungPython 2, 69 Bytes
Ganz offensichtlich, aber hier ist eine Erklärung:
'0'
und'3'
im Zeichenfolgenformat ist kürzer als eine Liste%02d
macht die Polsterung fürh
m
Es ist kein Auffüllen erforderlich, da sich das abwechselnde Zeichen an einer festen Position befindet'\n'.join()
löst die Final-Line-AnforderungenIch habe keine Ahnung, ob es kürzer geht (in Python 2).von Sp3000, 61 Bytes:
print',\n'.join("'%02d:%s0'"%(h/2,h%2*3)for h in range(48))
quelle
print',\n'.join("'%02d:%s0'"%(h/2,h%2*3)for h in range(48))
m
. (Auch es ist 59 Bytes, nicht 61)Haskell, 85 Bytes
Benötigt leider
printf
ein 19 Byteimport
, daher kann ich es nicht verwenden.quelle
Julia:
656461 ZeichenJulia: 64 Zeichen
(Hier gehalten, um Julias nette
for
Syntax zu zeigen .)quelle
Fortran 96
Standardmissbrauch von Typen & Voraussetzung nur für das Final
end
zum Kompilieren. Leider ist aufgrund der impliziten Formatierung'(a)'
dieprint
Angabe in der Schlusserklärung erforderlich. Trotzdem besser als die C und C ++ Antworten;)quelle
JavaScript (ES6),
7786 + 1 ByteWusste nicht, dass es in jeder Zeile Anführungszeichen geben muss (+1 ist für
-p
Flag mit Knoten):alte Lösung:
ungolfed version (mit einem for loop statt
Array.from
):quelle
Array.from(Array(48),(d,i)=>`'${i>19?"":0}${0|i/2}:${i%2*3}0'`).join`,\n`
. Ersetzen Sie \ n durch eine aktuelle Zeile.Golflua
5251 ZeichenVerwenden von ASCII 44 =
,
und 0 speichert ein Leerzeichen ein Zeichen.Eine ungolfed Lua Version wäre
Die
if
Anweisung ist dem ternären Operator sehr ähnlicha > b ? 44 : 0
.quelle
120 Bytes
quelle
Python,
60 5864 BytesUngolfed:
Probieren Sie es hier online aus .
quelle
𝔼𝕊𝕄𝕚𝕟, 39 Zeichen / 67 Byte (nicht konkurrierend)
Try it here (Firefox only).
Kein einziges alphabetisches Zeichen in Sicht ...
quelle
PHP,
69 7062 BytesProbieren Sie es online aus
Ausgabe
'23:30'
am Ende ist etwas lahm und schließt den PHP-Kontext mit,?>
ohne ihn zu öffnen oder erneut zu öffnen. Eine sauberere Alternative (aber 65 Bytes) wäre:Probieren Sie es online aus
Danke @Dennis für die Tipps. Alternative inspiriert durch den Beitrag von @ ismael-miguel.
quelle
<?...?>'23:30'
Spart drei Bytes. Sie können auch durch\n
einen tatsächlichen Zeilenumbruch ersetzen .Schnell, 74 Bytes
Aktualisiert für Swift 2/3 ... und mit neuer String-Interpolation ...
quelle
Javascript, 89 Bytes
quelle
Array.push()
unterstützt? ;)for(i=a=[];i<24;)a.push((x=("0"+i++).slice(-2))+":00",x+":30");alert(a.join(",\n"))
"'"+
Teile auf eins zu reduzieren :for(i=a=[];i<24;)a.push((x="'"+("0"+i++).slice(-2))+":00'",x+":30'");alert(a.join(",\n"))
Python 2: 64 Bytes
quelle
print',\n'.join("'%02d:00',\n'%02d:30'"%(h,h)for h in range(24))
Ruby - 52 Bytes
quelle
.join
für*
... Es ist üblich, statt nur eine neue Antwort mit einer geringfügigen Verbesserung zu veröffentlichen, die Verbesserung des ursprünglichen Plakats vorzuschlagen. Siehe meta.codegolf.stackexchange.com/questions/75/…$><<
!Python 2,
7465 BytesWir generieren eine 2-zeilige Zeichenfolge für jede Stunde unter Verwendung der Textformatierung:
Dieser Code ist ziemlich klar, aber die clevere Indizierungs- und Ganzzahl-Mathematik in der Antwort von Sp3000 bietet eine kürzere Lösung.
quelle
"'%02u:00',\n'%02u:30'"%(h,h)
print',\n'.join("'%02u:%02u'"%(h,i)for h in range(24)for i in[0,30])