(Ini adalah pertanyaan kode-golf pertama saya)
Ketika saya masih kecil, ayah saya dan saya menciptakan sebuah permainan di mana plat nomor yang kita lihat di mobil dapat memberikan poin tertentu berdasarkan beberapa aturan sederhana:
Jumlah X dari huruf atau angka yang sama memberikan X-1 poin, contoh:
22 = 1 point
aa = 1 point
5555 = 3 points
Angka-angka harus di sebelah satu sama lain, jadi 3353
hanya memberikan 1 poin, karena 5 memecah urutan 3's.
Urutan nomor X dalam urutan naik atau turun, minimal 3, berikan X poin, contoh:
123 = 3 points
9753 = 4 points
147 = 3 points
Sistem poin hanya berfungsi untuk angka 1-digit, jadi 1919
tidak memberikan poin, dan14710
hanya memberikan 3, (147).
Urutan dapat digabungkan untuk menghasilkan lebih banyak poin, contoh:
1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)
Namun Anda tidak diizinkan memotong urutan yang lebih besar menjadi 2 urutan yang lebih kecil untuk poin tambahan: 1234 = 123, 234 (6 points)
tidak diizinkan.
Tugas Anda adalah, diberi urutan, untuk menentukan jumlah poin yang diberikan oleh plat nomor.
Di Denmark, pelat lisensi disusun seperti ini: CC II III, di mana C adalah karakter dan saya adalah bilangan bulat, dan dengan demikian input contoh saya akan mencerminkan struktur ini. Jika Anda mau, Anda dapat membuat urutan sesuai dengan struktur Anda sendiri, atau, jika Anda merasa benar-benar suka berpetualang, biarkan program menganalisis struktur plat nomor dan dengan demikian membuatnya bekerja pada semua jenis plat nomor di seluruh dunia. Nyatakan secara eksplisit struktur yang Anda putuskan untuk digunakan dalam jawaban Anda.
Anda dapat mengambil input dengan cara apa pun yang Anda suka, baik string atau array tampaknya paling masuk akal bagi saya.
Masukan tes | keluaran:
AA 11 111 | 5
AB 15 436 | 3
OJ 82 645 | 0
UI 65 456 | 6
HH 45 670 | 5
YH 00 244 | 5
AJ 00 754 | 1
Karena sifat memilih struktur Anda sendiri, atau bahkan mencakup semua struktur, saya tidak perlu melihat bagaimana pemenang dapat ditentukan secara eksplisit. Saya kira pemenang akan menjadi byte terpendek pada struktur yang telah diputuskan. (Dan jangan mengambil input seperti CICIC, hanya agar mudah bagi Anda sendiri)
EDIT:
Sehubungan dengan komentar yang diajukan, saya memiliki beberapa informasi tambahan untuk dibagikan: Urutan angka naik atau turun mengacu pada urutan aritmatika, jadi X +/- a * 0, X +/- a * 1, ... X +/- a * n dll. Jadi 3-5-7 misalnya adalah 3 + 2 * 0, 3 + 2 * 1, 3 + 2 * 2. Namun, urutannya tidak harus dimulai dari 0 atau berakhir pada 0.
LEBIH EDIT:
Anda dapat memberikan input dengan cara apa pun yang Anda inginkan, Anda tidak perlu memasukkan spasi, tanda hubung atau hal lain yang membuat plat nomor lebih mudah dibaca. Jika Anda dapat menyimpan byte dengan hanya menerima huruf kapital atau sesuatu seperti itu, Anda dapat melakukannya juga. Satu-satunya persyaratan adalah bahwa program Anda dapat mengambil string / array / apa pun yang mengandung karakter dan angka, dan menampilkan jumlah poin yang benar sesuai dengan aturan yang dinyatakan.
XX 87 654
. Saya datang dengan sesuatu yang benar untuk semua kasus pengujian Anda tetapi entah bagaimana salah untuk yang satu ini .. Bekerja untuk memperbaikinya.
CCIIIII
, tidak ada spasi), atau masalah ini tidak memiliki kriteria menang objektif, yang kami butuhkan di sini. Seperti apa adanya, “(Dan jangan mengambil input seperti CICIC, hanya untuk membuatnya mudah bagi diri Anda sendiri)” sangat subyektif. Apa itu struktur yang bisa dan tidak bisa diterima?
IA99999
(berisi urutan poin kode yang menurun, tetapi bukan angka).