Un array bidimensionale di dimensioni n × n è riempito con n * n numeri, a partire dal numero 1. Tali numeri devono essere ordinati per riga in ordine crescente; il primo numero di una riga deve essere maggiore dell'ultimo numero della riga precedente (il numero più piccolo di tutti (1) sarà in [0,0]). Questo è simile al puzzle 15 .
Questo è, ad esempio, un array ordinato di dimensioni n = 3 .
1 2 3
4 5 6
7 8 9
Ingresso
L'input è un array criptato. Può avere qualsiasi dimensione fino a n = 10. Esempio per n = 3:
4 2 3
1 8 5
7 9 6
Produzione
Emette un elenco di swap necessari per ordinare l'array. Uno scambio è definito come segue: Due numeri adiacenti scambiano posizioni, sia in orizzontale che in verticale; lo scambio diagonale non è consentito.
Esempio di output per l'esempio sopra:
- Scambia 4 e 1
- Scambia 8 e 5
- Scambia 8 e 6
- Scambia 9 e 8
Meno swap sono necessari, meglio è. Il tempo di calcolo deve essere fattibile.
Ecco un altro esempio di input, con n = 10:
41 88 35 34 76 44 66 36 58 28
6 71 24 89 1 49 9 14 74 2
80 31 95 62 81 63 5 40 29 39
17 86 47 59 67 18 42 61 53 100
73 30 43 12 99 51 54 68 98 85
13 46 57 96 70 20 82 97 22 8
10 69 50 65 83 32 93 45 78 92
56 16 27 55 84 15 38 19 75 72
33 11 94 48 4 79 87 90 25 37
77 26 3 52 60 64 91 21 23 7
Se non sbaglio, ciò richiederebbe circa 1000-2000 swap.