Wir hatten seit einiger Zeit keine schönen, einfachen Herausforderungen mehr, also können wir loslegen.
Geben Sie bei einer Liste von ganzen Zahlen größer als und einem Index als Eingabe den Prozentsatz des Elements am angegebenen Index der Gesamtsumme der Liste aus.
Die Ausgabe sollte unabhängig von der natürlichen Darstellung für Gleitkommazahlen / Ganzzahlen in Ihrer Sprache erfolgen (unäre, dezimale, kirchliche Ziffern usw.). Wenn Sie die Ausgabe in irgendeiner Weise abzurunden, muss es mindestens zwei Dezimalstellen haben (wenn sinnvoll . nicht funktioniert müssen abgerundet sein, aber ist auch durchaus akzeptabel).
Indizes können entweder 1-indiziert oder 0-indiziert sein und befinden sich immer innerhalb der Grenzen des Arrays.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Beispiele
Mit 1-indexiert und auf 2 dp gerundet
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
Oder als drei Listen:
[[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]
quelle
Antworten:
APL (Dyalog Unicode) , 9 Byte SBCS
Anonyme stillschweigende Infix-Funktion. Nimmt Index als linkes Argument und Liste als rechtes Argument.
Probieren Sie es online!
100
einhundert×
mal⌷
das indizierte Element÷
geteilt durch1⊥
die Summe (lit. die Basis-1-Bewertung) von⊢
das richtige argumentquelle
C # (Visual C # Interactive Compiler) , 22 Byte
Probieren Sie es online!
quelle
Python 3 , 26 Bytes
Eine unbenannte Funktion, die eine Ganzzahl (Index mit 0 Indizes) und eine Liste akzeptiert, die den Prozentsatz zurückgibt.
Probieren Sie es online!
quelle
Gelee , 7 Bytes
Ein dyadischer Link, der einen ganzzahligen Index auf der linken Seite und eine Liste von Zahlen auf der rechten Seite akzeptiert, die den Prozentsatz ergibt.
Probieren Sie es online!
Wie?
quelle
05AB1E , 6 Bytes
Ein volles Programm nimmt den Index dann in die Liste auf. Verwendet die 0-Indizierung.
Probieren Sie es online!
Wie?
quelle
R 28 Bytes
Probieren Sie es online!
quelle
l
at index abrufenn
und nicht nur durch dividieren sollenn
(siehe[7, 3, 19], 1
Testfall) )l[]
um dien
)C (gcc) , 64 Bytes
0-indiziert. Das einzige, was Spaß machte, war die Erkenntnis, dass
1e2
es sichdouble
um ein Byte handelt100.
!Probieren Sie es online!
quelle
Java (JDK) , 47 Byte
Probieren Sie es online!
quelle
1e2
anstatt100
? Liegt es daran, dass100
es eine Ganzzahl ist und1e2
als Gleitkommazahl betrachtet wird?1e2
trägt den doppelten Typ, dera[i]
und die Summe nicht. Da die Abfrage die Rückgabe von Gleitkommazahlen erfordert, kann ich sie dort verwenden.(a,i)->1e2*a[i]/IntStream.of(a).sum()
. Bearbeiten:> :( mein armes Lambda Pfeil(a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()
was 54 Bytes lang ist. Meine aktuelle Antwort ist nur 47 Bytes lang. Ist aucha->i->
ein Byte kürzer als(a,i)->
.Haskell ,
20 bis18 BytesEin dyadischer Operator (
?
), der links den Index (mit dem Index 0) und rechts eine Liste mit dem Prozentsatz verwendet.Probieren Sie es online!
quelle
J , 10 Bytes
Probieren Sie es online!
0-indiziert
quelle
Wolfram Language (Mathematica) , 15 Byte
Probieren Sie es online!
Eingabe als
list, index
quelle
##[[]]
ist großartig!JavaScript (ES6), 30 Byte
Nimmt die Eingabe als an
(array)(index)
, wobei der Index auf 0 basiert.Probieren Sie es online!
quelle
MATL , 9 Bytes
Probieren Sie es online!
Erläuterung
Probieren Sie es online!
quelle
PHP (7.4), 35 Bytes
Probieren Sie es online!
Eingabeindex ist 0-basiert.
quelle
K (OK) ,
1514 Bytes-1 Byte danke an ngn!
Probieren Sie es online!
0-indiziert
quelle
(x@y)
->x[y]
Rot ,
3129 Bytes-2 Bytes dank ErikF
Probieren Sie es online!
quelle
1e2
statt100.0
: Online ausprobieren! . Es ist ziemlich ordentlich, wie viele Sprachen diesen Trick anwenden können!PowerShell , 34 Byte
Probieren Sie es online!
Schande Parameter sind in Powershell so verdammt teuer.
quelle
Scratch 3.0
2423 Blöcke /239228 BytesAlternativ in SB-Syntax
11 Bytes dank @JoKing gespeichert
Probieren Sie es einfach aus
Antwortverlauf
Alternativ in SB-Syntax
Probieren Sie es einfach aus
Die Eingabe erfolgt in Form von:
Ich sollte wirklich aufhören, mir das anzutun. Aber es macht sehr viel Spaß!
quelle
repeat length of m
umlength of m-1
die und sparen Sie sichdelete n
?delete n of m
ich vorgeschlagen habe, dann würde esPyth , 13 Bytes
Probieren Sie es online!
Das erste Mal mit Pyth, also gibt es hier wahrscheinlich einige ziemlich große Optimierungen, aber ich weiß nicht, wo sie sind ...
0-Index, nimmt Eingabe als an
list, index
quelle
Perl 5
-ap -MList::Util=Sum
, 19 BytesProbieren Sie es online!
Nehmen Sie die Liste, in der ersten Zeile ein Leerzeichen, in der zweiten den Index (0-basiert).
quelle
Japt , 8 Bytes
Versuch es
quelle
TI-Basic , 12 Bytes (12 Token)
1-indiziert
Nimmt die Liste auf
Ans
und fordert den Benutzer zur Eingabe des Index aufBeispiellauf
Erläuterung:
quelle
Retina 0.8.2 , 102 Bytes
Probieren Sie es online! Link enthält Testfälle. Übernimmt die Eingabe als
index;list,...
. Erläuterung:In Unary konvertieren.
In die Liste aufnehmen.
Summiere die Liste.
Multiplizieren Sie den gewünschten Wert mit 10000 und dividieren Sie ihn durch die Summe mit der Rundung, indem Sie zuerst die Hälfte der Summe addieren.
Stellen Sie sicher, dass das Ergebnis aus mindestens drei Ziffern besteht.
Fügen Sie an der vorletzten Stelle einen Dezimalpunkt ein.
quelle
Ruby ,
252321 BytesProbieren Sie es online!
quelle
Perl 6 , 21 Bytes
Probieren Sie es online!
Die einfache Lösung, da ich mit dem
$b
indizierten Parameter keine Curry-Parameter verwenden kann. Eine Funner-Lösung, die nicht mit zwei Parametern umgehen muss, indem sie stattdessen dierotate
Funktion verwendet:Probieren Sie es online!
Es ist aber leider zwei Bytes länger
quelle
Oktave , 21 Bytes
Probieren Sie es online!
quelle
MathGolf ,
76 Bytes0-basierte Indizierung.
Probieren Sie es online aus.
Erläuterung:
quelle
Icon , 53 Bytes
Probieren Sie es online!
Das einzig Interessante dabei ist, die Summe zu finden. Icon war eine der ersten Sprachen mit Generatoren.
!
generiert alle Werte der ListeL
, die zu akkumuliert werdens
. Normalerweise müssen wir schreibenevery s+:=!L
, aber ich habe Backtracking mit verwendet, um zu prüfen&\z
, ob die nicht vorhandenez
Variable vorhanden istnon-null
, und um den nächsten Wert aus der Liste bis zur Erschöpfung zu extrahieren.quelle
Faktor 46 Bytes
Probieren Sie es online!
0-indiziert
quelle
Batch, 111 Bytes
Übernimmt Eingaben als Index und Listen als Befehlszeilenargumente. Hinweis: Funktioniert nur für Indexwerte von
1
bis9
aufgrund von Einschränkungen des Stapels. Es könnte eine 0-indizierte Version geschrieben werden, die in der Lage wäre, die ersten 10 Elemente zu indizieren. Erläuterung:Verschieben Sie den Index auf
%0
und die Liste auf%1
...%9
(oder weniger). Beachten Sie jedoch, dass Batch'sshift
nicht beeinflusst%*
.Holen Sie sich alle Parameter, Leerzeichen getrennt.
Ändern Sie die Leerzeichen in
+
s und werten Sie sie arithmetisch aus, wobei Sie die Summe nehmen, aber den Index subtrahieren. Dann in die Liste indexieren, mit 10000 multiplizieren, die Hälfte der Summe addieren und durch die Summe dividieren. Führen Sie schließlich zweimal divmod by 10 aus, um die Dezimalstellen zu generieren. (Der%
arithmetische Operator hat in Batch eine besondere Bedeutung und muss normalerweise verdoppelt werden, aber dascall
erfordert dann eine weitere Verdoppelung.)Ergebnis und Nachkommastellen ausgeben.
quelle