Diberi angka 1≤n≤365, menampilkan hari ke-n tahun dalam format "Hari-angka Bulan". Misalnya, mengingat 1, Anda harus menampilkan "1 Januari", tanpa "dari".
Kalender Gregorian akan digunakan dan program seharusnya tidak menghitung tahun kabisat, jadi program Anda seharusnya tidak menghasilkan "29 Februari" dalam keadaan apa pun. Metode apa pun dapat digunakan, asalkan mengikuti format "Bulan-angka Bulan" yang disebutkan sebelumnya. Program Anda juga harus mengeluarkan tata cara dengan benar, artinya harus selalu menampilkan 1, 2, 3, masing-masing harus 1, 2 atau 3 menjadi angka hari untuk setiap input. Ruang terkemuka atau lekukan lain diizinkan.
Ini kode golf, jadi solusi terpendek berdasarkan karakter menang.
Kasus uji:
1 gives 1st January
2 gives 2nd January
3 gives 3rd January
365 gives 31st December
60 gives 1st March
11 gives 11th January
11
(11 th Januari) dan21
(21 st Januari) untuk uji kasus.123=
adalah bagian dari output yang diperlukan. Atau cukup edit kotak uji untuk membaca sesuatu seperti:365
beri31st December
Jawaban:
PHP ,
38403028 byteCobalah online!
Jalankan dengan
php -nF
input dariSTDIN
. Contoh (skrip di atas bernamay.php
):Penjelasan
Bangun cap waktu zaman untuk hari yang diinginkan pada tahun 1970 (mudah bukan tahun kabisat) dengan mengalikan
day number * number of seconds per day
(86400). Namun, ini akan menghasilkan satu hari lebih tinggi sehingga gandakan dengannumber of seconds in a day - 1
(86399) yang untuk rentang nomor input (1≤n≤365) akan dihasilkan dengan cap waktu akhir setiap hari yang benar. Kemudian gunakan saja format tanggal bawaan PHP untuk output.sumber
-n
perlu?Jelly ,
79 7877 byte-1 memperbaiki bug :) (tidak harus melakukan pra-transposisi untuk menemukan indeks, harus melakukan post-reverse, tetapi kemudian kita dapat mengekor alih-alih kepala)
-1 menggunakan refleksi (
⁽©ṅB+30_2¦2
->⁽0ṗb4+28m0
)Program lengkap yang mencetak hasilnya
Cobalah online!
Bagaimana?
akan memperbarui ini nanti ...
sumber
"thstndrd"
menjadi bagian-bagian dari ukuran 2 (.•oθ2(w•2ô
), jadi terima kasih. :)C # (Visual C # Interactive Compiler) ,
11511310998 byteTerima kasih kepada @someone untuk menghemat 9 byte
Cobalah online!
sumber
.code.tio(2,22): error CS0165: Use of unassigned local variable 'p'
Tampaknya hal struct tidak berfungsi.var g=new DateTime().AddDays(n-1)
berfungsiPython 3.8 (pra-rilis) , 112 byte
Cobalah online!
Cukup aneh, saya tidak harus tanda kurung
d:=(t:=gmtime(~-x*86400)
, mungkin karena penerjemah hanya memeriksa jika ada()
karakter di sekitar ekspresi penugasan dan bukan bahwa ekspresi itu sendiri di dalam tanda kurung.-2 Berkat gwaugh .
-5 Terima kasih kepada xnor .
sumber
Perl 6 ,
166161 byteCobalah online!
Hardcode semua nama bulan, yang menghabiskan sebagian besar ruang. Man, Perl 6 benar-benar membutuhkan formatter tanggal yang tepat.
sumber
Retas,
1155939 byteKarena @gwaugh mendapatkan solusi yang sama dengan saya ketika saya bermain golf, saya memposting ini di Hack :).
sumber
mktime()
panggilan Anda jika tidak maka akan mengembalikan output yang salah jika dijalankan pada tahun kabisat. (harus melakukan jawaban saya).JavaScript (ES6),
117113 byteDisimpan 4 byte berkat @tsh
Cobalah online!
Berkomentar
Tanpa tanggal bawaan, 188 byte
Cobalah online!
sumber
0
akan berfungsi sebagai penggunaan"en"
. Dan mengubah ketoLocaleString
akan menghemat 4 byte. 110 bytestoLocaleString
menggunakan pengaturan default sistem ketika melewati string yang tidak dikenal atau nilai numerik. Jadi, bisa apa saja. Parameter ini pada dasarnya tidak efektif pada instance TIO, karena hanya bahasa Inggris saja yang diinstal .Smalltalk, 126 byte
sumber
11th,12th,13th
? Jika saya membaca dengan benar Anda integer-bagi hari dengan 10, tetapi itu berarti itu akan menghasilkan11st,12nd,13rd
, kecuali sesuatu yang lain dalam kode memperbaiki ini sementara saya tidak menyadarinya.C # (Visual C # Interactive Compiler) ,
141139133124122 byteTerima kasih kepada Arnauld untuk metode yang lebih cepat untuk menghapus 11,12,13 penghematan 4 byte
Cobalah online!
sumber
a=>{var d=s.AddDays(a-1);int x=d.Day,m=x%30%20;return x+"thstndrd"[(m<4?m*2:0)..2]+$" {d:MMMM}";};DateTime s
Kompiler interaktif sepertinya tidak mendukung perubahan level bahasanya menjadi "pratinjau" saat ini.DataTime s
R ,
158134 byte-24 byte @Nick Kennedy untuk bermain golf 'st', 'nd', 'rd', & 'th'. Terima kasih!
Cobalah online!
sumber
`if`
lebih baik. Terima kasih.MySQL,
474542 byte1901 dapat diganti dengan tahun apa pun yang bukan tahun kabisat.
Sunting: menyimpan dua byte dengan menghapus spasi dan tiga byte lainnya dengan mengubah tahun menjadi 1, berkat @Embodyment of Ignorance .
sumber
1901, n
dan string?05AB1E ,
81797876757473717069 byte-9 byte terima kasih kepada @Grimy .
-1 byte berkat
standard the
trik @ JonathanAllan untukth,st,nd,rd
, yang ia gunakan dalam jawabannya Jelly .Cobalah secara online atau verifikasi semua kemungkinan kasus pengujian .
Penjelasan:
Lihat tip tambang 05AB1E ini untuk memahami alasannya:
”……‚應…ä†ï€¿…Ë…ê†Ä…æ…Ì…Í”
adalah"December January February March April May June July August September October November"
…thŠØ
adalah"th standards"
•ΘÏF•
adalah5254545
sumber
•EË7Óæ•S₂+
, tapi golf -3 Anda tidak berhasil sayangnya. Pengindeksan secara otomatis membungkus di 05AB1E, jadi itu5st,6nd,7rd,25st,26nd,27rd,29st
akan salah. PS: kalau bisa berhasil,<Ā
bisa≠
untuk -1 tambahan. :)Á
).•C.ñÒā•
hingga•ΘÏF•º
, digit tambahan tidak masalah)bash,
8280 byte-2 byte terima kasih hanya untuk @ ASCII
TIO
bash + tanggal GNU, 77 byte
sumber
Shell + coreutils,
11290 byteCobalah online! Tautan termasuk kasus uji. Sunting: Disimpan 22 byte berkat @NahuelFouilleul. Penjelasan:
Hitung jumlah hari setelah hari pertama sebelum tahun non-kabisat. (Sayangnya Anda tidak dapat melakukan perhitungan tanggal relatif
@-1
.)Keluarkan hari bulan (tanpa memimpin nol)
th
,, dan nama bulan penuh.Memperbaiki
1st
,2nd
,3rd
,21st
,22nd
,23rd
dan31st
.Kembalikan
11th
ke13th
.sumber
s
didays
dapat dihapus, dan19
di1969
Jelly ,
11511410197 byteCobalah online!
Panjang dengan standar Jelly, tetapi dilakukan dari prinsip pertama.
Terima kasih kepada @JonathanAllan untuk menghemat 13 byte melalui pemahaman yang lebih baik tentang kompresi string.
sumber
“£ṢtẒ⁽ẹ½MḊxɲȧėAṅ ɓaṾ¥D¹ṀẏD8÷ṬØ»Ḳ¤
akan menghemat 13 (Compress.dictionary mencari ruang terkemuka dan memiliki penanganan khusus untuk itu).Google Sheets,
11810386 byteSaya tidak dapat mengedit komentar saya jadi, inilah versi kode Google Sheets yang berfungsi.
Cobalah secara Online!
sumber
Merah , 124 byte
Cobalah online!
Menambahkan
n
- 1 hari menjadi 1-1-1 (1-Jan-2001) untuk membentuk tanggal, daripada menggunakan metode Arnauld untuk mengindeks ke akhiran bulan. Sayang sekali Red adalah 1-diindeks, ini membutuhkan tambahan tweaking. Hal yang baik adalah bahwa Red tahu nama-nama bulan ini :)sumber
APL (NARS), 235 karakter, 470 byte
13561787 adalah angka yang ada di basis 4 dapat dijumlahkan ke (12⍴28) untuk mendapatkan panjang setiap bulan ... tes:
sumber
C (gcc) ,
174155 byteCobalah online!
sumber
Python 3 , 95 Bytes
Mengukur datanya: P
from datetime import *;f=lambda s:(datetime(2019,1,1)+timedelta(days=s-1)).strftime("%d of %B")
Cobalah online!
sumber
of
juga tidak perlu