Tugas Anda adalah, diberi kisi-kisi digit ( 0-9
), menampilkan salah satu cara digit tersebut dapat dikelompokkan sedemikian rupa sehingga:
- Setiap digit adalah bagian dari satu grup
- Semua grup memiliki jumlah digit yang sama
- Semua grup dibatasi oleh satu bentuk seperti poligon (ini berarti bahwa setiap digit dalam grup berada di sebelah [kiri, kanan, atas, bawah] setidaknya satu digit lain dari grup yang sama, kecuali setiap grup memiliki 1 elemen).
- Semua grup memiliki jumlah yang sama
Kotak input akan selalu berupa kotak: Anda dapat memilih metode input apa pun yang Anda inginkan (termasuk memasok argumen ke fungsi atau metode). Selain itu, input akan menyediakan jumlah grup tempat program Anda harus mengelompokkan digit.
Input contoh:
Misalkan format input Anda adalah stringOfDigits numberOfGroups
.
Contoh input adalah:
156790809 3
yang akan diterjemahkan ke (kotak sqrt(9) * sqrt(9)
)
1 5 6
7 9 0
8 0 9
yang harus Anda bagi menjadi 3 kelompok, yang masing-masing harus memiliki 9 / 3 = 3
elemen dengan jumlah yang sama.
Keluaran: Keluaran harus berupa string angka, dengan spasi opsional dan baris baru untuk pemformatan, dengan setiap digit diikuti dengan huruf yang a-z
menunjukkan grupnya. Harus ada numberOfTotalDigits / numberOfGroups
elemen tepat di setiap kelompok. Anda tidak perlu membagi sesuatu menjadi lebih dari 26 grup.
Contoh output:
1a 5a 6b
7c 9a 0b
8c 0c 9b
Perhatikan bahwa mengganti semua a
s dengan b
s dan b
s dengan a
s sama-sama valid. Selama masing-masing kelompok dilambangkan dengan huruf yang berbeda, hasilnya valid.
Selain itu, saya berharap sebagian besar program menghasilkan sesuatu seperti ini, karena baris baru / spasi adalah opsional:
1a5a6b7c9a0b8c0c9b
Dalam hal ini, menambahkan semua angka dari kelompok a
, b
atau c
membuat 15. Selain itu, semua kelompok terikat oleh beberapa poligon.
Output tidak valid:
1a 5a 6b
7c 9a 0c
8c 0b 9b
karena kelompok-kelompok itu tidak membentuk poligon (khususnya, 6b
itu terisolasi dan 0c
juga kesepian).
1a 5a 6b
7c 9a 0b
8c 0b 9b
karena grup b
memiliki 4 elemen sedangkan c
hanya memiliki 2.
Dll
Jika tidak ada solusi yang valid, program Anda dapat melakukan apa saja (yaitu berhenti, macet, jalankan selamanya) tetapi jika program Anda mencetak None
ketika tidak ada solusi yang valid, -15
untuk skor Anda.
Jika ada lebih dari satu solusi, Anda hanya perlu mencetak satu, tetapi -20
jika program Anda mencetak semuanya dipisahkan oleh beberapa pembatas.
Ini golf kode, jadi kode terpendek (dengan bonus) menang!
6b
terisolasi, bukan0b
.156790889 3
Sepertinya itu seharusnya156790809 3
Jawaban:
Pyth , 122 - 20 - 15 = 87
Perubahan:
130 -> 120: Beralih ke input yang dipisahkan oleh baris baru.
120 -> 134: Memperbaiki bug yang melibatkan kelompok yang tidak berukuran sama dengan panjang sisi matriks.
134 -> 120: Mencetak semua solusi, termasuk yang setara dengan penggantian nama grup.
120 -> 122: Memperbaiki bug di mana hanya jalur yang akan dihasilkan, bukan semua grup hukum.
Uji coba:
Penjelasan:
sumber
JavaScript (ES6) 361 (376-15)
372(Mungkin masih bisa bermain golf sedikit lagi)
Sebagai fungsi, param pertama adalah string digit dan param kedua adalah jumlah grup.
Ini adalah pencarian rekursif yang naif, berhenti pada solusi pertama yang ditemukan (no -20 bonus).
Perlu beberapa test case lagi untuk memverifikasi kinerja pada beberapa input yang lebih besar.
Tidak Dijelaskan & Dijelaskan
Uji di konsol FireFox / FireBug
F("156790809",3)
keluaran1c5c6b7a9c0b8a0a9b
F("156790819",3)
keluaranNone
sumber