Sto creando un puzzle game che, pur giocabile a mano per livelli facili, è pensato per essere risolto dai programmi per computer per quelli più difficili. Il puzzle è un riempimento di piena su una tavola esagonale. Puoi provare un prototipo here.Algoritmo per creare un puzzle di dilavamento esagonale
alt text http://www.hacker.org/flood/screen.png
Ecco come funziona il puzzle: scegliendo un colore dalla parte superiore, si esegue un riempimento a partire dalla piastrella in alto a sinistra. Questo progressivamente converte la tavola in un colore solido. La sfida è fare questo in un certo numero di mosse.
Ho creato diversi puzzle simili a questo, e la chiave è usare un algoritmo che genera schede difficili da risolvere senza sapere come sono state create. Per esempio, qui potremmo produrre una tavola invertendo il riempimento di piena: lavorando all'indietro da una tavola piena fino a quando non è stato rilasciato. Sappiamo quanti passaggi ha richiesto e possiamo impostarlo come limite inferiore per una soluzione.
Il problema che sto affrontando è che quando provo questo approccio, il mio limite superiore è troppo alto. Diventa banale risolvere il puzzle all'interno di questo numero di mosse, anche spostandosi casualmente.
Un approccio che non è una soluzione sta generando una scheda casuale e quindi risolvendolo in modo ottimale e impostandolo come obiettivo. Il punto è creare un puzzle dove risolverlo in modo ottimale è NP time o almeno un hard P.
Quindi quello che sto cercando è un algoritmo in grado di generare schede estremamente difficili dove risolverli, man mano che diventano più grandi, diventa una seria sfida.
Sposta la frase "Il problema sto affrontando ..." all'inizio di un paragrafo. Alla fine del paragrafo più lungo si perde. –
Sembra un bel puzzle :) – yairchu
Sono passati due anni, puoi postarci il tuo pensiero corrente? – smci