Descrizione
Lascia che una permutazione degli interi {1, 2, ..., n}
sia chiamata minimamente interpolabile se nessun insieme di k+2
punti (insieme ai loro indici) cade su un polinomio di grado k
. Questo è,
- Non ci sono due punti su una linea orizzontale (polinomio di 0 gradi)
- Non ci sono tre punti su una linea (polinomio di 1 grado)
- No quattro punti cadono su una parabola (polinomio di 2 gradi)
- Eccetera.
Sfida
Scrivere un programma che calcola OEIS sequenza A301802 (n) , il numero di permutazioni minimamente interpolable di {1, 2, ..., n}
per n
esempio un grande possibile.
punteggio
Farò cronometrare il tuo codice sul mio computer (Intel Core i5 da 2,3 GHz, 8 GB RAM) con input crescenti. Il tuo punteggio sarà il massimo input che impiega meno di 1 minuto per produrre il valore corretto.
Esempio
Ad esempio, la permutazione [1, 2, 4, 3]
è minimamente interpolabile perché
the terms together with their indices
[(1, 1), (2, 2), (3, 4), (4, 3)]
have the property that
(0) No two points have the same y-value.
(1) No three points lie on a line.
(2) No four points lie on a parabola.
Nell'illustrazione, puoi vedere che le linee orizzontali (rosse) hanno al massimo un punto su di esse, le linee (blu) hanno al massimo due punti su di esse e le parabole (verdi) hanno tre punti su di esse.
Dati
Qui ci sono le permutazioni minimamente interpolable per n=3
, n=4
e n=5
:
n = 3: [1,3,2],[2,1,3],[2,3,1],[3,1,2]
n = 4: [1,2,4,3],[1,3,2,4],[1,3,4,2],[1,4,2,3],[2,1,3,4],[2,1,4,3],[2,3,1,4],[2,4,1,3],[2,4,3,1],[3,1,2,4],[3,1,4,2],[3,2,4,1],[3,4,1,2],[3,4,2,1],[4,1,3,2],[4,2,1,3],[4,2,3,1],[4,3,1,2]
n = 5: [1,2,5,3,4],[1,3,2,5,4],[1,3,4,2,5],[1,4,2,3,5],[1,4,3,5,2],[1,4,5,2,3],[1,4,5,3,2],[1,5,3,2,4],[2,1,4,3,5],[2,3,1,4,5],[2,3,5,1,4],[2,3,5,4,1],[2,4,1,5,3],[2,4,3,1,5],[2,4,5,1,3],[2,5,1,3,4],[2,5,1,4,3],[2,5,3,4,1],[2,5,4,1,3],[3,1,4,5,2],[3,1,5,2,4],[3,1,5,4,2],[3,2,5,1,4],[3,2,5,4,1],[3,4,1,2,5],[3,4,1,5,2],[3,5,1,2,4],[3,5,1,4,2],[3,5,2,1,4],[4,1,2,5,3],[4,1,3,2,5],[4,1,5,2,3],[4,1,5,3,2],[4,2,1,5,3],[4,2,3,5,1],[4,2,5,1,3],[4,3,1,2,5],[4,3,1,5,2],[4,3,5,2,1],[4,5,2,3,1],[5,1,3,4,2],[5,2,1,3,4],[5,2,1,4,3],[5,2,3,1,4],[5,2,4,3,1],[5,3,2,4,1],[5,3,4,1,2],[5,4,1,3,2]
Se il mio programma è corretto, i primi valori di a(n)
, il numero di permutazioni minimamente interpolabili di {1, 2, ..., n}
:
a(1) = 1
a(2) = 2
a(3) = 4
a(4) = 18
a(5) = 48
a(6) = 216
a(7) = 584
a(8) = 2870