pengantar
Santa memiliki terlalu banyak nama untuk diproses, dan membutuhkan bantuan Anda! Dia membutuhkan Anda untuk menulis sebuah program atau fungsi, yang output nice
, naughty
, very naughty
atau very very naughty
. Untuk menentukan seberapa bagus atau nakal seseorang, Santa telah mengembangkan suatu algoritma:
Nice ( pembagian , matematika ):
Pertama-tama, kami mendapatkan nomor dari nama dengan menambahkan semua huruf ( spasi diabaikan ). Sebagai contoh:
Doorknob =
D = 4
o = 15
o = 15
r = 18
k = 11
n = 14
o = 15
b = 2
4 + 15 + 15 + 18 + 11 + 14 + 15 + 2 = 94
Jika jumlah pembagi sama dengan panjang nama, orang tersebut dianggap nice
. Ini berarti program Anda seharusnya menampilkan [name] has been nice
. Di sini, pembagi 94
adalah:
Divisors of 94: 1, 2, 47, 94
Ada 4
pembagi, tetapi namanya memiliki panjang 8
( termasuk spasi ). Kesimpulannya, Doorknob
belum baik. Jadi kami melanjutkan perjalanan kami:
Nakal ( urutan , matematika ):
Santa telah mengembangkan urutan baru, nomor natal . Pertama, kita akan melihat pohon natal berikut:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
Jumlah tanda bintang menentukan angka natal. Urutan berjalan seperti berikut: 5, 18, 47, 98, 177, ...
.
Dari sini, kita dapat menyimpulkan bahwa 94
itu bukan angka natal. Itu artinya Doorknob
bukan hanya nakal.
Sangat nakal ( tali ):
Untuk ini, kita perlu mengetahui apakah Doorknob
adalah string yang membesarkan tangga . Hal ini ditentukan oleh huruf dalam nama dengan A = 1
, B = 2
, C = 3
, dll .:
Pertama kita akan melihat huruf pertama, yaitu D
. Ini memiliki nilai 4
. Ini adalah titik awal kita. Surat selanjutnya adalah o
. Ini memiliki nilai 15
, yang lebih tinggi dari nilai kami sebelumnya, jadi kami akan melangkah lebih tinggi di tangga. Nilai selanjutnya juga merupakan o
. Ini sama, jadi kami tidak melakukan apa pun. Jika nilai berikutnya lebih tinggi dari nilai saat ini, kami akan melangkah lebih tinggi. Jika nilai berikutnya lebih rendah dari nilai saat ini, kami akan turun lebih rendah. Jika sama, kami akan tetap pada langkah yang sama. Ini divisualisasikan untuk Doorknob
, Martin Buttner
dan Alex A
:
O
/ \
R N B
/ \ /
O-O K T N U L X
/ / \ / \ / \ / \ / \
D M R I B T-T A E A
\ / \
A N R
\ /
E
Anda dapat melihat bahwa Doorknob
berakhir lebih tinggi dari posisi awal. Jadi Doorknob has been very naughty
. Martin Buttner
dan Alex A
tidak lebih tinggi dari titik awal. Jadi mereka berdua very very naughty
.
Uji kasus
Input: Doorknob
Output: Doorknob has been very naughty
Input: Martin Buttner
Output: Martin Buttner has been very very naughty
Input: Jakube
Output: Jakube has been nice
Input: B
Output: B has been very very naughty
Aturan
- Anda perlu menyediakan program atau fungsi yang membutuhkan input (yang terdiri dari setidaknya satu huruf).
- Input akan terdiri dari huruf besar , huruf kecil dan spasi . Spasi diabaikan selama proses, kecuali untuk panjang input.
- Ini adalah kode-golf , jadi pengiriman dengan jumlah byte paling sedikit menang!
n^3 + 2n^2 + 2
, btw.ZZZ...Z = 26 * 99 = 2574
, artinya Anda hanya perlu memeriksa angka Natal hingga dan termasukn=13
. (Info berguna untuk pegolf lain.)Santa has been very very naughty
. Tunggu apa?Santa Claus has been very naughty
. Haruskah juga mencoba Saint Nick, Saint Nicholas, St. Nick, St. Nicholas, Kris Kringle, Father Christmas, Pere Noel, dan semua alias lainnya - mungkin salah satu dari mereka akan bekerja? Meskipun mengapa seorang pria "baik" harus membutuhkan banyak alias sudah cukup mencurigakan ...Jawaban:
Pyth 86 byte
Rupanya saya sudah baik tahun ini ...
Cobalah online: Demonstrasi atau Test Suite
Penjelasan:
sumber
CJam,
109108107 byteCobalah online.
Penjelasan
Penjelasan lengkap harus menunggu hingga nanti, tetapi ini kode yang dipecah menjadi beberapa bagian:
sumber
MATL , 117 byte
Program MATL terlama saya sejauh ini :-) :-(
Menggunakan pelepasan bahasa saat ini, yang lebih awal dari tantangan ini.
Contohnya
Penjelasan
sumber
Lua,
371284 byteSaya yakin ada ruang untuk perbaikan, saya ingin memotong beberapa jika.
Sunting: 4 bulan kemudian, saya belajar banyak tentang lua dan ingin kembali ke kiriman ini, saya melakukannya dengan baik: memotong 87 byte!
Tidak disatukan
Solusi 371 byte lama
Versi tidak dikoleksi :)
sumber
Serius, 138 byte
Hex Dump:
Cobalah secara Online
Sulit untuk golf secara efektif ini karena betapa sulitnya kontrol aliran yang rumit di Serius. Kemampuan untuk membuat fungsi sarang tanpa menggunakan register akan membantu. (Saya membayangkan ini sudah bisa dipersingkat melalui penggunaan fungsi tersimpan yang bijaksana, tetapi itu akan menghasilkan kode spageti sedemikian rupa sehingga saya tidak tega mencobanya.)
Penjelasan:
sumber
Python 2, 249 byte
sumber