Musisz wziąć dwie listy dodatnich liczb całkowitych jako dane wejściowe, nazwijmy je n i m .
Możesz założyć, że:
- Wszystkie liczby całkowite n są częścią m
- Wszystkie liczby całkowite wm są unikalne
- Listy nie są puste
Wyzwanie: Zwróć wskaźniki, w których znajdziesz wartości w n , w m .
Może to być mylące, ale myślę, że przypadki testowe sprawią, że zadanie będzie całkiem jasne. Przykłady są indeksowane 1, możesz wybrać indeksowanie 0, jeśli chcesz (proszę określić).
n = 5 3 4 1
m = 6 8 4 1 2 5 3 100
output: 6 7 3 4 // 5 is in the 6th position of m
// 3 is in the 7th position of m
// 4 is in the 3rd position of m
// 1 is in the 4th position of m
n = 5 3 4 9 7 5 7
m = 3 4 5 7 9
output: 3 1 2 5 4 3 4
n = 1 2 3 4 5 6
m = 1 2 3 4 5 6
output: 1 2 3 4 5 6
n = 16 27 18 12 6 26 11 24 26 20 2 8 7 12 5 22 22 2 17 4
m = 15 18 11 16 14 20 37 38 6 36 8 32 21 2 31 22 33 4 1 35 3 25 9 30 26 39 5 23 29 10 13 12 7 19 24 17 34 27 40 28
output: 4 38 2 32 9 25 3 35 25 6 14 11 33 32 27 16 16 14 36 18
n = 54
m = 54
output: 1
Zwycięzcy będą najkrótszymi rozwiązaniami w każdym języku.
To jest bardzo miłe meta-post na drodze!
Odpowiedzi:
V , 26 bajtów
Wypróbuj online!
Jest to bardzo dziwne i nieuczciwe rozwiązanie, ponieważ V ma niewiele lub nie ma pojęcia liczb. Dane wejściowe są w tym formacie:
Ze spacją na końcu każdej linii.
Hexdump:
Wyjaśnienie:
Jeśli to nie wyjaśnia, oto przykłady bufora na różnych etapach, przez które przechodzi pętla:
Etap 1 (
|
jest kursorem)Etap 2:
Etap 3:
Etap 4:
Etap 5:
Etap 6:
Etap 7:
Powrót do etapu 1:
źródło
Python 2 , 25 bajtów
Wypróbuj online!
Zauważ, że używa to indeksowania 0.
źródło
APL (Dyalog) , 1 bajt
Wypróbuj online!
Uwaga:
⍳
funkcja nie przyjmuje skalarów jako lewego argumentu, więc aby nadać mu lewy argument54
, musisz przekształcić go w tablicę, używając,
podobnie(,54)
.źródło
Mathematica, 25 bajtów
Przyjmuje dwa dane wejściowe
m
in
zwraca indeksy 1 dlan
inm
.źródło
Siatkówka ,
323130 bajtów1 bajt zapisany dzięki Kritixi Lithos i 1 bajt dzięki Martinowi Enderowi
Wykorzystuje indeksowanie 0. Wejście ma końcowe spacje w każdym wierszu.
Wypróbuj online!
Wyjaśnienie
Tutaj zamieniamy każdą liczbę w pierwszym wierszu na liczbę liczb przed tą samą liczbą w drugim wierszu.
Następnie usuwamy drugi wiersz, pozostawiając tylko nowy pierwszy wiersz jako wynik.
źródło
Java ,
10481 bajtów1 bajt dzięki Business cat.
Wypróbuj online!
źródło
C #, 32 bajtów
Jest to kod jako wyrażenie lambda, więc powinien być poprawny.
Rozwiązanie ma indeks oparty na 0. Myślę, że to całkiem proste, jak to działa - po prostu bierze elementy n i wybiera indeksy elementów wm.
źródło
Oktawa, 25 bajtów
Wypróbuj online!
źródło
Haskell , 32 bajty
Wypróbuj online!Jeden indeksowany.
Inne próby:
źródło
k, 1
Jest to wbudowany operator
k
i korzysta z indeksowania zerowego.Przykład:
źródło
05AB1E , 5 bajtów
Wypróbuj online!
źródło
Galaretka , 3 bajty
Wypróbuj online!
Okular
źródło
JavaScript (ES6), 28 bajtów
Bierze tablice w składni curry
(n)(m)
. 0-indeksowane.źródło
Perl 6 , 31 bajtów
Spróbuj
Rozszerzony:
0 zindeksowanych
źródło
Japt , 4 bajty
Przetestuj online!
Wyjaśnienie
Nie ma tu wiele do wyjaśnienia, ale pokazuje ciekawą funkcję Japt. Zwykle przekazujesz funkcję do
m
:Jest to w zasadzie
U.map(X => V.indexOf(X))
(U
niejawne). Jednak gdy wykonujesz tylko jedną operację między dwiema wartościami (b
tutaj, onV
iX
), możesz po prostu podać operatorowi i drugą wartość, a Japt wykona z niej funkcję. Oznacza to, żemX{X+2}
można grać w golfam+2
.Nie działa to jednak, gdy wartości są w niewłaściwej kolejności (
mbV
byłoby to skrót odmX{XbV}
). Aby obejść ten problem, możesz wstawić wykrzyknik do operatora, który mówi Japtowi, aby podmienił operandy. To kosztuje dodatkowy bajt, ale wciąż jest o kilka bajtów krótszy niż alternatywa. A teraz wiesz trochę więcej o Japt.źródło
MATL , 2 bajty
Używa to indeksowania 1. Wypróbuj online!
Wyjaśnienie
Meta-funkcja
&
wskazuje, że następna funkcja użyje (specyficznej dla funkcji) dodatkowej domyślnej specyfikacji wejścia / wyjścia. Dla funkcjim
(ismember
)&
określa, że zostanie wygenerowane drugie wyjście. Zawiera on indeks (pierwszego wystąpienia) każdego wpisu pierwszego wejścia na drugim wejściu.źródło
Haskell, 34 bajty
Przykład użycia:
[5,3,4,9,7,5,7] # [3,4,5,7,9]
->[3,1,2,5,4,3,4]
Wbudowane
elemIndex
jestData.List
i dlatego jest dłuższe niż powyższa wersja. Pętla zewnętrzna przechodzi,n
a pętla wewnętrzna przez pary(i,e)
gdziei
jest indekseme
inm
. Zachowaji
gdziee
równa się bieżącemu elementowin
.źródło
R,
205 bajtów1-indeksowany;
match
jest wbudowaną funkcją, która znajduje wskaźniki na drugim wejściu elementów pierwszego, tj.match(n,m)
daje pożądaną odpowiedździęki @flodel za zwrócenie uwagi, że zwrócenie funkcji jest całkowicie akceptowalne jako odpowiedź!
Wypróbuj online!
źródło
match
(5 bajtów) byłoby dobrym rozwiązaniem.Pyth , 4 bajty
Wypróbuj online!
Zauważ, że używa to indeksowania 0.
źródło
J , 2 bajty
To nie jest kompletny program, ale wbudowana funkcja.
Użyj go jako takiego:
Wypróbuj online!
Zauważ, że używa to indeksowania 0.
źródło
CJam , 4 bajty
Anonimowy blok, który oczekuje argumentów na stosie i pozostawia wynik na stosie.
Wykorzystuje indeksowanie 0.
Wypróbuj online!
źródło
Haskell, 43 bajty
źródło
Clojure, 25 bajtów
0-indeksowane.
źródło
Perl 5,
3834 bajtów4 bajty zapisane dzięki Dadzie
1-indeksowany. Staje wykazy m i n jako pojedyncze liście, jak
f(@m,@n)
. Chodzix0
tylko o to, aby wyjście nie zaczynało się od1,2,3,4,5
itp.źródło
sub{...}
możesz zaoszczędzić 2 bajty. Możesz także użyćx0
zamiast&&()
zapisać dwa kolejne bajty.PHP, 56 bajtów
Wersje online
0 Indeksowanie
dane wyjściowe jako ciąg
PHP, 65 bajtów
Dane wyjściowe jako tablica
PHP, 78 bajtów
obejście z
array_map
dla nietypowych tablic zamień na
array_flip($_GET[1])[$v]
array_search($v,$_GET[1])
źródło
Bash + coreutils, 51
Wypróbuj online .
Poprzednia odpowiedź:
Wypróbuj online .
źródło
Java 7, 80 bajtów
0-indeksowane
Wyjaśnienie:
Kod testowy:
Wypróbuj tutaj.
Wydajność:
źródło