Jeśli weźmiemy liczby naturalne i zwiniemy je przeciwnie do ruchu wskazówek zegara w spiralę, otrzymamy następującą nieskończoną spiralę:
....--57--56
|
36--35--34--33--32--31--30 55
| | |
37 16--15--14--13--12 29 54
| | | | |
38 17 4---3---2 11 28 53
| | | | | | |
39 18 5 0---1 10 27 52
| | | | | |
40 19 6---7---8---9 26 51
| | | |
41 20--21--22--23--24--25 50
| |
42--43--44--45--46--47--48--49
Biorąc pod uwagę pewną liczbę w tej spirali, Twoim zadaniem jest określenie jej sąsiadów - co oznacza element powyżej, po lewej, po prawej i poniżej.
Przykład
Jeśli przyjrzymy się temu 27
, zobaczymy, że ma on następujących sąsiadów:
- powyżej:
28
- lewo:
10
- dobrze:
52
- poniżej:
26
Tak więc wynik będzie: [28,10,52,26]
Zasady
- Wejście będzie liczbą w dowolnym domyślnym formacie We / Wy
- Wyjście będzie listą / macierzą / .. 4 sąsiadów tych liczb w dowolnej (spójnej!) Kolejności
- Możesz pracować ze spiralą, która zaczyna się od 1 zamiast 0, jednak powinieneś to określić w swojej odpowiedzi
Przykłady
Dane wyjściowe są w formacie [above,left,right,below]
i wykorzystują spiralę opartą na 0:
0 -> [3,5,1,7]
1 -> [2,0,10,8]
2 -> [13,3,11,1]
3 -> [14,4,2,0]
6 -> [5,19,7,21]
16 -> [35,37,15,17]
25 -> [26,24,50,48]
27 -> [28,10,52,26]
73 -> [42,72,74,112]
101 -> [100,146,64,102]
2000 -> [1825,1999,2001,2183]
1000000 -> [1004003,1004005,999999,1000001]