Wyzwanie
Zadanie jest proste. Biorąc pod uwagę tablicę oraz pierwszą i ostatnią wartość: Zwraca pierwszy z ostatnich po pierwszym i ostatni z pierwszych przed ostatnim.
Lub po prostu: biorąc pod uwagę tablicę, var1, var2.
Przykładowa tablica:
[var2,, var1,, var2,, var2, var1, var2,]
Powrót:
- Indeks pierwszego var2 po prawej stronie pierwszego var1, który pojawia się w tablicy.
[Zm2,, pierwszy zm1 ,, pierwszy zm2 , drugi zm2, zm1 trzeci zm2,]
- Indeks pierwszego var1 po lewej stronie ostatniego var2, który pojawia się w tablicy.
[var2,, drugi var1,, var2,, var2, pierwszy var1 , ostatni var2 ,]
Wejście
Dwie różne dodatnie liczby całkowite
Tablica dodatnich liczb całkowitych
Wynik
Indeks odpowiedzi, w kolejności
Zasady
Tablica będzie zawierać co najmniej jedną z każdej zmiennej (minimalny rozmiar 2)
Załóżmy, że dane wejściowe działają
Przykład:
0, 1 [1, 0]
lub podobny nie powiedzie się
Przykłady
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
źródło
źródło
var1
być równyvar2
?9, 2
,6, 3
i0, 1
odpowiednio (a plus jeden, jeśli wyjście 1 indeksowane).Odpowiedzi:
Galaretka , 17 bajtów
Wypróbuj online!
źródło
Python 2 , 72 bajty
Wypróbuj online!
źródło
APL (Dyalog Classic) ,
2927 bajtówWypróbuj online!
monituje o tablicę, a następnie o var1, var2
źródło
JavaScript (ES6), 63 bajty
Wypróbuj online!
Skomentował
Alternatywne wersje
Korzystając z wbudowanych JS, prostsza odpowiedź to 79 bajtów:
który można lekko skompresować do 75 bajtów:
Wypróbuj online!
Edycja : @Neil udało się zredukować do bardzo ładnego 67-bajtowego :
Wypróbuj online!
źródło
lastIndexOf
przyjmuje dwa parametry, dzięki czemu prosta odpowiedź jest zmniejszana do 70 bajtów, a ja mogłem wymyślić następującą 67-bajtową wersję:(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 bajtów-4 bajty dzięki ovs
Wypróbuj online!
źródło
a-1-b == a + (-b-1) == a + ~b
może być użyty dla -1 bajtu, przypisanieindex
funkcji do nazwy powoduje, że jest to 93 bajtyJapt ,
272524 bajtówInspirowany odpowiedzią @Arnauld
Dzięki @Shaggy -2 bajty i @ETHproductions -1 bajt
Właśnie zacząłem od skoku, więc musi to być lepszy sposób. \
Wypróbuj online!
źródło
)
na startery, aby zaoszczędzić 2 bajty.X=WbU)...+X
: Wypróbuj online! Walczę też o znalezienie krótszej metody ...APL (Dyalog Unicode) , 42 bajty SBCS
Anonimowa funkcja ukrytej poprawki. Bierze var1, var2 jako lewy argument, a tablicę jako prawy argument.
Wypróbuj online!
źródło
R , 81 bajtów
Wypróbuj online!
(1-indeksowany)
źródło
MATL , 27 bajtów
Wypróbuj online!
Alternatywnie dla tego samego bajtu:
27 bajtów
Wypróbuj online!
Drugi łatwiej wyjaśnić:
Druga część kodu robi to samo, z wyjątkiem tych zmian:
2G
dla drugiego wejścia (var1) i3G
pierwszego trzeciego wejścia (var2) zamiast niejawnego wejścia lubi
, ponieważ zostały one wykorzystanePY>P
(odwróć tablicę od lewej do prawej, uzyskaj skumulowane maksimum, odwróć) zamiastY>
, aby uzyskać 1 s przed ostatnim wystąpieniem zamiast po pierwszym wystąpieniuf0)
aby uzyskać ostatnie miejsce, w którym oba warunki są spełnione, zamiast pierwszego (działa, ponieważ MATL używa indeksowania modułowego, więc 0 odnosi się do ostatniego indeksu tablicy)źródło
MATLAB (80 bajtów)
Wejście jest
x
,y
ia
. Ponieważ MATLAB ma indeks 1, należy dodać 1 do przypadków testowych.Przypadek testowy:
źródło
Java 8, 114 bajtów
Lambda bierze a
java.util.List<Integer>
i dwaint
s (var1, var2) i zwraca parę oddzieloną przecinkami.Wypróbuj online
źródło
Kotlin , 132 bajty
Wypróbuj online!
źródło
Julia ,
7164 bajtówdzięki Sundar i jego
find(A.==x)[]
zamiastfindfirst(A,x))
..
źródło
find(A.==x)[]
zamiastfindfirst(A,x)
.