Jawaban terpendek menang.
Itu harus disortir, dan dalam 24 jam. Baris terakhir tidak memiliki koma.
Output harus sebagai berikut:
'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
sumber
sumber
Jawaban:
Pyth, 26 byte
Demonstrasi.
Kita mulai dengan produk cartesian dari
range(24)
(U24
) dengan string"03"
.Kemudian, kami memetakan nilai-nilai ini ke subtitusi formating string yang sesuai (
m%"'%02d:%s0',"d
).Kemudian, string yang dihasilkan digabungkan pada karakter baris baru (
jb
).Akhirnya, kami menghapus tanda koma (
P
) dan mencetak.sumber
Befunge-93, 63 byte
(Animasi dibuat dengan BefunExec )
sumber
Bash:
584746 karaktersumber
echo \'{00..23}:{0,3}0\'|sed 's/ /,\n/g'
40 karakter. Bagus. Terima kasih. Tapi saya lebih suka memanfaatkanbash
kekuatan sendiri.printf "'%s',\n" {00..23}:{0,3}0
printf "'%s'\n" {00..23}:{0,3}0|sed $\!s/$/,/
adalah 45 byteCJam,
31 3029 byteIni sangat mudah menggunakan format printf:
Cobalah online di sini
sumber
Python 2,
5856 byteSeperti jawaban sentiao tetapi menggunakan
for
lingkaran, dengan irisan untuk menghapus koma. Terima kasih kepada @grc untuk merobohkan dua byte.sumber
"'%02d:%s0',"[:57-i]
Java - 119 byte
Saya mulai dengan StringJoiner Java 8, tetapi itu berarti termasuk pernyataan impor, jadi saya memutuskan untuk melakukannya dengan cara lama:
Mungkin ini dapat ditingkatkan dengan menyingkirkan beberapa occuring
String
danSystem
kata kunci.sumber
a
, pindahkani
kenaikan, kehilanganfor
kawat gigi, dan pindahkan koma / baris baru ke awal (yang memungkinkan Anda menggunakan yang lebih pendeksubstring
dan menyingkirkanlength()
). Karena fungsi diperbolehkan secara default, Anda bisa membuatnya lebih pendek dengan menghilangkan boilerplate: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));}
Bahkan sedikit lebih banyak jika Anda membuatnya hanya mengembalikan string daripada mencetaknya, tetapi itu tampaknya bertentangan dengan semangat, jika bukan hurufnya.String.format
kes.format
. Kompiler / IDE Anda mungkin mengeluh tentang hal itu, tetapi berhasil;)Ruby,
94615651Terima kasih kepada @blutorange (lagi) untuk bantuannya dalam bermain golf!
sumber
puts (0..47).to_a.map{|h|"'%02d:%02d'"%[h/2,h%2*30]}.join","
(ada baris baru setelah koma terakhir)puts Array.new(48){|i|"'%02d:%02d'"%[i/2,i%2*30]}.join','
.join
dengan*
:)Perl,
52504845BDengan bantuan dari ThisSuitIsBlackNot :)
sumber
JAVA
9594 byteSaya suka fakta bahwa printf ada di Jawa:
Tidak disatukan
EDIT Mengganti
','
dengan44
sumber
Pyth,
3231 byteSaya golf sesuatu dengan python tetapi ternyata persis sama dengan jawaban Sp3000. Jadi saya memutuskan untuk mencoba Pyth:
Ini adalah terjemahan tepat dari jawaban Sp3000:
Ini pertama kalinya saya pergi di Pyth, jadi tolong beri tahu saya tentang penghematan 1 byte itu.
sumber
PHP, 109 byte
sumber
Ruby,
5451 bytesumber
\n
ke baris baru yang sebenarnya dan menghapus ruang antarajoin
dan"
. Di sisi lain, perhatikan bahwa output yang ditentukan memiliki nol di depan untuk jam.puts
ke$><<
(tanpa spasi) dan.join
dengan*
. Anda masih memiliki nol masalah utama selama berjam-jam.C,
116,115,101,100,95,74,73, 71Mungkin dapat mengikis beberapa byte lagi dari ini ...
sumber
T-SQL,
319307305 byteVersi tidak golf:
sumber
Pyth, 34 byte
Ini pasti bisa diperbaiki.
Cobalah online: Pyth Compiler / Executor
Penjelasan:
sumber
j+\,bm%"'%02d:%s0'",/d2*3%d2 48
dengan pemformatan stringPython 2, 69 byte
Cukup jelas, tapi inilah penjelasannya:
'0'
dan'3'
dalam format string lebih pendek dari daftar%02d
apakah padding untukh
m
tidak perlu padding karena karakter bolak-balik berada pada posisi tetap'\n'.join()
menyelesaikan persyaratan garis akhirSaya tidak tahu apakah itu bisa dilakukan lebih pendek (dengan Python 2).oleh Sp3000, 61 byte:
print',\n'.join("'%02d:%s0'"%(h/2,h%2*3)for h in range(48))
sumber
print',\n'.join("'%02d:%s0'"%(h/2,h%2*3)for h in range(48))
m
. (Juga 59 byte, bukan 61)Haskell, 85 byte
Sayangnya
printf
membutuhkan 19 byteimport
, jadi saya tidak bisa menggunakannya.sumber
Julia:
656461 karakterJulia: 64 karakter
(Tetap di sini untuk menunjukkan
for
sintaks yang bagus dari Julia .)sumber
Fortran 96
Penyalahgunaan standar jenis & persyaratan hanya untuk final
end
untuk dikompilasi. Sayangnya, karena pemformatan implisit, pernyataan'(a)'
finalprint
diperlukan. Namun, lebih baik daripada jawaban C dan C ++;)sumber
JavaScript (ES6),
7786 +1 byteTidak menyadari harus ada tanda kutip di setiap baris (+1 untuk
-p
flag dengan simpul):solusi lama:
versi ungolfed (menggunakan for for bukannya
Array.from
):sumber
Array.from(Array(48),(d,i)=>`'${i>19?"":0}${0|i/2}:${i%2*3}0'`).join`,\n`
. Ganti \ n dengan baris baru yang sebenarnya.golflua
5251 charsMenggunakan ascii 44 =
,
dan 0 a spasi menyimpan karakter.Versi Lua ungolfed akan menjadi
The
if
Pernyataan jauh seperti operator ternarya > b ? 44 : 0
.sumber
C # - 120 byte
sumber
Python,
60 5864 byteTidak Disatukan:
Cobalah online di sini .
sumber
𝔼𝕊𝕄𝕚𝕟, 39 karakter / 67 byte (tidak bersaing)
Try it here (Firefox only).
Tidak ada karakter alfabet tunggal yang terlihat ...
sumber
PHP,
69 7062 byteCobalah online
Mengeluarkan
'23:30'
pada akhirnya agak timpang, dan begitu juga menutup konteks php menggunakan?>
tanpa membuka atau membukanya kembali. Alternatif yang lebih bersih (tetapi 65 byte) adalah:Cobalah online
@Dennis terima kasih untuk tipsnya. Alternatif terinspirasi oleh kontribusi @ ismael-miguel.
sumber
<?...?>'23:30'
menghemat tiga byte. Anda juga dapat mengganti\n
dengan baris baru yang sebenarnya.Swift, 74 byte
Diperbarui untuk Swift 2/3 ... dan dengan interpolasi string baru ...
sumber
Javascript, 89 byte
sumber
Array.push()
didukung? ;)for(i=a=[];i<24;)a.push((x=("0"+i++).slice(-2))+":00",x+":30");alert(a.join(",\n"))
"'"+
bagian menjadi satu:for(i=a=[];i<24;)a.push((x="'"+("0"+i++).slice(-2))+":00'",x+":30'");alert(a.join(",\n"))
Python 2: 64 byte
sumber
print',\n'.join("'%02d:00',\n'%02d:30'"%(h,h)for h in range(24))
Ruby - 52 byte
sumber
.join
untuk*
... Ini adalah kesopanan yang umum untuk bukan hanya memposting jawaban baru dengan sedikit perbaikan, untuk menyarankan perbaikan pada poster aslinya. Lihat meta.codegolf.stackexchange.com/questions/75/…$><<
!Python 2,
7465 byteKami menghasilkan string 2 baris untuk setiap jam, menggunakan pemformatan teks:
Kode ini cukup jelas, tetapi pengindeksan cerdas dan bilangan bulat matematika dalam jawaban oleh Sp3000 memberikan solusi yang lebih pendek.
sumber
"'%02u:00',\n'%02u:30'"%(h,h)
print',\n'.join("'%02u:%02u'"%(h,i)for h in range(24)for i in[0,30])