Diciamo che voglio trovare tutti i set di 5 numeri a cifra singola, non ripetibili che aggiungono fino a 30 ... Mi piacerebbe finire con [9,8,7,5,1], [9,8 , 7,4,2], [9,8,6,4,3], [9,8,6,5,2], [9,7,6,5,3] e [8,7, 6,5,4]. Ciascuno di questi set contiene 5 cifre non ripetitive che sommano fino a 30, la somma data.Come trovo tutti i set di N numeri a singola cifra e non ripetibili che sommano a una data somma in PHP?
Qualsiasi aiuto sarebbe molto apprezzato. Anche solo un punto di partenza per me da usare sarebbe fantastico.
Mi è venuto in mente un metodo, che sembra un lungo cammino: ottenere tutti i numeri univoci a 5 cifre (12345, 12346, 12347, ecc.), Sommare le cifre e vedere se è uguale a la somma data (ad es. 30). Se lo fa, aggiungilo alla lista dei possibili set corrispondenti.
Lo sto facendo per un progetto personale, che mi aiuterà a risolvere i puzzle di Kakuro senza effettivamente risolvere il tutto in una volta. Sì, potrebbe essere un imbroglio, ma è ... non è così male ...: P
Ho semplificato il tuo esempio, unicornaddict: http://www.ideone.com/cUaaH In realtà penso che questa sia la traccia giusta. Tutto quello che devo fare è eliminare i duplicati (come 15789 e 15798, che contengono le stesse cifre) ordinando le cifre e controllando l'array ordinato per vedere se è stato restituito in precedenza. – TerranRich
BAM: http://www.ideone.com/Y91ZX Funziona perfettamente, grazie soprattutto alla tua risposta, unicornaddict! Grazie mille! Tutto in meno di 20 linee, anche. : D – TerranRich
Fare il 'array_sum' prima nel condizionale è probabilmente più veloce, dato il sovraccarico della creazione di un array unico. – Matthew