Ini kembali ke musim sekolah! Jadi untuk pekerjaan paruh waktu, Anda membantu di perpustakaan sekolah. Masalahnya adalah, kepala perpustakaan bahkan belum pernah mendengar kata-kata "Dewey Decimal," apalagi menerapkan sistem itu. Sebagai gantinya, sistem penyortiran yang digunakan telah tumbuh "organik" karena perpustakaan telah berkembang ...
Dalam upaya menjaga kewarasan Anda, Anda telah memilih untuk menulis sebuah program untuk membantu Anda menyortir buku ketika dikembalikan, karena celakalah Anda jika Anda salah mengurutkan buku. (Pustakawan kepala SANGAT ketat.)
Input output
- Masukan akan berupa daftar judul buku (hipotetis), satu judul per baris, dari STDIN / padanan bahasa.
- Anda dapat mengasumsikan tidak lebih dari 100 input buku sekaligus (Anda hanya dapat membawa begitu banyak perpustakaan sekaligus).
- Buku dapat memiliki beberapa kata dalam judulnya, dan kata-kata ini dapat dipisahkan dengan spasi atau tanda baca lainnya (misalnya, tanda titik dua
:
, tanda hubung-
, dll.). - Untuk kemudahan perhitungan, anggap semua judul adalah UTF-8.
Output adalah judul yang sama, disortir menurut aturan di bawah ini, sekali lagi satu per baris, ke STDOUT / bahasa yang setara.
Aturan Penyortiran
Buku diurutkan secara numerik berdasarkan nilai karakter rata-rata mereka (yaitu, nilai karakter kumulatif membagi jumlah karakter dalam judul buku), dihitung dengan aturan berikut:
- Semua karakter dihitung untuk menentukan jumlah karakter dalam suatu judul.
- Huruf kecil dihitung berdasarkan posisinya dalam alfabet. (a = 1, b = 2, ... z = 26)
- Jika judul berisi huruf kapital, yang dihitung sebesar 1,5 nilai huruf kecilnya (A = 1,5, B = 3, ... Z = 39). ("Huruf kapital penting!" Kata pustakawan itu.)
- Setiap tanda baca / simbol dalam daftar ini
!@#$%^&*()-=_+[]\{}|;':",./<>?~
dihitung -1 dari nilai kumulatif sebelum rata-rata. ("Gelar muluk tidak!") - Jika judul berisi angka, ditulis dalam angka Arab , angka itu dikurangi dari nilai rata-rata sebelum disortir. Beberapa digit berurutan diperlakukan sebagai satu angka (misalnya,
42
akan mengurangi 42, tidak mengurangi 4 dan kemudian mengurangi 2). Digit individu tidak dihitung untuk nilai kumulatif (yaitu, setiap digit berkontribusi 0), tetapi DO menghitung jumlah karakter. Perhatikan bahwa ini dapat menghasilkan nilai negatif dan harus diperlakukan dengan tepat. (Rumor mengatakan, pustakawan naksir instruktur matematika selama beberapa tahun, sekarang.) - Jika judul berisi dua kata terpisah yang dimulai dengan
R
, buku mendapat skor "tak terbatas" dan dibuang ke tumpukan di sudut (yaitu, diatur secara acak di akhir daftar). (Pustakawan itu pernah dibuang oleh seseorang dengan inisial itu, atau begitulah yang Anda dengar.) - Spasi tidak dihitung untuk nilai karakter kumulatif (yaitu, mereka berkontribusi 0), tetapi DO berkontribusi pada jumlah karakter dalam judul.
- Karakter yang tidak sesuai dengan aturan di atas (misalnya, a
ÿ
) tidak dihitung untuk nilai karakter kumulatif (yaitu, mereka berkontribusi 0), tetapi DO berkontribusi pada jumlah karakter dalam judul. - Sebagai contoh, sebuah buku hipotetis
ÿÿÿÿÿ
akan memiliki "skor"(0+0+0+0+0) / 5 = 0
, tetapi sebuah buku hipotetisÿÿyÿÿ
akan memiliki "skor"(0+0+25+0+0) / 5 = 5
. - Dua buku yang kebetulan "mencetak" yang sama dapat menjadi Output dalam pilihan pesanan Anda. (Lagi pula, mereka berada di rak yang sama)
Contoh Input 1
War and Peace
Reading Rainbow: The Best Unicorn Ever
Maus
Home for a Bunny
Contoh Output 1 (dengan "skor" dalam tanda kurung untuk menunjukkan alasan - Anda tidak perlu mencetaknya)
War and Peace (8.5)
Home for a Bunny (10.125)
Maus (15.125)
Reading Rainbow: The Best Unicorn Ever (infinity)
Contoh Input 2
Matthew
Mark
Luke
John
Revelations
Contoh Output 2 (dengan "skor" dalam tanda kurung untuk menunjukkan alasan - Anda tidak perlu mencetaknya)
Mark (12.375)
John (13)
Revelations (13.545454...)
Luke (13.75)
Matthew (~13.786)
Contoh Input 3
42
9 Kings
1:8
7th
Contoh Output 3 (dengan "skor" dalam tanda kurung untuk menunjukkan alasan - Anda tidak perlu mencetaknya)
42 (-42)
1:8 (-9.3333...)
9 Kings (~0.36)
7th (2.3333...)
Pembatasan lainnya
- Ini adalah Code-Golf, karena Anda harus menjaga rahasia program dari mata pustakawan yang selalu menonton, dan semakin kecil programnya, semakin mudah disembunyikan.
- Batasan celah standar berlaku
- Jangan biarkan pustakawan menangkap Anda malas dengan menghabiskan seluruh waktu Anda di PPCG.