Défi
La tâche est simple. Étant donné un tableau et une première et une dernière valeur: renvoyer le premier du dernier après le premier et le dernier du premier avant le dernier.
Ou tout simplement: étant donné un tableau, var1, var2.
Exemple de tableau:
[var2,, var1,, var2,, var2, var1, var2,]
Revenir:
- Index du premier var2 sur le côté droit du premier var1 qui apparaît dans le tableau.
[Var2,, premier var1 ,, premier var2 , deuxième var2, var1, var2 troisième,]
- L'index du premier var1 sur le côté gauche du dernier var2 qui apparaît dans le tableau.
[var2,, second var1,, var2,, var2, premier var1 , dernier var2 ,]
Contribution
Deux entiers positifs distincts
Tableau d'entiers positifs
Production
Index des réponses, dans l'ordre
Règles
Le tableau contiendra au moins une de chaque variable (taille minimale de 2)
Supposons que les entrées fonctionnent
Exemple:
0, 1 [1, 0]
ou similaire échouerait
Exemples
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
la source
la source
var1
être égal àvar2
?9, 2
,6, 3
et0, 1
(ou plus un si la sortie est indexée sur 1).Réponses:
Gelée , 17 octets
Essayez-le en ligne!
la source
Python 2 , 72 octets
Essayez-le en ligne!
la source
APL (Dyalog Classic) ,
2927 octetsEssayez-le en ligne!
invite pour le tableau, puis pour var1, var2
la source
JavaScript (ES6), 63 octets
Essayez-le en ligne!
Commenté
Versions alternatives
En utilisant les fonctionnalités intégrées de JS, une réponse plus simple est de 79 octets:
qui peut être légèrement compressé à 75 octets:
Essayez-le en ligne!
Edit : @Neil a réussi à le réduire à un très joli 67 octets :
Essayez-le en ligne!
la source
lastIndexOf
prend deux paramètres, ce qui réduit la réponse simple à 70 octets, et j'ai pu proposer la version 67 octets suivante:(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 octets-4 octets grâce aux ovs
Essayez-le en ligne!
la source
a-1-b == a + (-b-1) == a + ~b
peut être utilisé pour -1 octet, attribuer laindex
fonction à un nom obtient ceci à 93 octetsJapt ,
272524 octetsInspiré de la réponse @Arnauld
Merci @Shaggy -2 octets et @ETHproductions -1 octet
Je viens de commencer avec japt, ce doit donc être une meilleure solution. \
Essayez-le en ligne!
la source
)
des entrées pour économiser 2 octets.X=WbU)...+X
: Essayez-le en ligne! J'ai aussi du mal à trouver une méthode plus courte ...APL (Dyalog Unicode) , 42 octets SBCS
Fonction infixe tacite anonyme. Prend var1, var2 comme argument de gauche et le tableau comme argument de droite.
Essayez-le en ligne!
la source
R , 81 octets
Essayez-le en ligne!
(1 index)
la source
MATL , 27 octets
Essayez-le en ligne!
Alternativement pour le même bytecount:
27 octets
Essayez-le en ligne!
Le second est plus facile à expliquer:
La deuxième partie du code fait la même chose, à l'exception de ces modifications:
2G
pour la deuxième entrée (var1) et la3G
première 3e entrée (var2) au lieu de l'entrée implicite oui
, puisque celles-ci ont été consomméesPY>P
(inverser le tableau de gauche à droite, obtenir le maximum cumulatif, revenir en arrière) au lieu deY>
, pour obtenir 1 s avant la dernière occurrence plutôt qu'après la première occurrencef0)
pour obtenir le dernier endroit où les deux conditions sont vraies, au lieu de la première place (fonctionne parce que MATL utilise l'indexation modulaire, donc 0 est pris pour se référer au dernier index du tableau)la source
MATLAB (80 octets)
L' entrée est
x
,y
eta
. MATLAB étant indexé 1, vous devez ajouter 1 aux cas de test.Cas de test:
la source
Java 8, 114 octets
Un lambda prenant un
java.util.List<Integer>
et deuxint
s (var1, var2) et retournant une paire séparée par des virgules.Essayez-le en ligne
la source
Kotlin , 132 octets
Essayez-le en ligne!
la source
Julia ,
7164 octetsmerci à Sundar et à lui
find(A.==x)[]
au lieu defindfirst(A,x))
..
la source
find(A.==x)[]
au lieu defindfirst(A,x)
.