Kita semua suka horoskop, bukan ? Tetapi saya memiliki masalah serius dalam Aplikasi Horoskop ini yang diinstal pada Ponsel Pintar saya bahwa itu hanya menampilkan ikon Zodiac Sign untuk horoskop setiap hari. Sekarang, saya ingat horoskop saya, tetapi sulit untuk mengingat horoskop orang lain yang saya minati.
Tantangan
Jadi di sini adalah tantangan Anda untuk tambahan lain untuk seri ASCII Seni Hari ini. Diberikan input tanggal dan bulan, mengeluarkan tanda Zodiac yang sesuai dalam format ASCII seperti yang ditunjukkan di bawah ini. Setiap Zodiac Sign diikuti setelah rentang nama dan tanggal ( DD MM
format) untuk zodiac sign.
Aries - 21 03 - 20 04
.-. .-.
(_ \ / _)
|
|
Taurus - 21 04 - 20 05
. .
'.___.'
.' '.
: :
: :
'.___.'
Gemini - 21 05 - 20 06
._____.
| |
| |
_|_|_
' '
Cancer - 21 06 - 20 07
.--.
/ _'.
(_) ( )
'. /
'--'
Leo - 21 07 - 20 08
.--.
( )
(_) /
(_.
Virgo - 21 08 - 20 09
_
' ':--.--.
| | |_
| | | )
| | |/
(J
Libra - 21 09 - 20 10
__
___.' '.___
____________
Scorpio - 21 10 - 20 11
_
' ':--.--.
| | |
| | |
| | | ...
'---':
Sagittarius - 21 11 - 20 12
...
.':
.'
'..'
.''.
Capricorn - 21 12 - 20 01
_
\ /_)
\ /'.
\ / :
\/ __.'
Aquarius - 21 01 - 20 02
.-"-._.-"-._.-
.-"-._.-"-._.-
Pisces - 21 02 - 20 03
'-. .-'
: :
--:--:--
: :
.-' '-.
Memasukkan
- Anda akan diberikan dua bilangan bulat sesuai dengan tanggal bulan dan bulan tahun (dalam urutan itu) dari hari ulang tahun.
- Tanggal dan bulan akan
1
diindeks seperti di kalender normal. - Anda dapat mengambil bentuk input argumen STDIN / ARGV / fungsi atau yang setara terdekat
Keluaran
- Berdasarkan rentang tanggal apa tanggal input jatuh, output ke STDOUT, Zodiac Sign yang sesuai.
- Anda dapat memiliki hingga 4 spasi tambahan di setiap baris tetapi tidak ada spasi awal yang bukan bagian dari output.
- Anda dapat menulis program lengkap atau fungsi bernama.
Ini adalah kode-golf sehingga kode terpendek dalam byte menang!
Papan peringkat
Posting pertama dari seri menghasilkan leaderboard.
Untuk memastikan jawaban Anda muncul, mulailah setiap jawaban dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
sumber
Jawaban:
CJam,
296284272265264 byteCobalah online di penerjemah CJam .
Ide
Kita mulai dengan menggabungkan kedua belas tanda menggunakan string
<SP><LF>
sebagai pemisah. Kami memilih tanda-tanda zodiak untuk tidak mengandung spasi tambahan, jadi ini memungkinkan untuk memisahkannya dengan mudah.String yang digabungkan memiliki panjang 542 byte. 236 dari byte ini adalah spasi, yang hampir setengahnya. Kami membangun array yang berisi 1 untuk setiap ruang dan 0 untuk setiap non-ruang. Dengan cara ini, pengkodean spasi hanya akan memakan biaya 1 bit.
Menghapus semua spasi dari string yang bergabung, kita dibiarkan dengan karakter
<LF>."'()-/:J\_|
. Menetapkan masing-masing nilai (misalnya, indeks dalam string ini) antara 0 dan 12Akhirnya, kita mendekode array dasar 2 dan basis 13 sebagai array byte.
Dalam program akhir, untuk input yang diberikan
DD MM
, kami menghitung(int(MM) + (int(DD) > 20)) % 12
, membalikkan proses di atas untuk mendapatkan larik semua tanda zodiak dan memilih yang tepat.Kode
sumber
CJam, 324 byte
Usaha pertamaku. Cobalah online
sumber
Python 2,
961698692687 BytesPasti masih akan bermain golf lebih jauh, hanya ingin meletakkan ide. Sekarang menggunakan kamus.
Metode lama, menggunakan interleaving.
sumber
Python 2,
565568553 byteJadi saya agak malas dan memutuskan untuk tidak bermain golf ini. Sebagai gantinya, saya memutuskan untuk membiarkan golf python itu sendiri.
Solusi di atas dibuat menggunakan kode di bawah ini:
sumber
Perl, 414
Tidak banyak yang bisa dilakukan di sini, cukup gunakan kompresi kamus:
Ujilah aku .
sumber