Desafío
La tarea es simple. Dada una matriz y un primer y último valor: Devuelve el primero del último después del primero, y el último del primero antes del último.
O simplemente: dada una matriz, var1, var2.
Matriz de ejemplo:
[var2`` var1`` var2`` var2, var1, var2,]
Regreso:
- El índice de la primera var2 en el lado derecho de la primera var1 que aparece en la matriz.
[Var2,, primero var1 ,, primero var2 ,, segunda var2, var1, var2 tercero,]
- El índice de la primera var1 en el lado izquierdo de la última var2 que aparece en la matriz.
[var2`` segundo var1`` var2`` var2, primer var1 , último var2 ,]
Entrada
Dos enteros positivos distintos
Matriz de enteros positivos
Salida
Índice de respuestas, en orden
Reglas
La matriz contendrá al menos una de cada variable (tamaño mínimo de 2)
Suponga que las entradas funcionan
Ejemplo:
0, 1 [1, 0]
o similar fallaría
Ejemplos
Input
First = 2; Last = 4; [0, 2, 4, 2, 3, 1, 4, 0, 1, 2, 4, 9]
Output
2, 9
Input
First = 4; Last = 2; [0, 2, 4, 2, 3, 1, 4, 0, 1, 2, 4, 9]
Output
3, 6
Input
First = 0; Last = 1; [0, 1]
Output
1, 0
code-golf
array-manipulation
WretchedLout
fuente
fuente
var1
ser igual avar2
?9, 2
,6, 3
y0, 1
respectivamente (o más uno si la salida está indexada en 1).Respuestas:
Jalea , 17 bytes
Pruébalo en línea!
fuente
Python 2 , 72 bytes
Pruébalo en línea!
fuente
APL (Dyalog Classic) ,
2927 bytesPruébalo en línea!
solicita la matriz y luego var1, var2
fuente
JavaScript (ES6), 63 bytes
Pruébalo en línea!
Comentado
Versiones alternativas
Usando JS incorporado, una respuesta más directa es de 79 bytes:
que se puede comprimir ligeramente a 75 bytes:
Pruébalo en línea!
Editar : @Neil logró reducirlo a un muy agradable 67 bytes :
Pruébalo en línea!
fuente
lastIndexOf
toma dos parámetros, por lo que reduce la respuesta directa a 70 bytes, y pude encontrar la siguiente versión de 67 bytes:(x,y,a,f=s=>a[z=y,y=x,x=z,s+=`ndexOf`](x,a[s](y)))=>[f`i`,f`lastI`]
Python 3 ,
9793 bytes-4 bytes gracias a ovs
Pruébalo en línea!
fuente
a-1-b == a + (-b-1) == a + ~b
puede usarse para -1 byte, asignar laindex
función a un nombre lleva esto a 93 bytesJapt ,
272524 bytesInspirado en la respuesta de @Arnauld
Gracias @Shaggy -2 bytes y @ETHproductions -1 byte
Acabo de comenzar con Japt, así que debe ser una mejor manera.
Pruébalo en línea!
fuente
)
para empezar para ahorrar 2 bytes.X=WbU)...+X
: ¡ Pruébelo en línea! Aunque también estoy luchando por encontrar un método más corto ...APL (Dyalog Unicode) , 42 bytes SBCS
Función de infijo tácito anónimo. Toma var1, var2 como argumento izquierdo y la matriz como argumento derecho.
Pruébalo en línea!
fuente
R , 81 bytes
Pruébalo en línea!
(1 indexado)
fuente
MATL , 27 bytes
Pruébalo en línea!
Alternativamente para el mismo bytecount:
27 bytes
Pruébalo en línea!
El segundo es más fácil de explicar:
La segunda parte del código hace lo mismo, excepto por estos cambios:
2G
para la segunda entrada (var1) y la3G
primera tercera entrada (var2) en lugar de la entrada implícita oi
, ya que se han consumidoPY>P
(voltear matriz de izquierda a derecha, obtener el máximo acumulado, voltear hacia atrás) en lugar deY>
, para obtener 1s antes de la última aparición en lugar de después de la primera apariciónf0)
para obtener el último lugar donde ambas condiciones son verdaderas, en lugar del primer lugar (funciona porque MATL usa indexación modular, por lo que se toma 0 para referirse al último índice de la matriz)fuente
MATLAB (80 bytes)
De entrada es
x
,y
ya
. Como MATLAB está indexado en 1, debe agregar 1 a los casos de prueba.Caso de prueba:
fuente
Java 8, 114 bytes
Una lambda que toma ay
java.util.List<Integer>
dosint
s (var1, var2) y devuelve un par separado por comas.Pruébalo en línea
fuente
Kotlin , 132 bytes
Pruébalo en línea!
fuente
Julia ,
7164 bytesgracias a sundar y su en
find(A.==x)[]
lugar defindfirst(A,x))
..
fuente
find(A.==x)[]
lugar defindfirst(A,x)
.