Qual è il mio problema:
C'è un puzzle di Raymond Smullyan che funziona in questo modo: sei in una stanza con molte porte. Dietro alcune di quelle porte, ci sono donne; dietro gli altri ci sono le tigri. Il tuo obiettivo è quello di scegliere una delle porte giuste (quelle con le donne). Su ogni porta, c'è un cartello che dice qualcosa come C'è una signora dietro questa porta o C'è un leone dietro la porta II e VI e così via. Ora, hai anche alcune informazioni aggiuntive come Solo uno dei segni dice la verità o Il segno su una porta è vero solo se c'è una signora dietro quella porta e così via. Ad esempio, il primo puzzle va così:
Ci sono due porte con un segno ciascuna. Uno dei segni è vero, l'altro è falso:
--------------------- --------------------- | DOOR I | | DOOR II | | There's a lady in | | In one of those | | this room and a | | rooms, there's a | | a tiger in the | | lady, in the other | | other one | | one there's a tiger | --------------------- ---------------------
Dietro quale porta è una signora?
Ora, arrivando all'argomento di questa domanda: sto cercando possibili modi per generare automaticamente tali puzzle. L'obiettivo (molto lontano) è quello di costruire un algoritmo che richiede, come parametri, il numero di porte (e forse la difficoltà del puzzle risultante) e crea testi corrispondenti per le porte.
Quello che ho provato finora:
Non molto, dato che non so davvero da dove cominciare. È facile creare un modello per il testo sui segni ed è anche facile assegnare casualmente affermazioni vere e false a quei segni, corrispondenti alla regola vera-falsa che usi (ad esempio, solo un segno dice la verità ). Ma questa è la parte in cui diventa difficile: come creare un puzzle che è risolvibile e ha una soluzione unica ? La mia prima idea è stata quella di creare un puzzle casuale e utilizzare il backtracking per cercare soluzioni. Ma in questo modo, potrebbe volerci molto tempo prima che l'algoritmo abbia finalmente trovato un insieme funzionante di segni. Inoltre, in questo modo non puoi facilmente determinare quanto sia difficile un determinato puzzle.
Quindi, riassumendolo: hai qualche idea, qualche link utile, ecc.? Qualsiasi aiuto è apprezzato, non mi aspetto che qualcuno pubblichi una soluzione perfetta e completa per il mio problema.
(Nota: inizialmente avevo posto la seguente domanda su StackOverflow ma mi è stato detto che avrei avuto maggiori probabilità di ottenere una risposta qui!)