Wyobraź sobie, że masz tablicę liczb całkowitych, których nieujemne wartości są wskaźnikami do innych pozycji w tej samej tablicy, tyle że te wartości reprezentują tunele, więc jeśli wartość w pozycji A jest dodatnia i wskazuje na pozycję B, to wartość na pozycji B musi być również dodatnie i wskazywać na pozycję A, aby reprezentować oba końce tunelu. Więc:
Wyzwanie
- Biorąc pod uwagę tablicę liczb całkowitych, sprawdź, czy tablica jest zgodna z ograniczeniem bycia tablicą tunelującą i zwróć dwie różne, spójne wartości dla wartości true i falsey.
- Wartości w tablicy będą poniżej zera dla pozycji nie tunelowych i zero lub powyżej dla pozycji tunelowych. Jeśli tablica ma indeks 1, wówczas wartość zerowa reprezentuje pozycję nie tunelowaną. Wartości inne niż tunelowe nie muszą być sprawdzane.
- Jeśli dodatnia wartość w komórce wskazuje na siebie, to falsey. Jeśli A wskazuje na B, B na C i C na A, to falsey. Jeśli dodatnia wartość wskazuje poza granice tablicy, to falsey.
Przykłady
Poniższe przykłady są indeksowane według 0:
[-1, -1, -1, 6, -1, -1, 3, -1, -1] Truthy (position 3 points to position 6 and vice versa)
[1, 0] Truthy (position 0 points to position 1 and vice versa)
[0, 1] Falsey (positions 0 and 1 point to themselves)
[4, 2, 1, -1, 0, -1] Truthy
[2, 3, 0, 1] Truthy
[1, 2, 0] Falsey (no circular tunnels allowed)
[-1, 2, -1] Falsey (tunnel without end)
[] Truthy (no tunnels, that's OK)
[-1, -2, -3] Truthy (no tunnels, that's OK)
[1, 0, 3] Falsey (tunnel goes beyond limits)
[1] Falsey (tunnel goes beyond limits)
[1, 0, 3, 7] Falsey (tunnel goes beyond limits)
To jest kod-golf , więc może wygrać najkrótszy kod dla każdego języka!
[0,1]i jakie [0,-1,2]?
[0,1]jest w przykładach. „Jeśli dodatnia wartość w komórce wskazuje na siebie, to jest falsey”
[2,3,0,1]
[0]?