Od jakiegoś czasu nie mieliśmy żadnych przyjemnych, łatwych wyzwań, więc zaczynamy.
Biorąc pod uwagę listę liczb całkowitych większych niż i indeks jako dane wejściowe, wypisz procent pozycji przy danym indeksie całkowitej sumy listy.
Dane wyjściowe powinny być takie same, jak naturalna reprezentacja liczb zmiennoprzecinkowych / liczb całkowitych w twoim języku (liczba jednoargumentowa, dziesiętna, cyfry kościelne itp.). Jeśli zdecydujesz się zaokrąglić wynik w jakikolwiek sposób, musi on mieć co najmniej 2 miejsca po przecinku (w uzasadnionych przypadkach. nie musi być zaokrąglany, ale jest również całkowicie akceptowalny).
Indeksy mogą być indeksowane 1 lub 0 i zawsze będą się mieścić w granicach tablicy.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
Przykłady
Użycie 1-indeksowane i zaokrąglone do 2 dp
list, index => output
[1, 2, 3, 4, 5], 5 => 5 / 15 => 33.33
[7, 3, 19], 1 => 7 / 29 => 24.14
[1, 1, 1, 1, 1, 1, 1, 1, 1], 6 => 1 / 9 => 11.11
[20, 176, 194, 2017, 3], 1 => 20 / 2410 => 0.83
[712], 1 => 712 / 712 => 100
Lub jako trzy listy:
[[1, 2, 3, 4, 5], [7, 3, 19], [1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 176, 194, 2017, 3], [712]]
[5, 1, 6, 1, 1]
[33.33, 24.14, 11.11, 0.83, 100]
źródło
Odpowiedzi:
APL (Dyalog Unicode) , 9 bajtów SBCS
Anonimowa funkcja ukrytej poprawki. Trwa indeks jako lewy argument i lista jako prawy argument.
Wypróbuj online!
100
sto×
czasy⌷
indeksowany element÷
podzielony przez1⊥
suma (dosł. ocena podstawy 1) z⊢
właściwy argumentźródło
C # (interaktywny kompilator Visual C #) , 22 bajty
Wypróbuj online!
źródło
Python 3 , 26 bajtów
Nienazwana funkcja akceptująca liczbę całkowitą (indeks o indeksie 0) i listę zwracającą procent.
Wypróbuj online!
źródło
Galaretka , 7 bajtów
Dyadyczny link akceptujący liczbę całkowitą, indeks oparty na jednym z lewej strony i listę liczb po prawej, która daje wartość procentową.
Wypróbuj online!
W jaki sposób?
źródło
05AB1E , 6 bajtów
Pełny program przyjmujący indeks, a następnie listę. Wykorzystuje indeksowanie 0.
Wypróbuj online!
W jaki sposób?
źródło
R 28 bajtów
Wypróbuj online!
źródło
l
indeksun
, a nie tylko podzielićn
(patrz[7, 3, 19], 1
test )l[]
całymn
)C (gcc) , 64 bajty
0-indeksowane. Jedyną zabawną
1e2
rzeczą była realizacja, czylidouble
oszczędność bajtu100.
!Wypróbuj online!
źródło
Java (JDK) , 47 bajtów
Wypróbuj online!
źródło
1e2
zamiast100
? Czy to dlatego, że100
jest liczbą całkowitą i1e2
jest uważana za liczbę zmiennoprzecinkową?1e2
przenosi podwójny typ, któregoa[i]
i suma nie. Ponieważ wyzwanie wymaga zwrócenia liczb zmiennoprzecinkowych, tam mogę go użyć.(a,i)->1e2*a[i]/IntStream.of(a).sum()
. Edycja:> :( moja biedna strzała lambda(a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()
który ma 54 bajty. Moja obecna odpowiedź ma tylko 47 bajtów. Ponadtoa->i->
jest o jeden bajt krótszy niż(a,i)->
.Haskell ,
2018 bajtówOperator dynamiczny (
?
) przyjmujący indeks (0-indeksowany) po lewej stronie i listę po prawej, która daje wartość procentową.Wypróbuj online!
źródło
J , 10 bajtów
Wypróbuj online!
0-indeksowane
źródło
Wolfram Language (Mathematica) , 15 bajtów
Wypróbuj online!
Wprowadź jako
list, index
źródło
##[[]]
jest niesamowite!JavaScript (ES6), 30 bajtów
Pobiera dane wejściowe jako
(array)(index)
, gdzie indeks jest oparty na 0.Wypróbuj online!
źródło
MATL , 9 bajtów
Wypróbuj online!
Wyjaśnienie
Wypróbuj online!
źródło
PHP (7.4), 35 bajtów
Wypróbuj online!
Indeks wejściowy jest oparty na 0.
źródło
K (oK) ,
1514 bajtów-1 bajt dzięki ngn!
Wypróbuj online!
0-indeksowane
źródło
(x@y)
->x[y]
Czerwony ,
3129 bajtów-2 bajty dzięki ErikF
Wypróbuj online!
źródło
1e2
zamiast100.0
: Wypróbuj online! . To całkiem fajne, ile języków może użyć tej sztuczki!PowerShell , 34 bajty
Wypróbuj online!
Parametry wstydu są tak cholernie drogie w PowerShell.
źródło
Scratch 3.0
2423 bloki /239228 bajtówAlternatywnie w składni SB
Zaoszczędź 11 bajtów dzięki @JoKing
Wypróbuj od zera
Historia odpowiedzi
Alternatywnie w składni SB
Wypróbuj od zera
Dane wejściowe mają postać:
Naprawdę powinienem przestać to robić dla siebie. Ale to jest bardzo fajne!
źródło
repeat length of m
, abylength of m-1
i oszczędzić sobiedelete n
?delete n of m
co zasugerowałem, to by to zrobiłoPyth , 13 bajtów
Wypróbuj online!
Po raz pierwszy używam Pytha, więc zapewne są tu jakieś dość duże optymalizacje, ale nie wiem, gdzie one są ...
Indeks 0, przyjmuje dane wejściowe jako
list, index
źródło
Perl 5
-ap -MList::Util=Sum
, 19 bajtówWypróbuj online!
Weź listę, oddzieloną spacją w pierwszym wierszu, a indeks (oparty na 0) w drugim.
źródło
Japt , 8 bajtów
Spróbuj
źródło
TI-Basic , 12 bajtów (12 tokenów)
1-indeksowany
Pobiera listę
Ans
i pyta użytkownika o indeksPrzykładowy przebieg
Wyjaśnienie:
źródło
Retina 0.8.2 , 102 bajty
Wypróbuj online! Link zawiera przypadki testowe. Pobiera dane wejściowe jako
index;list,...
. Wyjaśnienie:Konwertuj na unary.
Indeksuj na liście.
Zsumuj listę.
Pomnóż żądaną wartość przez 10000 i podziel przez sumę z zaokrągleniem, dodając najpierw połowę sumy.
Upewnij się, że wynik ma co najmniej trzy cyfry.
Wstaw kropkę dziesiętną w drugim ostatnim miejscu.
źródło
Rubin ,
252321 bajtówWypróbuj online!
źródło
Perl 6 , 21 bajtów
Wypróbuj online!
Proste rozwiązanie, ponieważ nie mogę używać parametrów curry z
$b
indeksowanym parametrem. Zabawniejsze rozwiązanie, które nie musi obsługiwać dwóch parametrów za pomocąrotate
funkcji:Wypróbuj online!
Ale jest niestety o dwa bajty dłużej
źródło
Oktawa , 21 bajtów
Wypróbuj online!
źródło
MathGolf ,
76 bajtówIndeksowanie na podstawie 0.
Wypróbuj online.
Wyjaśnienie:
źródło
Ikona , 53 bajty
Wypróbuj online!
Jedyną interesującą rzeczą jest tutaj znalezienie sumy. Ikona była jednym z pierwszych języków posiadających generatory.
!
generuje wszystkie wartości listy,L
które są akumulowanes
. Zwykle musimy pisaćevery s+:=!L
, ale użyłem śledzenia wstecznego z&\z
, który sprawdza, czy nieistniejącaz
zmienna jestnon-null
, co nie jest, i wyciąga następną wartość z listy do wyczerpania.źródło
Współczynnik , 46 bajtów
Wypróbuj online!
0-indeksowane
źródło
Partia, 111 bajtów
Pobiera dane wejściowe jako indeks, a listę jako argumenty wiersza polecenia. Uwaga: Działa tylko w przypadku wartości indeksu od
1
do z9
powodu ograniczeń partii; można napisać wersję z indeksowaniem 0, która byłaby w stanie zindeksować pierwsze 10 elementów. Wyjaśnienie:Przesuń indeks do
%0
i listę do%1
...%9
(lub mniej). Należy jednak pamiętać, że partiashift
nie ma wpływu%*
.Uzyskaj wszystkie parametry oddzielone spacją.
Zmień spacje na
+
s i oblicz arytmetycznie, biorąc w ten sposób sumę, ale odejmij indeks. Następnie zindeksuj listę, pomnóż przez 10000, dodaj połowę sumy i podziel przez sumę. Na koniec dwukrotnie wykonaj divmod o 10, aby wygenerować miejsca dziesiętne. (%
Operator arytmetyczny ma specjalne znaczenie w partii i zwykle wymaga podwojenia, alecall
wtedy wymaga dalszego podwojenia).Wynik i miejsca dziesiętne.
źródło