Nous n'avons pas eu de défis faciles et faciles depuis un certain temps, alors c'est parti.
Étant donné une liste d'entiers supérieurs chacun à et un indice en entrée, affichez le pourcentage de l'élément à l'indice donné de la somme totale de la liste.
La sortie doit être quelle que soit la représentation naturelle des flottants / entiers dans votre langue (unaire, décimal, chiffres d'église, etc.). Si vous choisissez d'arrondir la sortie de quelque façon que ce soit, elle doit avoir au moins 2 décimales (lorsque cela est raisonnable. n'a pas besoin d'être arrondi, mais est également parfaitement acceptable).
Les index peuvent être indexés 1 ou 0 et seront toujours dans les limites du tableau.
C'est le code-golf , donc le code le plus court en octets gagne!
Exemples
Utilisation de 1 indexé et arrondi à 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
Ou, comme trois listes:
[[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]
la source
Réponses:
APL (Dyalog Unicode) , 9 octets SBCS
Fonction infixe tacite anonyme. Prend l'index comme argument de gauche et la liste comme argument de droite.
Essayez-le en ligne!
100
cent×
fois⌷
l'élément indexé÷
divisé par1⊥
la somme (lit. l'évaluation de base 1) de⊢
le bon argumentla source
C # (Visual C # Interactive Compiler) , 22 octets
Essayez-le en ligne!
la source
Python 3 , 26 octets
Une fonction sans nom acceptant un entier (index indexé 0) et une liste qui renvoie le pourcentage.
Essayez-le en ligne!
la source
Gelée , 7 octets
Un lien dyadique acceptant un entier, un index basé sur une à gauche et une liste de nombres à droite qui donne le pourcentage.
Essayez-le en ligne!
Comment?
la source
05AB1E , 6 octets
Un programme complet reprenant l'index puis la liste. Utilise l'indexation 0.
Essayez-le en ligne!
Comment?
la source
R 28 octets
Essayez-le en ligne!
la source
l
at indexn
, pas seulement le diviser parn
(voir le[7, 3, 19], 1
testcase )l[]
autour dun
)C (gcc) , 64 octets
0 indexé. Le seul morceau amusant était la réalisation qui
1e2
estdouble
, en économisant un octet100.
!Essayez-le en ligne!
la source
Java (JDK) , 47 octets
Essayez-le en ligne!
la source
1e2
au lieu de100
? Est-ce parce que100
est entier et1e2
est considéré comme un nombre à virgule flottante?1e2
porte le double type, ce quia[i]
et la somme ne le font pas. Étant donné que le défi nécessite de renvoyer des nombres à virgule flottante, c'est là que je peux l'utiliser.(a,i)->1e2*a[i]/IntStream.of(a).sum()
. Edit:> :( ma pauvre flèche lambda(a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()
qui fait 54 octets de long. Ma réponse actuelle ne fait que 47 octets. En outre,a->i->
est un octet plus court que(a,i)->
.Haskell ,
2018 octetsUn opérateur dyadique (
?
) prenant l'index (0 indexé) à gauche et une liste à droite qui donne le pourcentage.Essayez-le en ligne!
la source
J , 10 octets
Essayez-le en ligne!
0 indexé
la source
Wolfram Language (Mathematica) , 15 octets
Essayez-le en ligne!
Entrée en tant que
list, index
la source
##[[]]
est génial!JavaScript (ES6), 30 octets
Prend l'entrée comme
(array)(index)
, où l' index est basé sur 0.Essayez-le en ligne!
la source
MATL , 9 octets
Essayez-le en ligne!
Explication
Essayez-le en ligne!
la source
PHP (7.4), 35 octets
Essayez-le en ligne!
L'index d'entrée est basé sur 0.
la source
K (oK) ,
1514 octets-1 octet grâce à ngn!
Essayez-le en ligne!
0 indexé
la source
(x@y)
->x[y]
Rouge ,
3129 octets-2 octets grâce à ErikF
Essayez-le en ligne!
la source
1e2
au lieu de100.0
: Essayez-le en ligne! . C'est assez net combien de langues peuvent utiliser cette astuce!PowerShell , 34 octets
Essayez-le en ligne!
Les paramètres de la honte sont tellement chers dans Powershell.
la source
Scratch 3.0
2423 blocs /239228 octetsAlternativement dans la syntaxe SB
11 octets enregistrés grâce à @JoKing
Essayez-le à zéro
Historique des réponses
Alternativement dans la syntaxe SB
Essayez-le à zéro
L'entrée se présente sous la forme de:
Je devrais vraiment arrêter de me faire ça. Mais il est très amusant!
la source
repeat length of m
pourlength of m-1
et Epargnez - vousdelete n
?delete n of m
que j'ai suggéré, ce seraitPyth , 13 octets
Essayez-le en ligne!
La première fois que vous utilisez Pyth, il y a probablement quelques optimisations assez importantes ici, mais je ne sais pas où elles sont ...
0-index, prend l'entrée comme
list, index
la source
Perl 5
-ap -MList::Util=Sum
, 19 octetsEssayez-le en ligne!
Prenez la liste, espace séparé sur la première ligne, l'index (basé sur 0) sur la seconde.
la source
Japt , 8 octets
Essayez-le
la source
TI-Basic , 12 octets (12 jetons)
1 indexé
Prend la liste
Ans
et invite l'utilisateur à indexerExemple d'exécution
Explication:
la source
Retina 0.8.2 , 102 octets
Essayez-le en ligne! Le lien inclut des cas de test. Prend l'entrée comme
index;list,...
. Explication:Convertissez en unaire.
Index dans la liste.
Additionnez la liste.
Multipliez la valeur souhaitée par 10000 et divisez par la somme avec l'arrondi en ajoutant d'abord la moitié de la somme.
Assurez-vous que le résultat comporte au moins trois chiffres.
Insérez un point décimal à l'avant-dernière position.
la source
Rubis ,
252321 octetsEssayez-le en ligne!
la source
Perl 6 , 21 octets
Essayez-le en ligne!
La solution simple, car je ne peux pas utiliser de paramètres au curry avec le
$b
paramètre indexé. Une solution plus amusante qui n'a pas à gérer deux paramètres en utilisant larotate
fonction à la place:Essayez-le en ligne!
Mais c'est malheureusement deux octets de plus
la source
Octave , 21 octets
Essayez-le en ligne!
la source
MathGolf ,
76 octetsIndexation basée sur 0.
Essayez-le en ligne.
Explication:
la source
Icône , 53 octets
Essayez-le en ligne!
La seule chose intéressante ici est de trouver la somme. L'icône a été l'une des premières langues à disposer de générateurs.
!
génère toutes les valeurs de la listeL
qui sont cumuléess
. Normalement, nous devons écrireevery s+:=!L
, mais j'ai utilisé le retour arrière avec&\z
, qui vérifie si laz
variable inexistante estnon-null
, qui ne l'est pas, et extrait la valeur suivante de la liste jusqu'à épuisement.la source
Facteur , 46 octets
Essayez-le en ligne!
0 indexé
la source
Lot, 111 octets
Prend l'entrée comme index et la liste comme arguments de ligne de commande. Remarque: ne fonctionne que pour les valeurs d'index de
1
à en9
raison des limitations de Batch; une version indexée 0 pourrait être écrite qui serait capable d'indexer les 10 premiers éléments. Explication:Déplacez l'index vers
%0
et la liste vers%1
...%9
(ou moins). Notez cependant que Batchshift
n'affecte pas%*
.Obtenez tous les paramètres, séparés par des espaces.
Remplacez les espaces par
+
s et évaluez arithmétiquement, prenant ainsi la somme, mais soustrayez l'indice. Indexez ensuite dans la liste, multipliez par 10000, ajoutez la moitié de la somme et divisez par la somme. Enfin, effectuez divmod par 10 deux fois pour générer les décimales. (L'%
opérateur arithmétique a une signification particulière dans Batch et doit normalement être doublé, mais celacall
nécessite alors un doublement supplémentaire.)Sortez le résultat et les décimales.
la source