Weź dwa dane wejściowe, niepusty wektor / listę zawierającą cyfry 1
i 2
ciąg znaków (nie, 0/1
zamiast tego możesz nie wziąć ). Ciąg będzie jednym z następujących (pisane małymi literami, dokładnie tak, jak napisano poniżej:
increasing
decreasing
ones
twos
all
none
Jeśli ciąg ma wartość ____, należy zwrócić indeksy ___:
increasing
... gdzie lista zmienia się z1
na2
(każda2
następująca bezpośrednio po a1
)decreasing
... gdzie lista zmienia się z2
na1
(każda1
następująca bezpośrednio po a2
)ones
... wszystkich cyfr, które są1
twos
... wszystkich cyfr, które są2
all
... wszystkie cyfrynone
... brak cyfr.0
jest w porządku, jeśli lista ma indeks 1. Liczba ujemna jest w porządku, jeśli lista jest indeksowana na 0. Możesz także wypisać pustą listę lub ciąg znaków.
Przypadki testowe:
Są one indeksowane 1. Możesz wybrać, czy chcesz indeksować 1 czy 0. Te same wektory są używane dla różnych ciągów w przypadkach testowych.
--------------------------------
Vector:
1 1 2 2 2 1 2 2 1 1 2
String - Output
increasing - 3, 7, 11
decreasing - 6, 9
ones - 1, 2, 6, 9, 10
twos - 3, 4, 5, 7, 8, 11
all - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
none - 0 / []
------------------------------------
Vector:
1
String:
ones - 1
all - 1
decreasing / increasing / twos / none - 0 / []
Punktacja
Jak to jest golf-golf, wygrywa odpowiedź z najmniejszą liczbą bajtów.
Odpowiedzi:
JavaScript (Firefox 30-57),
7473 bajtyWyrażenia tablicowe to zgrabny sposób łączenia
map
ifilter
za jednym razem. Edycja: Zapisano 1 bajt dzięki @ edc65.źródło
Python 2 ,
13613111910897 bajtówlambda
funkcji.enumerate()
zamiastrange(len())
.0
-indexing (jak w odpowiedzi TFelda ) i grając"adinot".find(m[0])
w golfaord(m[0])/3-32
.Wypróbuj online!
źródło
1
czy2
można zmienić(l[j]>1)*(l[~-j]<2)
, aby(l[j]>l[~-j])
na 119 bajtów1
-indexed.enumerate()
Python 2 ,
117111110999792 bajtówWypróbuj online!
0
-indexedZamieniłem się na indeksowanie Jonathana i grałem
ord(m[0])/3-32
w golfaord(t[0])/3%7
źródło
l[i]==2
w golfal[i]>1
.Haskell ,
1128381 bajtówWypróbuj online! Przykładowe zastosowania:
"increasing"%[1,1,2,1,2]
. Wyniki są indeksowane 1.Częściowo zainspirowany odpowiedzią Lynn Haskell .
źródło
MATL ,
32313029 bajtówDane wyjściowe są oparte na 1 lub puste.
Wypróbuj online!
Wyjaśnienie
Kod oblicza sześć możliwych danych wyjściowych dla danych wejściowych tablicy, a następnie wybiera odpowiednie dane wyjściowe w zależności od danych wejściowych ciągu.
Aby wybrać wynik, dodawane są punkty kodowe ASCII wszystkich znaków wprowadzanego ciągu. Wynikiem modulo 9 zapewnia
6
,1
,5
,2
,7
,0
odpowiednio'increasing'
,'decreasing'
,'ones'
,'twos'
,'all'
,'none'
. Ponieważ wszystkie liczby wynikowe są różne, można to wykorzystać jako kryterium wyboru.Zamiast faktycznie wykonywać operację modulo 9 na sumie, lista możliwych danych wejściowych jest rozszerzana do 9 pozycji (niektóre z nich są fikcyjne), więc indeksowanie do tej listy odbywa się automatycznie modulo 9.
źródło
Python 2 , 92 bajty
Wypróbuj online!
źródło
Galaretka , 27 bajtów
Wypróbuj online!
-3 dzięki Jonathanowi Allanowi .
źródło
0
jest linkiem na samym dole, ale najwyraźniej toÇ
dziwniejsze, dzięki! (też właśnie nauczyłem się nowego słowa: p)Łuska , 27 bajtów
Wypróbuj online!
-9 dzięki H.PWiz .
Jestem dość dumny z tej odpowiedzi.
źródło
ΘẊ>
iΘẊ<
i`fN
0
jest ostatnim elementem.¨₆Żσa¨
zamiast tego skompresowany łańcuch będzie , dlatego nie skorzystałem z tej funkcji, dzięki. A teraz mogę powiedzieć, że wiąże Jelly .Java (OpenJDK 8) ,
266217213205172171155131 bajtówWypróbuj online!
źródło
y
jakochar
, można testy równości golf podobay.equals("a")
sięy=='a'
,y==97
lub nawety<98
.19
jestc
najwyższą wartością,c==19
jest równec>18
.s->a->{int i=0,l=0,c=s.charAt(0)-97;for(int e:a){if(++i>1&(c==8&e>l|c==3&e<l)|c==14&(l=e)<2|c>18&l>1|c<1)System.out.print(i+",");}}
Jq 1,5 , 131 bajtów
Oparte na podejściu xcali , ponieważ dopasowanie ciągów jest krótsze niż moja wersja tablicy.
Zakłada, że jq jest wywoływane z
-Rs
opcjami i dane wejściowe pojawiają się w dwóch wierszach, npRozszerzony:
Wypróbuj online!
źródło
Haskell , 91 bajtów
Wypróbuj online!
Laikoni uratował bajt.
źródło
(i,y,x)<-zip3[1..]l$l!!0:l
.J, 73 bajty
Byłbym ciekawy, jak można to znacznie skondensować - wierzę, że tak (10 znaków tylko dla wszystkich tych części programu!)
g
- czasownik pomocniczy do zwiększania i zmniejszania, co sprowadza się do porównania wartości serii nieskończoności\
rozmiaru 2@.
Wypróbuj online!
źródło
1=]
i2=]
nie działa? Co więcej, gdybyg
wziął liczbę jako lewy argument, a listę jako prawy argument i zwrócił indeksy2-/\
zastosowane do listy równe lewemu argumentowi. W ten sposób możesz przekazać to_1
lub1
znaleźć malejące i rosnące zamiast używać przysłówka.Java 8,
233229216 bajtówTakie podejście do Stringów skończyło się dłużej, niż się spodziewałem. Ale nawet sądząc, że jestem znacznie słabsza od drugiej odpowiedzi Java 8 , zdecydowałem się opublikować.
Z pewnością można grać w golfa, nawet przy takim podejściu. „Brak” i „wzrost / spadek” spowodowały głównie obejście, które kosztowało niektóre bajty ..
Wynik jest indeksowany 1.
Wyjaśnienie:
Wypróbuj tutaj.
źródło
Perl 5 , 71 + 2 (
-nl
) = 73 bajtyWypróbuj online!
Zmieniona logika jest w rzeczywistości taka sama jak poniższe wyjaśnienie, ale dopasowania wzorca zostały skrócone.
Poprzednio:
Wypróbuj online!
Nic nie zwraca, jeśli kryteria nie zostaną spełnione.
Wyjaśnione:
źródło