Diberikan input dari daftar hari dalam seminggu, menghasilkan representasi daftar yang paling pendek.
Format input adalah string yang terdiri dari satu atau lebih dari substring dua karakter Su
(Minggu), Mo
(Senin), Tu
(dll), We
, Th
,
Fr
, dan Sa
. Input mungkin tidak harus diberikan dalam urutan.
Untuk mengkonversi input ke format output,
Urutkan input berdasarkan hari dalam seminggu, mulai dari hari Minggu (mis.
ThMoSaSuFrTuWe
->SuMoTuWeThFrSa
).Kurangi singkatan menjadi satu huruf jika tidak meninggalkan ambiguitas . Sebagai contoh,
SuMoTuWe
harus menjadiSMTW
karena S pertama tidak mungkin adalah hari Sabtu, karena itu akan membuat output tidak disortir (sama untuk T). Namun,ThFrSa
harus menjadiThFS
, karena baik Selasa dan Kamis datang sebelum Jumat dan mengurangi ituTFS
akan menciptakan ambiguitas.Jika output sekarang
MTWTF
, outputD
sebagai gantinya (yang merupakan singkatan dari "week day s"). Demikian pula,SS
harus menjadi akhirE
pekan . Akhirnya, harus menjadi untuk semua hari.SMTWTFS
A
Input dan output keduanya harus berupa string tunggal.
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Kasus uji:
In Out | In Out
-----------------------|--------------------
SuTu STu | SuTuWe STW
SuTuSa STuS | SuWeTh SWT
TuThSa TTS | TuThSu STT
Su Su | Sa Sa
WeTh WT | FrTh ThF
WeTu TW | FrTu TuF
FrWeMo MWF | SaWeSu SWS
ThTu TT | We W
ThTuMoFrWe D | SaSu E
SuMoWeTuThFr SMTWTF | ThMoSaSuFrTuWe A
sumber
Jawaban:
Retina ,
15288Bermain golf secara besar-besaran dengan bantuan @ Martin dan @ randomra! Terima kasih kalian berdua!
Cobalah online. Beberapa baris dimulai dengan
m`
tautan juru bahasa online ini. Ini agar program bekerja dengan beberapa jalur input (untuk menjalankan semua tes dalam satu kesempatan). Namun, beberapa jalur input bukan keharusan, jadi ini tidak termasuk di atas atau dalam skor saya.sumber
T`l``Su\B|\BSa|.*e.*|uTh|o|r
menghemat 3 byte lagi.JavaScript (ES7),
187178168157143 byteTes regex membantu membuat kerja cepat aturan hari khusus, dan meskipun kurang dari ideal, peta objek tidak berfungsi. Saya yakin saya bisa memeras lebih banyak dari ini.
sumber
Python 3, 321 Bytes
Uji ideone
sumber
'Su Mo Tu We Th Fr Sa'.split()
lebih pendek dari['Su','Mo','Tu','We','Th','Fr','Sa']
JavaScript (ES6), 197 byte
Penjelasan
Mengkodekan setiap hari sedikit dan menyimpan input sebagai angka
n
. Bit 0 = Sunday ... bit 6 = Sabtu. Ini memungkinkan aturan pemeriksaan kode ambiguitas menjadi jauh lebih pendek karena operasi bit-wise dan mampu membandingkan seluruh kombinasi dengan angka yang selalu kurang dari 128.Uji
Tampilkan cuplikan kode
sumber