Pengantar:
Di belahan bumi utara (yaitu Eropa, Amerika Utara, dll.), Musim dibagi seperti ini:
- Musim semi: Maret, April, Mei
- Musim panas: Juni, Juli, Agustus
- Musim Gugur: September, Oktober, November
- Musim Dingin: Desember , Januari Februari
Di belahan bumi selatan namun (yaitu Australia, Amerika Selatan, dll), musim dibagi seperti ini:
- Spring: September, Oktober, November
- Musim Panas: Desember, Januari, Februari
- Autumn: Maret, April, Mei
- Musim Dingin: Juni Juli Agustus
Perbedaan ini disebabkan oleh posisi matahari mengenai ekuator, di mana belahan utara dan selatan memiliki musim yang berlawanan.
Memasukkan:
Dalam tantangan ini, kami akan mengambil dua input:
- Satu untuk bulan (
1 <= m <= 12
atau0 <= m <= 11
) (contoh dan kasus uji semuanya diindeks 1). - Dan satu untuk lima 'posisi-kelompok' di garis lintang Bumi (
-2 <= p <= 2
), di mana-2
Antartika,-1
adalah belahan bumi selatan tidak termasuk Antartika,0
adalah daerah tropis di dekat khatulistiwa,1
adalah belahan bumi utara tidak termasuk Arktik, dan2
merupakan kutub Utara.
Meskipun Arktik, Antartika dan Tropis tentu saja masih memiliki musim, untuk tantangan ini kita akan mengatakan Arktik dan Antartika dalam keadaan konstanWinter
, dan Tropis dalam keadaan konstanSummer
.
Di sini representasi visual dari lima kelompok ini, di mana -2
Lingkaran Antartika; -1
antara Tropic of Capricorn dan Lingkaran Antartika; 0
antara Tropic of Capricorn dan Tropic of Cancer; 1
antara Lingkaran Arktik dan Tropic of Cancer; dan -2
Lingkaran Arktik.
Sumber: COSMOS - Ensiklopedia Astronomi SAO
Keluaran:
Salah satu Spring
, Summer
, Autumn
, atau Winter
, berikut aturan-aturan ini:
- Apakah posisi input
2
atau-2
(Arktik atau Antartika), selalu keluaranWinter
. - Apakah posisi input
0
(Tropics), selalu keluaranSummer
. - Apakah input posisi
1
(belahan bumi utara), output salah satu dari empat musim berdasarkan input bulan:Spring
(m = [3,5]
);Summer
(m = [6,8]
);Autumn
(m = [9,11]
);Winter
(m = 12 or m = [1,2]
). - Apakah input posisi
-1
(belahan bumi selatan), output salah satu dari empat musim berdasarkan input bulan:Spring
(m = [9,11]
);Summer
(m = 12 or m = [1,2]
);Autumn
(m = [3,5]
);Winter
(m = [6,8]
).
Aturan tantangan:
- Output apapun empat nilai yang berbeda pilihan Anda menunjukkan
Spring
,Summer
,Autumn
, atauWinter
(sebutkan apa yang telah Anda digunakan dalam jawaban Anda).
-15 byte bonus jika Anda keluaranSpring
,Summer
,Autumn
, atauWinter
sebagai teks (case-sensitive, sehingga dapat sepenuhnya huruf kecil atau sepenuhnya huruf besar juga, bukan judul-kasus digunakan). - Input bulan dapat dalam format apa pun yang masuk akal. Dapat berupa bilangan bulat 0-indexed atau 1-indexed, Date-object, Month-String, dll.
- Masukan posisi akan selalu menjadi salah satu dari ini mungkin lima input
-2
,-1
,0
,1
,2
.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
Position 1-indexed Month Output
-2 8 (August) Winter
-2 12 (December) Winter
-1 3 (March) Autumn
-1 5 (May) Autumn
-1 8 (August) Winter
-1 12 (December) Summer
0 1 (January) Summer
0 7 (July) Summer
1 1 (January) Winter
1 4 (April) Spring
1 7 (July) Summer
1 12 (December) Winter
2 2 (February) Winter
2 9 (September) Winter
Jawaban:
Ruby ,
33 2725 byteCobalah online!
Nilai pengembalian adalah:
0 -> musim dingin
1 -> pegas
2 -> musim panas
3 -> musim gugur
sumber
Python 2 , 29 byte
Cobalah online!
Port pendekatan Ruby GB , yang ternyata beberapa byte lebih pendek dari milik saya:
32 byte
Cobalah online!
Fungsi anonim yang mengembalikan musim sebagai angka 0 hingga 3, di mana mereka mewakili Musim Panas, Musim Gugur, Musim Dingin dan Musim Semi dalam urutan itu.
Adapun untuk mencetak nama musim yang sebenarnya:
63 - 15 = 48 byte
Cobalah online!
Ada string gabungan jika ada yang menginginkannya.
sumber
C (gcc) ,
7875 (-15 bonus) = 60 byteMenggunakan bulan berbasis 1.
Sunting: Operator matematika ulang dan dikurangi.
Cobalah online!
sumber
(++a+m/3)%4
→++a+m/3&3
. Juga,a*a
aneh kapan tepatnyaa
, jadi memeriksaa&1
harus baik-baik saja, bukan?05AB1E , 26 - 15 = 11 byte
Menggunakan pendekatan yang ditemukan oleh GB
Cobalah online! atau sebagai Test suite
sumber