(non troveremo Findo cattureremo un tryCatch, però)
Questa è la seconda parte di una serie in più parti di implementazione di alcune interessanti funzioni R. La prima parte può essere trovata qui .
L'obiettivo:
Devi implementare la matchfunzione di R nel minor numero di byte possibile.
Ingresso:
x, un elenco / array di numeri interi eventualmente vuototable, un elenco / array di numeri interi eventualmente vuotonomatch, un singolo valore interoincomparables, un elenco / array di numeri interi eventualmente vuoto
Produzione:
- un singolo array / elenco di numeri interi
Odi uguale lunghezza ax, in cui ciascun valoreO[i]rappresenta:- L'indice
jdel primo valore intablewheretable[j]==x[i] nomatch, Indicando che nessun valoretableè uguale ax[i]OR chex[i]è nella lista deiincomparables.
- L'indice
Casi test
All in the form x, table, nomatch, incomparables -> output
outputs
[], [1,2,3], 0, [5] -> []
[1, 2, 3], [], 0, [5] -> [0, 0, 0]
[9, 4, 3, 6, 3], [9, 8, 7, 6, 5, 4, 3, 2, 1], -1, [4] -> [1, -1, 7, 4, 7]
[8, 6, 7, 5, 3, 0, 9], [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6], 1000, [1] -> [12, 8, 14, 5, 1, 1000, 6]
Altri casi di test possono essere generati secondo necessità.
Regole aggiuntive:
- R ha indici basati su 1, ma sono accettabili indici coerenti basati su alternative. Quindi puoi usare indici che iniziano con 3 o 17 o qualsiasi altra cosa, ma questo deve essere coerente e devi indicarlo nella tua risposta.
- Se la lingua scelta ha un builtin che lo fa, si prega di implementare anche la propria soluzione.
- Le spiegazioni sono apprezzate.
Questo è code-golf , quindi vince la soluzione più breve in byte!
4è dentro incomparables, quindi non può essere abbinato. Se la tua lingua non è in grado di supportare numeri negativi, allora è necessario richiedere numeri non negativi, ma dichiaralo nella tua richiesta.
make.