Wyzwanie:
Wkład:
Posortowana lista dodatnich liczb całkowitych.
Wynik:
Liczba liczb całkowitych, które wciąż mają dokładnie ten sam indeks, po obróceniu cyfr w każdej liczbie całkowitej jej indeks razy w lewo i ponownym posortowaniu zmodyfikowanej listy.
Przykład:
Dane wejściowe: Dane [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
wyjściowe (indeksowanie 0): Dane 6
wyjściowe (indeksowanie 1):5
Dlaczego?
Indeksowanie na podstawie 0:
After rotating each: [8,94,73,102,592,276,8227,3338,9217,63784,89487,7887471]
Sorted again: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Input indices: 0 1 2 3 4 5 6 7 8 9 10 11
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Modified indices: 0 2 1 3 5 4 7 6 8 9 10 11
Equal indices: ^ ^ ^ ^ ^ ^
So the output is: 6
Indeksowanie na podstawie 1:
After rotating each: [8,49,37,021,925,762,2278,3383,2179,37846,94878,8874717]
Sorted again: [8,(0)21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Input indices: 1 2 3 4 5 6 7 8 9 10 11 12
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Modified indices: 1 4 3 2 6 5 9 7 8 10 11 12
Equal indices: ^ ^ ^ ^ ^
So the output is: 5
Zasady konkursu:
- Lista wejściowa z pewnością zawiera wyłącznie dodatnie liczby całkowite.
- Lista wejściowa gwarantuje posortowanie od najniższej do najwyższej.
- Lista wejściowa z pewnością zawiera co najmniej dwa elementy.
- Jak widać powyżej, zarówno indeksowanie oparte na 0, jak i oparte na 1 jest dozwolone. Podaj w swojej odpowiedzi, którego z dwóch użyłeś, ponieważ wyniki mogą się odpowiednio różnić!
- Wiodące
0
s po obracaniu są ignorowane, co można zobaczyć na powyższym przykładzie opartym na 1, gdzie liczba całkowita102
staje się021
po obracaniu, a następnie jest traktowana jako21
. - Liczby całkowite są gwarantowane jako unikalne na liście wejść i gwarantują, że pozostaną unikalne po zakończeniu rotacji.
- Zauważ, że patrzymy tylko na pozycje obróconych liczb całkowitych w korelacji z pozycjami wejścia, a nie z wartościami listy wejść. Aby wyjaśnić, co mam na myśli przez to: dzięki liście danych wejściowych
[1234,3412]
i indeksowaniu opartemu na 1, lista staje się[2341,1234]
po obróceniu każdej liczby całkowitej liczbę indeksów razy, a następnie po sortowaniu[1234,2341]
. Chociaż zarówno oryginalna lista wejściowa, jak i lista obrócona zawiera liczbę całkowitą1234
w pozycji wiodącej, nie są one takie same! Obrócony1234
był3412
wcześniej. Dlatego indeksowane wyjście 1 dla tej listy wejściowej jest0
, ponieważ dwie liczby całkowite zamieniły swoje pozycje. - Dane wejściowe są elastyczne. Może być listą / strumieniem / tablicą liczb całkowitych / ciągów znaków / tablic cyfrowych itp. Podaj, czego użyłeś, jeśli nie przyjmujesz danych wejściowych jako liczb całkowitych.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
Input: [8, 49, 73, 102, 259, 762, 2782, 3383, 9217, 37846, 89487, 7471788]
0-based output: 6
1-based output: 5
Input: [1234, 3412]
0-based output: 2
1-based output: 0
Input: [2349, 2820, 17499, 21244, 29842, 31857, 46645, 56675, 61643, 61787]
0-based output: 3
1-based output: 0
Input: [4976, 11087, 18732, 22643, 52735]
0-based output: 2
1-based output: 3
Input: [4414, 5866, 7175, 8929, 14048, 16228, 16809, 19166, 24408, 25220, 29333, 44274, 47275, 47518, 53355]
0-based output: 4
1-based output: 4
Input: [11205, 16820, 63494]
0-based output: 1
1-based output: 3
Generuj więcej losowych przypadków testowych za pomocą (lub czerpiąc inspirację) z tego nieoznakowanego programu 05AB1E , w którym dane wejściowe są wielkości losowej listy (UWAGA: dane wyjściowe tego generatora mogą być niezgodne z regułą: „ Liczby całkowite są gwarantowane unikalne w listę wejściową i gwarantuje się, że pozostaną unikalne po zakończeniu rotacji ”, więc należy o tym pamiętać podczas korzystania z niej).
Odpowiedzi:
R ,
114107 bajtów-5 bajtów dzięki Giuseppe.
Outgolfed by digEmAll.
Wypróbuj online!
0-indeksowane.
Wersja bez golfa:
Aby obrócić
b
cyfry liczby całkowitej wedługj
pozycji, kod powtarza cyfry wiele razy, a następnie przenosi cyfry w pozycjachj+1
doj+b
. Na przykład, aby obrócić102
4 razy, pozostaw wartości oznaczonex
(pozycje od 5 do 7):więc wynik jest
021
.źródło
seq(a=...)
. Oczekuję, że jest trochęMap
magii do wykonania, ale moje próby pozostawiły liczbę bajtów w najlepszym wypadku na niezmienionym poziomie.Map
może być trochę za drogie, ponieważfunction
płyta kotła ma co najmniej 9 bajtów, ale jeśli przełączysz się na indeksowanie 0, możemy zrobić 109 bajtówseq(a=l)
może to byćseq(l)
tak długo, jak wejście ma co najmniej 2 elementy (zapytałem, czy to jest OK).05AB1E , 9 bajtów
Wypróbuj online!
Korzysta z indeksowania opartego na 0.
Wyjaśnienie:
źródło
Japt
-x
,109 bajtówW oparciu o 0
Spróbuj
źródło
Galaretka , 9 bajtów
Wypróbuj online!
Łącze monadyczne, które pobiera listę liczb całkowitych i zwraca liczbę całkowitą wskazującą liczbę liczb całkowitych, które pozostają na miejscu po wykonaniu obrotu za pomocą indeksowania 1.
Wyjaśnienie
źródło
Python 2 ,
1041009793 bajtówWypróbuj online!
Indeksowanie na podstawie 0.
Najpierw obraca każdą liczbę, a następnie porównuje wynik z wynikiem, ale sortuje.
Zapisano:
źródło
input()
:)def
razu (w Pythonie 2 są całkiem bezużyteczne, w przeciwieństwie do Pythona 3).s
.R ,
908885 bajtówWypróbuj online!
Kod rozwinięty z wyjaśnieniem:
źródło
J ,
2826 bajtów-2 bajty dzięki Jonaszowi
Wypróbuj online!
źródło
"0
( Wypróbuj online! ), Ale poza tym nie widziałem sposobu na dalszą grę w golfa.Stax ,
1110 bajtówUruchom i debuguj
Ten program używa indeksowania opartego na 0 i przyjmuje dane wejściowe jako tablicę ciągów. Zaoszczędziłem bajt, korzystając z nowych danych wejściowych clarificatinos.
źródło
Perl 5
-pa
, 80 bajtówWypróbuj online!
Pobiera dane wejściowe jako liczby oddzielone spacjami na STDIN; daje wynik oparty na 1.
źródło
Pyth , 15 bajtów
Wypróbuj online! Wykorzystuje indeksowanie 0.
źródło
s
- oryginalna wersja kodu miałav
ten sam efekt. Zmienię go ponownieAPL + WIN,
23, 2119 bajtów2 bajty zapisane przez wprowadzenie liczb całkowitych jako zagnieżdżonego wektora znaków
1 indeksowany.
Wypróbuj online! Dzięki uprzejmości Dyalog Classic
źródło
JavaScript (Node.js) ,
1079995 bajtów-8 bajtów Dzięki @Shaggy za akceptację tablicy ciągów zamiast. Dalsze 4 bajty z tego golfa. Tym razem nie spowoduje błędu pamięci.
Wypróbuj online!
JavaScript (Node.js) ,
111107 bajtów-4 bajty Dzięki @Arnauld!
Wypróbuj online!
JavaScript (Node.js) ,
113111 bajtówWypróbuj online!
0-indeksowane. Może powodować błąd pamięci dla bardzo dużych wpisów.
źródło
Perl 6 , 50 bajtów
Wypróbuj online!
Indeksowanie na podstawie 0. Wystawiony również błąd Rakudo .
Wyjaśnienie
źródło
PHP ,
159141134130 bajtówWypróbuj online!
Indeksowanie zerowe.
Nie golfowany:
źródło
.=''
?K (Kona) ,
25 21bajtów-4 bajty dzięki ngn!
Wypróbuj online!
źródło
{.:y!x}'[$x;t:!#x]
->.:'(t:!#x)!'$x
Zapytanie T-SQL, 99 bajtów
Sql nie ma metody rotacji, więc musiałem zaimplementować własną składnię, ponieważ jest to zapytanie, musiało zostać wykonane bez zapętlania.
Indeksowanie na podstawie 0.
Wykorzystanie zmiennej tabeli jako danych wejściowych.
Wypróbuj online
źródło
Ikona , 141 bajtów
Wypróbuj online!
Indeksowanie 1
źródło
Perl 5 , 104 bajtów
Wypróbuj online!
Indeksowanie oparte na 0 w Perlu. Nie golfił i skomentował:
źródło
Rubinowy
-ap
, 77 bajtów1-indeksowany. Został wcześniej usunięty temp, ponieważ brakowało części specyfikacji.
-p
odczytuje linię STDIN i wyświetla$_
na końcu.-a
dzieli czytaną linię spacjami i zapisuje ją jako$F
.Wypróbuj online!
źródło
[...].join.to_i
zeval [...]*''
eval
zinterpretuje ją jako liczbę podstawową 8, która może zepsuć nasze liczby ...Wolfram Language (Mathematica) , 65 bajtów
Wypróbuj online!
Na podstawie 1. Traktujemy dane wejściowe jako listę list cyfr, co działa, ponieważ Mathematica porządkuje listy według długości, a następnie leksykograficznie, tj. Tak jak oryginalne liczby.
źródło
Bash ,
204201 bajtówJedyną interesującą rzeczą (prawdopodobnie) jest użycie
eval
. Algorytm jest również niezręczny, ponieważ tworzy posortowaną listę, a następnie odczytuje ją w celu ustalenia zmienionego indeksu / indeksów.Rozwiązanie oparte na 1. Moje podziękowania dla @RobinRyder za pomocny algorytm rotacji.
Wypróbuj online!
Zmieniony kod po komentarzach Kevina; Wypróbuj online!
źródło
;}
. Możesz także zmienić swoją pierwszą pętlę nafor((i=0;++i<=$#;));
.Scala ,
200160 bajtówWypróbuj online!
0-indeksowane. 160 znaków po usunięciu wcięcia i znaku nowej linii. Wyświetla 6:
źródło