Stellen Sie sich vor, Sie haben ein Array von Ganzzahlen, deren nicht negative Werte Zeiger auf andere Positionen im selben Array sind, nur dass diese Werte Tunnel darstellen. Wenn also der Wert an Position A positiv ist und auf Position B zeigt, dann der Wert an Position B muss ebenfalls positiv sein und auf Position A zeigen, um beide Enden des Tunnels darzustellen. So:
Herausforderung
- Überprüfen Sie bei einem gegebenen Array von Ganzzahlen, ob das Array der Einschränkung entspricht, ein Tunnel-Array zu sein, und geben Sie zwei unterschiedliche, kohärente Werte für truthy und falsey zurück.
- Die Werte im Array liegen für Nicht-Tunnelpositionen unter Null und für Tunnelpositionen über Null. Wenn Ihr Array 1-indiziert ist, repräsentiert der Nullwert eine Nicht-Tunnel-Position. Nicht-Tunnel-Werte müssen nicht überprüft werden.
- Wenn ein positiver Wert in einer Zelle auf sich selbst zeigt, ist das eine Falschmeldung. Wenn A auf B, B auf C und C auf A zeigt, ist das eine Falschmeldung. Wenn ein positiver Wert über die Grenzen des Arrays hinausweist, ist das eine Falschmeldung.
Beispiele
Die folgenden Beispiele sind 0-indiziert:
[-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)
Das ist Code-Golf , also kann der kürzeste Code für jede Sprache gewinnen!
[0,1]
und [0,-1,2]
geben?
[0,1]
ist in den Beispielen. „Wenn ein positiver Wert in einer Zelle auf sich selbst, das ist ein Falsey“
[2,3,0,1]
[0]
?