Files

78 lines
57 KiB
Markdown
Raw Permalink Normal View History

---
id: 5900f5141000cf542c510026
title: 'Problema 424: Kakuro'
challengeType: 5
forumTopicId: 302094
dashedName: problem-424-kakuro
---
# --description--
<img class="img-responsive center-block" alt="esempio di kakuro" src="https://cdn.freecodecamp.org/curriculum/project-euler/kakuro.gif" style="background-color: white; padding: 10px;" />
Quanto sopra è un esempio di un puzzle kakuro criptico (noto anche come somme incrociate, o anche croce di somme), con la sua soluzione finale sulla destra. (Le regole comuni dei puzzle di kakuro possono essere trovate facilmente su numerosi siti internet. Altre informazioni correlate possono essere trovate attualmente su krazydad.com il cui autore ha fornito i dati del puzzle per questa sfida.)
L'array `testPuzzles` contiene la descrizione di 200 tali puzzle, un mix di tipi 5x5 e 6x6. Il primo rompicapo nel file è l'esempio precedente che viene codificato come stringa come segue:
`6,X,X,(vCC),(vI),X,X,X,(hH),B,O,(vCA),(vJE),X,(hFE,vD),O,O,O,O,(hA),O,I,(hJC,vB),O,O,(hJC),H,O,O,O,X,X,X,(hJE),O,O,X`
Il primo carattere è una cifra numerica che indica la dimensione della griglia di informazione. Sarebbe un 6 (per un puzzle 5x5 kakuro) o un 7 (per un puzzle 6x6) seguito da una virgola (,). La riga superiore e la colonna sinistra extra sono necessarie per inserire le informazioni.
Il contenuto di ogni cella viene quindi descritto e seguito da una virgola, andando da sinistra a destra e cominciando con la riga in alto.
`X` = cella grigia, non è necessario riempirla con una cifra.
`O` (lettera maiuscola)= cella vuota bianca da riempire con una cifra.
`A` = O una qualsiasi delle lettere maiuscole da A a J da sostituire con la sua cifra equivalente nel puzzle risolto.
`( )` = Posizione delle somme cifrate. Le somme orizzontali sono precedute da una "h" minuscola e le somme verticali sono precedute da una "v" maiuscola. Queste sono seguite da una o due lettere maiuscole a seconda che la somma sia una cifra singola o una cifra doppia. Per le somme a due cifre, la prima lettera sarebbe per le "decine" e la seconda per le "unità". Quando la cella deve contenere informazioni sia per una somma orizzontale che per una somma verticale, la prima è sempre per la somma orizzontale e le due sono separate da una virgola all'interno della stessa serie di parentesi, es. (hFE,vD). Ogni serie di parentesi è immediatamente seguita da una virgola.
La descrizione dell'ultima cella è seguita da un Carriage Return/Line Feed (CRLF) invece di una virgola.
La risposta richiesta ad ogni puzzle è basata sul valore di ogni lettera necessaria per arrivare alla soluzione e secondo l'ordine alfabetico. Come indicato nel puzzle di esempio, la sua risposta sarebbe 8426039571. Almeno 9 delle 10 lettere di crittografia fanno sempre parte della descrizione del problema. Quando viene dato solo 9, a quello mancante deve essere assegnato il numero rimanente.
Ti viene dato che la somma delle risposte per i primi 10 puzzle in `testPuzzles` è 64414157580.
Trova la somma delle risposte per l'array `puzzles`.
# --hints--
`kakuro(testPuzzles)` dovrebbe restituire `1059760019628`.
```js
assert.strictEqual(kakuro(_testPuzzles), 1059760019628);
```
# --seed--
## --after-user-code--
```js
const _testPuzzles = [
'6,X,X,(vCC),(vI),X,X,X,(hH),B,O,(vCA),(vJE),X,(hFE,vD),O,O,O,O,(hA),O,I,(hJC,vB),O,O,(hJC),H,O,O,O,X,X,X,(hJE),O,O,X','7,X,X,X,X,(vJJ),(vCD),X,X,X,X,(hCG),O,O,(vCE),X,X,X,(hCI,vJB),C,O,O,X,(vB),(hJF,vJF),O,F,O,O,(hJA),F,G,O,O,X,X,(hCA),O,A,O,X,X,X,X,(hCF),O,O,X,X,X','7,X,X,X,(vE),(vCB),X,X,X,X,(hJ),O,O,(vCA),X,X,(vCH),(hCG,vCJ),O,O,O,(vJ),(hCE),O,O,O,(hJ,vGG),O,O,(hD),I,O,(hCD,vCB),H,O,O,X,(hCE),O,O,E,X,X,X,X,(hCE),O,O,X,X','6,X,X,X,(vEA),(vJF),X,X,X,(hI),O,O,(vJA),X,(vA),(hEI,vEB),O,O,O,(hIG),C,O,J,O,D,(hJD),O,O,O,X,X,X,(hJD),O,O,X,X','7,X,(vH),(vG),X,X,(vI),(vDH),(hG),B,O,(vDI),(hDB,vDE),O,O,(hBC),I,O,F,O,O,J,X,X,(hG),O,O,X,X,X,(vDG),(hH,vDD),O,O,(vDJ),(vC),(hBI),O,O,O,O,O,O,(hDJ),O,O,X,(hA),O,O','6,X,(vID),(vIJ),X,X,X,(hH),F,I,(vF),(vIA),X,(hIA),G,B,O,C,X,X,(hID),O,O,O,(vIF),X,(hIA),E,O,I,O,X,X,X,(hII),O,G','6,X,X,(vAF),(vAI),X,X,X,(hJ,vAC),O,B,(vGJ),X,(hGH),J,O,O,O,(vAF),(hAG),O,O,(hH,vF),A,D,X,(hGF),O,E,O,O,X,X,(hD),O,O,X','7,X,X,X,X,(vCE),(vGB),X,X,(vJG),(vCI),(hCD,vCJ),O,O,X,(hCI),O,O,O,O,B,(vJB),(hCF),O,O,O,(hCA,vH),O,O,(hCJ),O,O,(hJB,vCJ),O,O,O,X,(hJD),O,O,O,O,O,X,(hF),I,O,X,X,X','7,X,(vBB),(vBD),X,X,X,X,(hBB),C,E,(vEE),(vEC),X,X,(hBC),O,O,O,O,X,X,X,(hEF),H,O,A,(vJ),X,X,X,(hBD),O,O,O,(vI),X,X,(hBE),F,O,O,O,X,X,X,X,(hG),O,O','7,X,X,(vGG),(vGD),X,(vI),(vGI),X,(hGB),O,O,(hGH,vIC),O,O,X,(hGA),O,O,O,J,O,X,X,(hGI),O,O,X,X,X,(vGD),(hE,vE),O,O,(vGF),X,(hIH),O,O,O,O,O,X,(hE),A,O,(hGF),O,O,X','6,X,(vIJ),(vIE),X,X,X,(hF),O,C,(vIA),X,X,(hCA),O,O,D,(vIH),X,X,(hIB),E,O,O,(vF),X,X,(hD),O,A,O,X,X,X,(hID),O,G','6,X,(vAD),(vGI),(vI),X,X,(hB),O,O,O,(vAF),X,(hGC),O,O,O,O,(vGA),(hGE),O,O,(hJ,vB),O,O,X,(hGD),D,O,E,O,X,X,(hAI),O,C,O','6,X,X,X,(vAB),(vFA),X,X,X,(hHI),O,O,(vHJ),X,(vA),(hFJ,vHE),I,D,O,(hFH),O,O,O,O,O,(hHJ),O,O,O,X,X,X,(hC),O,J,X,X','7,X,X,X,(vJ),(vEF),X,X,X,X,(hI,vGD),C,E,(vEF),(vA),X,(hEH),O,O,O,O,O,X,(hH,vJ),O,O,(hJ,vEJ),O,O,(hD),O,A,(hEF,vEB),O,O,X,(hCC),O,O,A,O,O,X,X,X,(hH),O,O,X,X','7,X,X,X,(vAG),(vAJ),(vFH),X,X,X,(hFD),O,O,O,X,X,(vH),(hAJ,vAB),O,O,O,(vB),(hAH),O,H,O,(hC,vAI),O,O,(hE),O,O,(hAI,vAE),O,O,O,X,(hJ),O,O,O,X,X,X,(hFG),E,O,O,X,X','7,X,(vAI),(vHB),X,X,(vJE),(vAA),(hD),O,O,X,(hG),O,O,(hAJ),O,O,(vE),(hAA,vAI),O,O,X,(hHF),O,O,O,O,X,X,(hJF,vAE),O,O,O,J,(vH),(hAI),D,O,X,(hB),O,O,(hAG),O,O,X,(hAA),O,O','7,X,X,(vHJ),(vC),(vAF),X,X,X,(hHF),O,O,O,(vHI),(vHD),X,(hHB,vAB),O,O,O,O,E,(hAI),O,O,X,(hAB),O,O,(hD),O,O,(vAB),(hAI,vE),J,O,(hHH),O,O,O,B,O,X,X,X,(hG),O,A,O,X','6,X,X,(vDF),(vHE),X,X,X,(hHJ,vE),C,O,X,X,(hHI),O,O,O,(vDF),(vHH),(hFA),A,O,B,O,O,X,X,(hE),O,I,O,X,X,(hHH),O,O,X','6,X,(vA),(vA),X,X,X,(hE),O,O,(vCJ),X,X,(hG),O,O,O,(vHI),X,X,(hHC),O,O,H,(vB),X,X,(hCE),O,O,D,X,X,X,(hE),O,O','6,X,X,X,X,(vEH),(vEC),X,X,X,(hEB,vEJ),O,O,X,X,(hEC,vEF),O,O,B,X,(hDD,vEI),O,B,C,X,(hB),O,D,A,X,X,(hEC),O,O,X,X,X','6,X,X,X,X,(vIF),(vH),X,X,X,(hIJ,vGJ),B,I,X,X,(hIB,vIC),O,O,G,X,(hIA,vC),O,O,O,X,(hE),O,O,O,X,X,(hIA),E,O,X,X,X','7,X,(vC),(vFB),X,X,X,X,(hFH),O,O,(vFA),(vFJ),(vC),X,(hFJ),O,O,O,O,O,X,X,X,(hA,vJ),O,O,O,X,X,(hG),D,O,O,(vC),(vFC),X,(hBH),A,O,O,O,E,X,X,X,X,(hFH),O,I','6,X,X,(vFD),(vC),X,X,X,(hDH),E,F,(vDG),(vDD),X,(hDF,vDI),O,O,A,O,(hDG),O,O,(hDG,vDG),O,O,(hDJ),O,D,J,O,X,X,X,(hJ),E,O,X','6,X,X,X,(vE),(vGH),(vIC),X,X,(hD,vIG),O,O,A,X,(hIF,vJ),O,J,E,O,(hJ),O,D,(hGG,vGH),O,O,(hGG),O,O,O,O,X,(hIC),O,O,O,X,X','7,X,X,X,X,(vAG),(vJA),(vH),X,X,X,(hAJ,vDJ),O,O,O,X,X,(hJF),O,O,O,O,X,X,(hG),D,O,X,X,X,(vJH),(hJE,vJD),C,I,X,X,(hAE),B,O,O,O,X,X,(hAJ),O,O,E,X,X,X','7,X,X,X,X,(vGG),(vIA),(vGF),X,X,X,(hGF),O,O,D,X,X,X,(hGJ,vIB),O,O,O,X,X,(hGH,vGD),O,O,O,X,X,(hII,vC),O,J,O,X,X,(hIH),J,O,O,X,X,X,(hGE),O,I,O,X,X,X','6,X,X,(vFA),(vEC),X,X,X,(hI,vFI),F,O,X,X,(hDE),O,O,O,(vFF),(vFF),(hDI),G,J,O,F,O,X,X,(hFJ),O,D,O,X,X,(hFH),J,A,X','7,X,X,X,X,X,(vID),(vBB),X,X,X,X,(hBC),O,I,X,X,(vIH),(vBH),(hBF,vF),O,O,X,(hIE,vD),O,O,I,O,O,(hAG),O,O,O,O,F,X,(hA),O,O,X,X,X,X,(hD),O,O,X,X,X,X','7,X,(vCD),(vCC),X,X,X,X,(hE),B,C,(vCE),X,X,X,(hCD),O,O,O,(vE),(vCG),X,X,(hCH),O,O,O,O,X,X,(hFC),B,J,G,O,(vCC),X,X,X,(hCI),O,O,O,X,X,X,X,(hG),O,O','7,X,X,X,(vID),(vD),(vFB),X,X,X,(hIB,vID),O,O,O,X,X,(hJE,vIA),J,C,O,D,(vF),(hIB),O,O,X,(hIG),O,O,(hIJ),O,O,(vD),(hA,vID),O,O,X,(h
]
```
## --seed-contents--
```js
function kakuro(puzzles) {
return true;
}
const testPuzzles = [
'6,X,X,(vCC),(vI),X,X,X,(hH),B,O,(vCA),(vJE),X,(hFE,vD),O,O,O,O,(hA),O,I,(hJC,vB),O,O,(hJC),H,O,O,O,X,X,X,(hJE),O,O,X','7,X,X,X,X,(vJJ),(vCD),X,X,X,X,(hCG),O,O,(vCE),X,X,X,(hCI,vJB),C,O,O,X,(vB),(hJF,vJF),O,F,O,O,(hJA),F,G,O,O,X,X,(hCA),O,A,O,X,X,X,X,(hCF),O,O,X,X,X','7,X,X,X,(vE),(vCB),X,X,X,X,(hJ),O,O,(vCA),X,X,(vCH),(hCG,vCJ),O,O,O,(vJ),(hCE),O,O,O,(hJ,vGG),O,O,(hD),I,O,(hCD,vCB),H,O,O,X,(hCE),O,O,E,X,X,X,X,(hCE),O,O,X,X','6,X,X,X,(vEA),(vJF),X,X,X,(hI),O,O,(vJA),X,(vA),(hEI,vEB),O,O,O,(hIG),C,O,J,O,D,(hJD),O,O,O,X,X,X,(hJD),O,O,X,X','7,X,(vH),(vG),X,X,(vI),(vDH),(hG),B,O,(vDI),(hDB,vDE),O,O,(hBC),I,O,F,O,O,J,X,X,(hG),O,O,X,X,X,(vDG),(hH,vDD),O,O,(vDJ),(vC),(hBI),O,O,O,O,O,O,(hDJ),O,O,X,(hA),O,O','6,X,(vID),(vIJ),X,X,X,(hH),F,I,(vF),(vIA),X,(hIA),G,B,O,C,X,X,(hID),O,O,O,(vIF),X,(hIA),E,O,I,O,X,X,X,(hII),O,G','6,X,X,(vAF),(vAI),X,X,X,(hJ,vAC),O,B,(vGJ),X,(hGH),J,O,O,O,(vAF),(hAG),O,O,(hH,vF),A,D,X,(hGF),O,E,O,O,X,X,(hD),O,O,X','7,X,X,X,X,(vCE),(vGB),X,X,(vJG),(vCI),(hCD,vCJ),O,O,X,(hCI),O,O,O,O,B,(vJB),(hCF),O,O,O,(hCA,vH),O,O,(hCJ),O,O,(hJB,vCJ),O,O,O,X,(hJD),O,O,O,O,O,X,(hF),I,O,X,X,X','7,X,(vBB),(vBD),X,X,X,X,(hBB),C,E,(vEE),(vEC),X,X,(hBC),O,O,O,O,X,X,X,(hEF),H,O,A,(vJ),X,X,X,(hBD),O,O,O,(vI),X,X,(hBE),F,O,O,O,X,X,X,X,(hG),O,O','7,X,X,(vGG),(vGD),X,(vI),(vGI),X,(hGB),O,O,(hGH,vIC),O,O,X,(hGA),O,O,O,J,O,X,X,(hGI),O,O,X,X,X,(vGD),(hE,vE),O,O,(vGF),X,(hIH),O,O,O,O,O,X,(hE),A,O,(hGF),O,O,X','6,X,(vIJ),(vIE),X,X,X,(hF),O,C,(vIA),X,X,(hCA),O,O,D,(vIH),X,X,(hIB),E,O,O,(vF),X,X,(hD),O,A,O,X,X,X,(hID),O,G','6,X,(vAD),(vGI),(vI),X,X,(hB),O,O,O,(vAF),X,(hGC),O,O,O,O,(vGA),(hGE),O,O,(hJ,vB),O,O,X,(hGD),D,O,E,O,X,X,(hAI),O,C,O','6,X,X,X,(vAB),(vFA),X,X,X,(hHI),O,O,(vHJ),X,(vA),(hFJ,vHE),I,D,O,(hFH),O,O,O,O,O,(hHJ),O,O,O,X,X,X,(hC),O,J,X,X','7,X,X,X,(vJ),(vEF),X,X,X,X,(hI,vGD),C,E,(vEF),(vA),X,(hEH),O,O,O,O,O,X,(hH,vJ),O,O,(hJ,vEJ),O,O,(hD),O,A,(hEF,vEB),O,O,X,(hCC),O,O,A,O,O,X,X,X,(hH),O,O,X,X','7,X,X,X,(vAG),(vAJ),(vFH),X,X,X,(hFD),O,O,O,X,X,(vH),(hAJ,vAB),O,O,O,(vB),(hAH),O,H,O,(hC,vAI),O,O,(hE),O,O,(hAI,vAE),O,O,O,X,(hJ),O,O,O,X,X,X,(hFG),E,O,O,X,X','7,X,(vAI),(vHB),X,X,(vJE),(vAA),(hD),O,O,X,(hG),O,O,(hAJ),O,O,(vE),(hAA,vAI),O,O,X,(hHF),O,O,O,O,X,X,(hJF,vAE),O,O,O,J,(vH),(hAI),D,O,X,(hB),O,O,(hAG),O,O,X,(hAA),O,O','7,X,X,(vHJ),(vC),(vAF),X,X,X,(hHF),O,O,O,(vHI),(vHD),X,(hHB,vAB),O,O,O,O,E,(hAI),O,O,X,(hAB),O,O,(hD),O,O,(vAB),(hAI,vE),J,O,(hHH),O,O,O,B,O,X,X,X,(hG),O,A,O,X','6,X,X,(vDF),(vHE),X,X,X,(hHJ,vE),C,O,X,X,(hHI),O,O,O,(vDF),(vHH),(hFA),A,O,B,O,O,X,X,(hE),O,I,O,X,X,(hHH),O,O,X','6,X,(vA),(vA),X,X,X,(hE),O,O,(vCJ),X,X,(hG),O,O,O,(vHI),X,X,(hHC),O,O,H,(vB),X,X,(hCE),O,O,D,X,X,X,(hE),O,O','6,X,X,X,X,(vEH),(vEC),X,X,X,(hEB,vEJ),O,O,X,X,(hEC,vEF),O,O,B,X,(hDD,vEI),O,B,C,X,(hB),O,D,A,X,X,(hEC),O,O,X,X,X','6,X,X,X,X,(vIF),(vH),X,X,X,(hIJ,vGJ),B,I,X,X,(hIB,vIC),O,O,G,X,(hIA,vC),O,O,O,X,(hE),O,O,O,X,X,(hIA),E,O,X,X,X','7,X,(vC),(vFB),X,X,X,X,(hFH),O,O,(vFA),(vFJ),(vC),X,(hFJ),O,O,O,O,O,X,X,X,(hA,vJ),O,O,O,X,X,(hG),D,O,O,(vC),(vFC),X,(hBH),A,O,O,O,E,X,X,X,X,(hFH),O,I','6,X,X,(vFD),(vC),X,X,X,(hDH),E,F,(vDG),(vDD),X,(hDF,vDI),O,O,A,O,(hDG),O,O,(hDG,vDG),O,O,(hDJ),O,D,J,O,X,X,X,(hJ),E,O,X','6,X,X,X,(vE),(vGH),(vIC),X,X,(hD,vIG),O,O,A,X,(hIF,vJ),O,J,E,O,(hJ),O,D,(hGG,vGH),O,O,(hGG),O,O,O,O,X,(hIC),O,O,O,X,X','7,X,X,X,X,(vAG),(vJA),(vH),X,X,X,(hAJ,vDJ),O,O,O,X,X,(hJF),O,O,O,O,X,X,(hG),D,O,X,X,X,(vJH),(hJE,vJD),C,I,X,X,(hAE),B,O,O,O,X,X,(hAJ),O,O,E,X,X,X','7,X,X,X,X,(vGG),(vIA),(vGF),X,X,X,(hGF),O,O,D,X,X,X,(hGJ,vIB),O,O,O,X,X,(hGH,vGD),O,O,O,X,X,(hII,vC),O,J,O,X,X,(hIH),J,O,O,X,X,X,(hGE),O,I,O,X,X,X','6,X,X,(vFA),(vEC),X,X,X,(hI,vFI),F,O,X,X,(hDE),O,O,O,(vFF),(vFF),(hDI),G,J,O,F,O,X,X,(hFJ),O,D,O,X,X,(hFH),J,A,X','7,X,X,X,X,X,(vID),(vBB),X,X,X,X,(hBC),O,I,X,X,(vIH),(vBH),(hBF,vF),O,O,X,(hIE,vD),O,O,I,O,O,(hAG),O,O,O,O,F,X,(hA),O,O,X,X,X,X,(hD),O,O,X,X,X,X','7,X,(vCD),(vCC),X,X,X,X,(hE),B,C,(vCE),X,X,X,(hCD),O,O,O,(vE),(vCG),X,X,(hCH),O,O,O,O,X,X,(hFC),B,J,G,O,(vCC),X,X,X,(hCI),O,O,O,X,X,X,X,(hG),O,O','7,X,X,X,(vID),(vD),(vFB),X,X,X,(hIB,vID),O,O,O,X,X,(hJE,vIA),J,C,O,D,(vF),(hIB),O,O,X,(hIG),O,O,(hIJ),O,O,(vD),(hA,vID),O,O,X,(h
]
kakuro(testPuzzles);
```
# --solutions--
```js
// solution required
```