Questo è Hole-3 di The Autumn Tournament di APL CodeGolf . Sono l'autore originale del problema e quindi ho permesso di ripubblicarlo qui.
Dato:
un numero di turni (si prega di indicare se nessun movimento è 0, altrimenti supponiamo che si chiami 1) e
un elenco di una o più posizioni iniziali (in qualsiasi forma, ad esempio 0 o 1 coordinate indicizzate o 64 numeri / caratteri consecutivi o A1 – H8 - indicare quale), su una scacchiera 8 per 8,
restituisce (in qualsiasi ordine) l'elenco di posizioni uniche (nello stesso formato dell'input) a cui il / i cavaliere / i può trovarsi dopo il dato numero di turni.
Ogni cavaliere deve muoversi ad ogni turno, ma non devi preoccuparti che più cavalieri occupino lo stesso quadrato.
Un cavaliere può spostarsi solo nelle posizioni contrassegnate con X rispetto alla sua posizione attuale, contrassegnate con ♞:
Esempi (coordinate 1 indicizzate)
1
passare da [[1,1]]
: [[2,3],[3,2]]
2
si sposta da [[1,1]]
: [[1,1],[1,3],[1,5],[2,4],[3,1],[3,5],[4,2],[4,4],[5,1],[5,3]]
1
passare da [[1,1],[5,7]]
: [[2,3],[3,2],[3,6],[3,8],[4,5],[6,5],[7,6],[7,8]]
2
si sposta da [[1,1],[5,7]]
: [[1,1],[1,3],[1,5],[1,7],[2,4],[2,6],[2,8],[3,1],[3,3],[3,5],[3,7],[4,2],[4,4],[4,6],[4,8],[5,1],[5,3],[5,5],[5,7],[6,4],[6,6],[6,8],[7,3],[7,7],[8,4],[8,6],[8,8]]
0
si sposta da [[3,4]]
: [[3,4]]
[[1,1]], 2 -> [[2,3],[3,2]]