Saya ingin mencoba bentuk kode golf baru di sini. Mirip dengan bonus, tidak semua bagian dari tantangan harus diselesaikan, tetapi setiap jawaban harus mengimplementasikan subset dengan ukuran tertentu (dan ada inti yang harus diterapkan oleh setiap jawaban). Jadi selain bermain golf, tantangan ini juga melibatkan pemilihan serangkaian fitur yang cocok bersama.
Aturan
Kingdom Builder adalah permainan papan, dimainkan di kisi hex (pointy-top). Papan terdiri dari empat kuadran (acak), yang masing-masing memiliki 10x10 sel heks (sehingga papan penuh akan menjadi 20x20). Untuk keperluan tantangan ini, setiap sel hex berisi air ( W
), gunung ( M
) kota ( T
), kastil ( C
) atau kosong ( .
). Jadi kuadran bisa terlihat seperti
. . W . . . . . . .
. M W W . . . . . .
. M . . W . . . T .
M M . W . . . . . .
. . M . W W . . . .
. . . . . W W W W W
. T . . . . . . . .
. . W . . C . . . .
. . W W . . . . M .
. . . . . . . M M .
Baris kedua akan selalu diimbangi ke kanan dari baris pertama. Pemain 1
untuk 4
dapat menempatkan hingga 40 permukiman masing-masing pada sel kosong (mengikuti beberapa aturan yang akan kita mengabaikan untuk tantangan ini). Papan yang mungkin ada di akhir permainan adalah sebagai berikut:
3 3 W . . . 4 . 4 . . 2 W . 4 . . 4 . 4
3 M W W . 1 1 . . 4 2 W . 3 C 4 4 . . 4
3 M 2 2 W 1 1 1 T 3 2 W 4 3 . 1 4 . 4 .
M M . W 2 2 . . . 2 2 W 3 . 1 1 1 . . .
. 4 M . W W 2 2 2 2 W W 3 . 1 4 . T . .
. . . . . W W W W W . 3 C 1 . . 2 2 2 2
. T 1 1 1 1 . . 2 . . 4 . . . 2 2 M M M
4 . W 4 . C 4 4 . . . . . . 2 M M M M M
. 4 W W . . . 4 M . . W . W . 2 2 2 M M
. . . . . . . M M . . W W . . . . 2 M .
. . . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 . 1
M 3 3 . . . . . . . . 4 . T 2 . 2 4 1 .
M M . C . 4 . 4 . . . . . 1 2 4 2 1 1 .
M . . 1 . 4 . . . . M M 1 2 . . 2 1 . .
. . . W 1 1 4 1 1 . . . 1 2 . . 2 W W W
. . 1 1 W 1 T . 1 1 1 1 T . . 2 W . 4 .
. 1 1 W . 3 3 . . . . . . . . 2 W 4 C 3
C 1 3 3 3 . 3 . 4 . 4 . 4 . . 2 W 1 1 M
4 3 3 4 . M 4 3 . . . . . . . 2 W . . .
. . . 4 . M M 3 . . 4 4 . 4 . 2 W W . .
Kami akan memberi label kuadran suka
1 2
3 4
Tugas Anda adalah untuk mencetak papan seperti itu. Ada satu skor inti yang selalu digunakan, dan 8 skor opsional, 3 di antaranya dipilih untuk setiap game. † Berikut ini, saya akan menggambarkan semua 9 skor dan menggunakan pengaturan di atas sebagai contoh untuk berapa banyak poin yang akan didapat setiap pemain.
† Ada 10 skor dalam permainan yang sebenarnya, tetapi saya akan meninggalkan dua karena tidak ada yang mau bermain golf.
Skor inti. Seorang pemain mendapat 3 poin untuk setiap C
astle yang ada penyelesaiannya di sebelahnya. Skor contoh: 18, 0, 15, 12.
Skor opsional.
Seorang pemain mendapat 1 poin untuk setiap baris horizontal di mana mereka memiliki setidaknya satu penyelesaian.
Skor contoh: 14, 20, 12, 16.
Untuk masing-masing pemain, temukan baris horizontal tempat sebagian besar penyelesaian mereka (pilih salah satu jika ada seri). Seorang pemain mendapat 2 poin untuk setiap penyelesaian di baris itu.
Skor contoh: 14 (baris 16), 8 (baris 4, 5 atau 6), 28 (baris 11), 10 (baris 1).
Seorang pemain mendapat 1 poin untuk setiap penyelesaian yang dibangun di sebelah
W
ater.Skor contoh: 13, 21, 10, 5.
Seorang pemain mendapat 1 poin untuk setiap penyelesaian di sebelah
M
ountain.Skor contoh: 4, 12, 8, 4.
Hitung penyelesaian setiap pemain di setiap kuadran. Per kuadran, pemain dengan jumlah permukiman terbesar mendapat masing-masing 12 poin , pemain dengan jumlah permukiman terbesar kedua mendapat masing-masing 6 poin .
Skor contoh: 18 (6 + 0 + 6 + 6), 36 (12 + 12 + 0 + 12), 12 (0 + 0 + 12 + 0), 18 (12 + 6 + 0 + 0).
Untuk setiap pemain menentukan kuadran di mana mereka memiliki jumlah pemukiman paling sedikit. Seorang pemain mendapat 3 poin untuk setiap penyelesaian di kuadran itu.
Skor contoh: 18 (Kuadran 2), 0 (Kuadran 3), 15 (Kuadran 1 atau 2), 27 (Kuadran 3).
Seorang pemain mendapat 1 poin untuk setiap kelompok pemukiman yang terhubung.
Skor contoh: 7, 5, 6, 29.
Seorang pemain mendapat 1 poin untuk setiap 2 pemukiman di kelompok pemukiman terhubung terbesar pemain.
Skor contoh: 4, 10, 8, 2.
Tantangan
Seperti dalam permainan, Anda akan memilih 3 dari skor opsional, dan skor papan yang diberikan berdasarkan skor inti dan tiga skor tersebut. Kode Anda harus menghasilkan daftar 4 skor. Namun ada satu batasan pada pilihan: Saya telah mengelompokkan skor menjadi 3 kelompok, dan Anda harus menerapkan salah satu dari masing-masing kelompok:
- Terapkan salah satu dari 1 dan 2 .
- Terapkan salah satu dari 3, 4, 5 dan 6 .
- Terapkan salah satu dari 7 dan 8 .
Anda dapat menulis sebuah program atau fungsi, mengambil input melalui STDIN, argumen baris perintah, prompt atau parameter fungsi. Anda dapat mengembalikan hasilnya atau mencetaknya ke STDOUT.
Anda dapat memilih format daftar / string 1D atau 2D yang nyaman untuk input. Anda tidak boleh menggunakan grafik dengan informasi kedekatan penuh. Berikut ini adalah bacaan yang bagus di hex grid jika Anda membutuhkan inspirasi.
Output Anda juga mungkin dalam format string atau daftar yang mudah, tidak ambigu.
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.
Asumsi Lebih Lanjut
Anda boleh berasumsi bahwa ...
- ... setiap pemain memiliki setidaknya 1 penyelesaian dan tidak ada lebih dari 40 penyelesaian dari setiap pemain.
- ... setiap kuadran berisi satu kota dan dua kastil, atau dua kota dan satu kastil.
- ... kota dan kastil cukup berjauhan, sehingga tidak ada pemukiman yang berdekatan dengan keduanya.
Uji Kasus
Masih menggunakan papan di atas, berikut adalah skor individu untuk semua pilihan kemungkinan mekanisme penilaian:
Chosen Scores Total Player Scores
1 3 7 52 46 43 62
1 3 8 49 51 45 35
1 4 7 43 37 41 61
1 4 8 40 42 43 34
1 5 7 57 61 45 75
1 5 8 54 66 47 48
1 6 7 57 25 48 84
1 6 8 54 30 50 57
2 3 7 52 34 59 56
2 3 8 49 39 61 29
2 4 7 43 25 57 55
2 4 8 40 30 59 28
2 5 7 57 49 61 69
2 5 8 54 54 63 42
2 6 7 57 13 64 78
2 6 8 54 18 66 51