Il tuo compito è, data una griglia quadrata di cifre ( 0-9), generare uno dei modi in cui le cifre possono essere raggruppate in modo tale che:
- Ogni cifra fa parte esattamente di un gruppo
- Tutti i gruppi hanno lo stesso numero di cifre
- Tutti i gruppi sono delimitati da una forma simile a un poligono (ciò significa che ogni cifra nel gruppo è accanto a [sinistra, destra, su, giù] almeno un'altra cifra dello stesso gruppo, a meno che ogni gruppo abbia 1 elemento).
- Tutti i gruppi hanno la stessa somma
La griglia di input sarà sempre un quadrato: puoi scegliere qualsiasi metodo di input che desideri (incluso fornire argomenti a una funzione o metodo). Inoltre, l'input fornirà il numero di gruppi in cui il programma dovrebbe raggruppare le cifre.
Esempio di input:
Supponiamo che il tuo formato di input sia stringOfDigits numberOfGroups.
Un input di esempio potrebbe essere:
156790809 3
che si tradurrebbe in (una griglia di sqrt(9) * sqrt(9))
1 5 6
7 9 0
8 0 9
che dovresti dividere in 3 gruppi, ognuno dei quali dovrebbe avere 9 / 3 = 3elementi con la stessa somma.
Output: l'output dovrebbe essere la stringa di cifre, con spazi opzionali e nuove righe per la formattazione, con ogni cifra seguita da una lettera che a-zindica il suo gruppo. Dovrebbero esserci esattamente numberOfTotalDigits / numberOfGroupselementi in ciascun gruppo. Non dovrai mai dividere qualcosa in più di 26 gruppi.
Esempio di output:
1a 5a 6b
7c 9a 0b
8c 0c 9b
Nota che la sostituzione di tutti as con bs e bs con as è ugualmente valido. Finché ogni gruppo è indicato da una lettera distinta, l'output è valido.
Inoltre, mi aspetto che la maggior parte dei programmi produca qualcosa di simile a questo, perché le nuove righe / spazi sono opzionali:
1a5a6b7c9a0b8c0c9b
In questo caso, aggiungendo tutte le cifre del gruppo a, bo ccrea 15. Inoltre, tutti i gruppi sono associati da un poligono.
Uscite non valide:
1a 5a 6b
7c 9a 0c
8c 0b 9b
perché i gruppi non formano poligoni (in particolare, 6bè isolato ed 0cè anche solo).
1a 5a 6b
7c 9a 0b
8c 0b 9b
perché il gruppo bha 4 elementi mentre cne ha solo 2.
Eccetera.
Se non esiste una soluzione valida, il tuo programma potrebbe fare qualsiasi cosa (es. Arresto, arresto anomalo, esecuzione per sempre) ma se il tuo programma stampa Nonequando non esiste una soluzione valida, -15al tuo punteggio.
Se esiste più di una soluzione, devi solo stamparne una, ma -20se il tuo programma le stampa tutte separate da un delimitatore.
Questo è il codice golf, quindi vince il codice più breve (con bonus)!
156790889 3sembra che dovrebbe essere156790809 3
6bè isolato, non il0b.