Najkrótsza odpowiedź wygrywa.
Trzeba to posortować i za 24 godziny. Ostatnia linia nie ma przecinka.
Dane wyjściowe powinny być następujące:
'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
źródło
źródło
Odpowiedzi:
Pyth, 26 bajtów
Demonstracja.
Zaczynamy od iloczynu kartezjańskiego produktu
range(24)
(U24
)"03"
.Następnie odwzorowujemy te wartości na odpowiedni ciąg formujący substytucję (
m%"'%02d:%s0',"d
).Następnie powstałe łańcuchy są łączone na znaku nowej linii (
jb
).Na koniec usuwamy przecinek końcowy (
P
) i drukujemy.źródło
Befunge-93, 63 bajty
(animacja wykonana przy pomocy BefunExec )
źródło
Bash:
584746 znakówźródło
echo \'{00..23}:{0,3}0\'|sed 's/ /,\n/g'
składający się z 40 znaków. Miły. Dzięki. Ale wolę korzystać zbash
własnej siły.printf "'%s',\n" {00..23}:{0,3}0
printf "'%s'\n" {00..23}:{0,3}0|sed $\!s/$/,/
ma 45 bajtówCJam,
31 3029 bajtówJest to dość proste przy użyciu formatowania printf:
Wypróbuj online tutaj
źródło
Python 2,
5856 bajtówPodobnie jak odpowiedź sentiao, ale za pomocą
for
pętli z wycinaniem w celu usunięcia przecinka. Dzięki @grc za odrzucenie dwóch bajtów.źródło
"'%02d:%s0',"[:57-i]
Java - 119 bajtów
Zacząłem od StringJoiner w Javie 8, ale oznacza to dołączenie instrukcji importu, więc postanowiłem to zrobić w stary sposób:
Być może można to poprawić, pozbywając się wielu występujących słów kluczowych
String
iSystem
słów kluczowych.źródło
a
, przesuńi
przyrost, zgubfor
nawiasy klamrowe i przenieś przecinek / nowy wiersz na początek (co pozwala ci użyć skrótusubstring
i pozbyć sięlength()
). Ponieważ funkcje są domyślnie dozwolone, możesz je jeszcze bardziej skrócić, eliminującvoid 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));}
płytę kotłową: Jeszcze bardziej, jeśli sprawisz, że po prostu zwróci ciąg zamiast go wydrukować, ale wydaje się to sprzeczne z duchem, jeśli nie literą.String.format
nas.format
. Twój kompilator / IDE może na to narzekać, ale działa;)Ruby,
94615651Dzięki @blutorange (ponownie) za pomoc w grze w golfa!
źródło
puts (0..47).to_a.map{|h|"'%02d:%02d'"%[h/2,h%2*30]}.join","
(po ostatnim przecinku jest nowy wiersz)puts Array.new(48){|i|"'%02d:%02d'"%[i/2,i%2*30]}.join','
.join
je*
:)Perl,
525048 45B.Z pomocą ThisSuitIsBlackNot :)
źródło
JAVA
9594 bajtyPodoba mi się fakt, że printf istnieje w Javie:
Bez golfa
EDIT otrzymuje
','
z44
źródło
Pyth
3231 bajtówI golfed something in python but it turned out to be exactly the same as Sp3000's answer. So I decided to give Pyth a try:
It's a exact translation of Sp3000 answer:
To moja pierwsza wizyta w Pyth, więc proszę, powiedz mi o oszczędzaniu 1 bajtu.
źródło
PHP, 109 bajtów
źródło
Rubin,
5451 bajtówźródło
\n
to actual newlines and removing the space betweenjoin
and"
. On the other hand, take note that the specified output has leading zeros for the hours.puts
to$><<
(without space) and.join
with*
. You still have the leading zero problem for the hours, though.C,
116,115,101,100,95,74,73, 71May be able to scrape a few more bytes off this...
źródło
T-SQL,
319307305 bytesUn-golfed version:
źródło
Pyth, 34 bytes
This can definitely be improved.
Try it online: Pyth Compiler/Executor
Explanation:
źródło
j+\,bm%"'%02d:%s0'",/d2*3%d2 48
with string formattingPython 2, 69 bytes
Quite obvious, but here's an explanation:
'0'
and'3'
in string format is shorter than a list%02d
does the padding forh
m
doesn't need padding as the alternating character is on a fixed position'\n'.join()
solves the final-line requirementsI have no idea if it can be done shorter (in Python 2).by Sp3000, 61 bytes :
print',\n'.join("'%02d:%s0'"%(h/2,h%2*3)for h in range(48))
źródło
print',\n'.join("'%02d:%s0'"%(h/2,h%2*3)for h in range(48))
m
. (Also it's 59 bytes, not 61)Haskell, 85 bytes
Unfortunately
printf
requires a 19 byteimport
, so I cannot use it.źródło
Julia:
656461 charactersJulia: 64 characters
(Kept here to show Julia's nice
for
syntax.)źródło
Fortran 96
Standard abuse of types & requirement only for the final
end
for compiling. Sadly, due to implicit formatting, the'(a)'
in the finalprint
statement is required. Still, better than the C and C++ answers ;)źródło
JavaScript (ES6),
7786+1 bytesDidn't realize there had to be quotes on each line (+1 is for
-p
flag with node):old solution:
ungolfed version (using a for loop instead of
Array.from
):źródło
Array.from(Array(48),(d,i)=>`'${i>19?"":0}${0|i/2}:${i%2*3}0'`).join`,\n`
. Replace \n with an actual newline.golflua
5251 charsUsing ascii 44 =
,
and 0 a space saves a character.An ungolfed Lua version would be
The
if
statement is much like the ternary operatora > b ? 44 : 0
.źródło
C# - 120 bytes
źródło
Python,
60 5864 bytesUngolfed:
Try it online here.
źródło
𝔼𝕊𝕄𝕚𝕟, 39 chars / 67 bytes (non-competing)
Try it here (Firefox only).
Not a single alphabetical character in sight...
źródło
PHP,
69 7062 bytesTry it online
Outputting
'23:30'
at the end is a bit lame, and so is closing the php context using?>
without opening or re-opening it. An cleaner alternative (but 65 bytes) would be:Try it online
Thank you @Dennis for the tips. Alternative inspired by the contribution of @ismael-miguel.
źródło
<?...?>'23:30'
saves three bytes. Also, you can replace\n
with an actual newline.Swift, 74 bytes
Updated for Swift 2/3...and with new string interpolation...
źródło
Javascript, 89 bytes
źródło
Array.push()
supports? ;)for(i=a=[];i<24;)a.push((x=("0"+i++).slice(-2))+":00",x+":30");alert(a.join(",\n"))
"'"+
pieces to one:for(i=a=[];i<24;)a.push((x="'"+("0"+i++).slice(-2))+":00'",x+":30'");alert(a.join(",\n"))
Python 2: 64 bytes
źródło
print',\n'.join("'%02d:00',\n'%02d:30'"%(h,h)for h in range(24))
Ruby - 52 bytes
źródło
.join
for*
... It's common courtesy to instead of just posting a new answer with a minor improvement, to suggest the improvement to the original poster. See meta.codegolf.stackexchange.com/questions/75/…$><<
!Python 2,
7465 bytesWe generate a 2 line string for each hour, using text formatting:
This code is fairly clear, but the clever indexing and integer maths in the answer by Sp3000 gives a shorter solution.
źródło
"'%02u:00',\n'%02u:30'"%(h,h)
print',\n'.join("'%02u:%02u'"%(h,i)for h in range(24)for i in[0,30])