(nie będzie znalezienie Find
lub łowienie tryCatch
, choć)
To druga część wieloczęściowej serii implementacji interesujących funkcji R. Część pierwszą można znaleźć tutaj .
Zadanie:
Masz zaimplementować funkcję Rmatch
w jak najmniejszej liczbie bajtów.
Wkład:
x
, prawdopodobnie pusta lista / tablica liczb całkowitychtable
, prawdopodobnie pusta lista / tablica liczb całkowitychnomatch
, jedna wartość całkowitaincomparables
, prawdopodobnie pusta lista / tablica liczb całkowitych
Wydajność:
- pojedyncza tablica / lista liczb całkowitych
O
o równej długościx
, gdzie każda wartośćO[i]
reprezentuje:- Indeks
j
z pierwszej wartości wtable
którymtable[j]==x[i]
nomatch
, wskazując, że żadna wartość w nietable
jest równax[i]
OR, którax[i]
znajduje się na liścieincomparables
.
- Indeks
Przypadki testowe
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]
W razie potrzeby można wygenerować więcej przypadków testowych.
Dodatkowe zasady:
- R ma wskaźniki oparte na 1, ale spójne wskaźniki alternatywne są dopuszczalne. Możesz więc użyć wskaźników, które zaczynają się od 3 lub 17, czy cokolwiek innego, ale musi to być spójne i musisz to wskazać w swojej odpowiedzi.
- Jeśli wybrałeś język, który to robi, zaimplementuj również własne rozwiązanie.
- Wyjaśnienia są mile widziane.
To jest golf golfowy , więc wygrywa najkrótsze rozwiązanie w bajtach!
code-golf
array-manipulation
Giuseppe
źródło
źródło
4
jest włączonyincomparables
, więc nie można go dopasować. Jeśli Twój język nie obsługuje liczb ujemnych, możesz wymagać liczb nieujemnych, ale podaj to założenie w swoim zgłoszeniu.make
.Odpowiedzi:
Galaretka ,
108 bajtów-2 dzięki Erikowi Outgolfer
Pełny program akceptujący cztery argumenty wiersza poleceń,
incomparables nomatch table x
który wypisuje galaretkową reprezentację * listymatch
wyników funkcji R.Wypróbuj online!
W jaki sposób?
np. z
incomparables nomatch table x
=[1,4], 2, [2,4], [4,3,2,1,0]
:* Pusta lista jest reprezentowana jako nic, lista dziesiąta jest reprezentowana tylko jako element, podczas gdy inne listy są zawarte
[]
i ograniczone przez,
źródło
R , 83 bajty
Wypróbuj online!
Unika
match
,%in%
isetdiff
.źródło
R , 55 bajtów
W tym przypadku kod nie wykorzystuje
match
swojej pełnej funkcjonalności, jest po prostu używany jakoindex
funkcja. Pierwsza odpowiedź R, więc prawdopodobnie niesamowicie nieefektywna bajtowo!Uwaga (podziękowania dla Giuseppe za informację) :
%in%
isetdiff
są one również wewnętrznie zaimplementowane za pomocąmatch
, więc całkowite pozbycie się tej zaskakująco przydatnej funkcji spowoduje bałagan . Dlatego istnieje 150 powtórzeń nagród bez terminu! (uwaga, żesetdiff
jest to dozwolone)Wypróbuj online!
lub...
R , 5 bajtów
Wypróbuj online!
źródło
%in%
imatch
; jeśli chcesz znaleźć dobrą odpowiedź golfową bez żadnej z tych funkcji (prawdopodobnie okropnych), naliczę to.match
poddanieifelse
korzystając z tej wskazówki: codegolf.stackexchange.com/a/97826/59530match
: SGalaretka ,
98 bajtówWypróbuj online!
Pełen program, który przyjmuje trzy argumenty:
[[table], incomparables]
,x
,nomatch
w tej kolejności.źródło
C # (interaktywny kompilator Visual C #) , 60 bajtów
Wypróbuj online!
źródło
Rubinowy , 44 bajty
Zero indeksowane.
Wypróbuj online!
źródło
R , 79 bajtów
Wypróbuj online!
R , 66 bajtów
Łączę moje rozwiązanie z częściami rozwiązania Nicka .
Wypróbuj online!
źródło
Japt , 14 bajtów
Spróbuj
źródło
Python 3 , 60 bajtów
Wypróbuj online!
źródło
R has 1-based indices, but a consistent alternative-based indices are acceptable.
Możesz więc wyjąć-~
i użyć indeksowania 0 dla -1 bajtów.t.index(v)if v in{*t}-{*i}else n
ma dokładnie taką samą liczbę bajtów, jak obecnev in{*t}-{*i}and-~t.index(v)or n
rozwiązanie, hahaPowerShell , 63 bajty
Wypróbuj online!
0-indeksowane
źródło
JavaScript (ES6), 53 bajty
Wypróbuj online!
źródło
Perl 6 , 45 bajtów
Wypróbuj online!
Anonimowy blok kodu, który pobiera dane wejściowe curry, lubi
f(table, nomatch, incomparables)(x)
i zwraca dopasowania 0 indeksowane.Wyjaśnienie:
źródło
$_∉d&&b.antipairs.Map{$_}||c
co działałoby dobrze, gdyby nie wartość falsey równa 0. Pierwsze ($ _: k) to świetne rozwiązanie, które pozwala uniknąć długiego przymusu antyparowego. Mapa.Węgiel drzewny , 14 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. 1-indeksowany. Wyjaśnienie:
źródło
C (gcc) , 125 bajtów
1-indeksowany.
Biorąc pod uwagę, że nie mogę użyć wartości wartownika w przekazywanych tablicach, muszę podać granice dla każdej tablicy.
Wypróbuj online!
źródło
Attache , 39 bajtów
Wypróbuj online!
Dość prosta weryfikacja. Zauważ, że kolejność argumentów różni się od kolejności dopasowania; w szczególności
x
jest ostatnim argumentem, a nie pierwszym, i odpowiada_4
powyższemu fragmentowi.Wyjaśnienie
źródło
Haskell,
5756 bajtówKolejność argumentem jest:
table
,nomatch
,incomparables
,x
.Wypróbuj online!
źródło
05AB1E , 7 bajtów
0-indeksowane. Dane wejściowe są w kolejności:
incomparables, table, x, nomatch
.Wypróbuj online.
Wyjaśnienie:
źródło