(non troveremo Find
o 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 match
funzione 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
O
di uguale lunghezza ax
, in cui ciascun valoreO[i]
rappresenta:- L'indice
j
del primo valore intable
wheretable[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
.