Hãy tưởng tượng bạn có một mảng các số nguyên, có các giá trị không âm là con trỏ tới các vị trí khác trong cùng một mảng, chỉ các giá trị đó đại diện cho các đường hầm, vì vậy nếu giá trị ở vị trí A là dương và trỏ đến vị trí B, thì giá trị ở vị trí B cũng phải dương và chỉ vào vị trí A để thể hiện cả hai đầu của đường hầm. Vì thế:
Thử thách
- Đưa ra một mảng các số nguyên, kiểm tra xem mảng có tuân theo giới hạn là một mảng đường hầm hay không và trả về hai giá trị riêng biệt, mạch lạc cho tính trung thực và falsey.
- Các giá trị trong mảng sẽ ở dưới 0 đối với các vị trí không phải đường hầm và 0 hoặc cao hơn đối với các vị trí đường hầm. Nếu mảng của bạn được lập chỉ mục 1, thì giá trị 0 biểu thị vị trí không đường hầm. Các giá trị không phải là đường hầm không cần phải được kiểm tra.
- Nếu một giá trị dương trong một ô chỉ vào chính nó, thì đó là một con chim ưng. Nếu A chỉ vào B, B đến C và C đến A, đó là một con chim ưng. Nếu một giá trị dương chỉ ra ngoài giới hạn của mảng, đó là một con chim ưng.
Ví dụ
Các ví dụ sau được lập chỉ mục 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)
Đây là môn đánh gôn , vì vậy có thể mã ngắn nhất cho mỗi ngôn ngữ sẽ giành chiến thắng!
[0,1]
và [0,-1,2]
cung cấp cho những gì?
[0,1]
là trong các ví dụ. "Nếu một giá trị dương trong một ô chỉ vào chính nó, thì đó là một con chim ưng"
[2,3,0,1]
[0]
gì?