Negatif olmayan değerleri aynı dizideki diğer konumlara işaret eden bir tamsayı diziniz olduğunu düşünün, yalnızca bu değerler tünelleri temsil eder, bu nedenle A konumundaki değer pozitifse ve B konumuna işaret ediyorsa, konumdaki değer B ayrıca pozitif olmalı ve tünelin her iki ucunu temsil etmek için A konumunu göstermelidir. Yani:
Meydan okuma
- Bir tamsayı dizisi verildiğinde, dizinin bir tünel dizisi olma kısıtlamasına uyup uymadığını kontrol edin ve doğruluk ve falsey için iki ayrı, tutarlı değer döndürün.
- Dizideki değerler, tünel dışı konumlar için sıfırın altında ve tünel konumları için sıfırın veya üzerinde olacaktır. Diziniz 1 dizinli ise, sıfır değeri tünel dışı bir konumu temsil eder. Tünel dışı değerlerin kontrol edilmesi gerekmez.
- Bir hücredeki pozitif bir değer kendini gösteriyorsa, bu bir falseydir. A, B'yi, B'yi C'yi ve C'yi A'yı gösteriyorsa, bu bir falseydir. Pozitif bir değer dizinin sınırlarını aşarsa, bu bir falseydir.
Örnekler
Aşağıdaki örnekler 0 dizinlidir:
[-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)
Bu kod golf , bu yüzden her dil için en kısa kod kazanabilir!
[0,1]
ve [0,-1,2]
verecek?
[0,1]
örneklerde bulunmaktadır. "Eğer bir hücredeki pozitif bir değer kendini gösteriyorsa, bu bir
[2,3,0,1]
[0]
?