Obbiettivo
Ti viene dato un numero intero n
( n > 1
). È necessario uscita quanti permutazioni degli interi 1
a n
ci sono, che inizierà alle 1
, fine a n
, e non hanno due numeri interi consecutivi che differiscono dal 1.
In alternativa, se si prende il grafico completo K_n
e si rimuovono i bordi del percorso, 1-2-3-...-n
è necessario contare i percorsi hamiltoniani da 1
a n
nel grafico rimanente.
Gli esempi verranno utilizzati f(n)
per una funzione che accetta n
e genera il numero di permutazioni valide, ma l'invio può essere una funzione o un programma.
Esempi
Perché n = 6
, una possibile soluzione è1-3-5-2-4-6
Tuttavia, 1-3-5-2-6-4
non è una soluzione valida poiché non termina con 6
.
In effetti, per n = 6
, ci sono solo 2 soluzioni ( 1-4-2-5-3-6
è l'altra).
Quindi f(6) = 2
.
Per n = 4
le uniche permutazioni che iniziano 1
e finiscono in 4
sono 1-2-3-4
e 1-3-2-4
. In entrambi 2
è adiacente al 3
, dando numeri interi consecutivi che differiscono di 1. Pertanto f(4) = 0
.
Casi test
f(6) = 2
f(4) = 0
f(8) = 68
f(13) = 4462848
Criterio vincente
Questo è code-golf, vince la risposta più breve.
Q_ser:=z + 2 z^6 + 10 z^7 + 68 z^8 + 500 z^9 + 4174 z^10 + 38774 z^11 + 397584z^12 + 4462848 z^13 + 54455754 z^14
Passo ora un po 'di tempo cercando di usare le formule, ma non riesco a comporne una che generi la sequenza. Incredibile vedere l'esponente di z è l'input della formula e il risultato è il fattore di moltiplicazione. Quello che può dedurre la formula da lì potrebbe essere quello con la risposta più breve in byte
[2..n-1]
non contengono delta1
o-1
, dovete anche controllare che nessuna di esse inizi con2
o finisca conn-1
...