Il tuo compito è accettare come input due sequenze geniche e una sequenza di "punti di crossover" e restituire la sequenza genica che risulta dai crossover indicati.
Quello che voglio dire con questo è, supponiamo di avere le sequenze [A, A, A, A, A, A, A]
e [Z, Z, Z, Z, Z, Z, Z]
, e attraversare i punti di 2
e 5
. La sequenza risultante sarebbe [A, A, Z, Z, Z, A, A]
, perché:
Croce qui: VV Indici: 0 1 2 3 4 5 6 Geni 1: AAAAAAA Geni 2: ZZZZZZZ Risultato: AAZZZAA ^ ^
Nota che mentre sto usando le lettere qui per chiarezza, la vera sfida usa i numeri per i geni.
Il risultato è la prima sequenza fino a quando non viene rilevato un punto di incrocio, quindi il risultato prende dalla seconda sequenza fino a quando non viene rilevato un altro punto di incrocio, quindi il risultato prende dalla prima sequenza fino a quando non viene rilevato un punto di incrocio ...
Ingresso:
L'input può essere qualsiasi forma ragionevole. Le due sequenze possono essere una coppia, con i punti come secondo argomento, tutti e tre possono essere argomenti separati, una sola tripletta di
(genes 1, genes 2, cross-points)
, una mappa con chiavi denominate ...I punti di incrocio saranno sempre in ordine e saranno sempre in bilico. Non ci saranno punti duplicati, ma l'elenco dei punti di incrocio potrebbe essere vuoto.
Le sequenze geniche avranno sempre la stessa lunghezza e non saranno vuote.
Gli indici possono essere basati su 0 o 1.
I geni saranno sempre numeri nell'intervallo 0-255.
Non importa quale argomento sia "geni 1" o "geni 2". In caso di nessun punto di incrocio, il risultato può essere interamente "geni 1" o "geni 2".
Produzione
L'output può essere qualsiasi forma ragionevole che non sia ambigua. Può essere una matrice / un elenco di numeri, una matrice di numeri di stringa, una stringa di numeri delimitata (alcuni caratteri non numerici devono separare i numeri) ...
Può essere restituito o stampato sullo std-out.
Le voci possono tramite programmi o funzioni completi.
Casi di prova (genes 1, genes 2, cross points) => result
:
[0], [1], [0] => [1]
[0, 1], [9, 8], [1] => [0, 8]
[0, 2, 4, 6, 8, 0], [1, 3, 5, 7, 9, 1], [1, 3, 5] => [0, 3, 5, 6, 8, 1]
[1, 2, 3, 4], [5, 6, 7, 8], [] => [1, 2, 3, 4]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 2, 3, 6, 8] => [1, 1, 0, 1, 1, 1, 0, 0, 1, 1]
Questo è Code Golf.