Invece di inclinazione sinistra e destra userò la barra (/) e la barra rovesciata (\).
Prendiamo un quadrato con gli angoli (x1) (11), dove x è tutto tranne 1. C'è uno di questi nell'angolo in alto a sinistra. Supponiamo che lo slant su quel quadrato sia una barra, che collega due 1. Quelle 1 sono "esaurite" e tutte le caselle che le toccano devono avere linee che non tocchino i numeri. Ma questo porta a situazioni impossibili perché avremmo una barra sia a sinistra che al di sotto della nostra casella, il che significa che il rimanente 1 tocca due slanti. La conclusione: se hai un quadrato con tre 1, allora la linea in quel quadrato deve toccare l'angolo che non è 1. Questa regola non può essere applicata nei bordi e negli angoli, ma se hai 1 nell'angolo devi disegnare la linea toccando quell'angolo.
I numeri 1 e 3 sono simmetrici e utilizzando una logica simile otteniamo un'altra regola: se si dispone di un quadrato con tre 3, la linea in quel quadrato deve toccare due di questi tre 3.
Ci sono più regole generali, ma non si applicano negli angoli. Ci devono essere quadrati che circondano la piazza in questione. Prendiamo un quadrato di due opposti (x1) (1y), dove xey sono qualsiasi cosa, incluso un no numero. C'è uno di questi due quadrati lontano dall'angolo in basso a sinistra.Supponiamo che lo slant su quel quadrato sia una barra, che collega due 1. Quelle 1 sono "esaurite" e tutte le caselle che le toccano devono avere linee che non tocchino i numeri. Ma questo porta ad aggirare gli 1. La conclusione: se hai un quadrato con due 1 opposti, allora la linea in quel quadrato non deve toccare quei due 1. Questa regola potrebbe non essere applicabile ai bordi del pannello.
I numeri 1 e 3 sono simmetrici, ma la regola precedente utilizza la regola "no loop" e non esiste alcuna regola simmetrica di "no loops of lateral lines" e pertanto non esiste alcuna regola che abbia due 3 opposti.
Ora che sai quale linea tocca l'1, puoi concludere che nessun'altra linea può toccarla. Possiamo generalizzare questo ragionamento alle seguenti regole di riempimento: se un numero x sta toccando x linee, allora tutti gli altri quadrati adiacenti hanno linee che non toccano il numero. E simmetricamente: se un numero x è un angolo di (4-x) quadrati con linee che non toccano il numero, allora tutti gli altri quadrati vicini devono avere linee che toccano il numero.
Cerca su google per il termine "Gokigen Naname" Ho trovato più regole. Uno è di circa due adiacenti (11), ma già Mweerden lo copriva.
Queste regole non sono sufficienti per risolvere il tabellone. Ci sono altre regole probabilmente. Ma alla fine l'algoritmo potrebbe dover indovinare.
Certamente, avrete bisogno di un po 'di prove ed errori. Puoi escludere alcune opzioni in anticipo, ma non penso che questo possa essere fatto senza alcun backtracking. –
@EAGER_STUDENT: Immagino tu intenda [questo gioco] (http://manpages.ubuntu.com/manpages/lucid/man6/slant.6.html)? Non puoi dare un'occhiata al codice sorgente per vedere come lo risolvono? – James
@AakashM sì, posso risolvere logicamente le griglie semplici. Nelle griglie semplici ci sarà un numero come 0 o 4 o 1 all'angolo. Con questo come strumento risolverò. Quando la larghezza o l'altezza aumentano, il problema è che queste 3 cose non sono presenti nei puzzle più difficili. –