Não enfrentamos nenhum desafio fácil e agradável há algum tempo, então aqui vamos nós.
Dada uma lista de números inteiros maiores que e um índice como entrada, imprima a porcentagem do item no índice fornecido da soma total da lista.
A saída deve ser qualquer que seja a representação natural de números flutuantes / números inteiros no seu idioma (unário, decimal, numerais da igreja etc.). Se você optar por arredondar a saída de qualquer forma, ela deve ter no mínimo 2 casas decimais (quando razoável. não precisa ser arredondado, mas também é perfeitamente aceitável).
Os índices podem ser indexados 1 ou 0 e sempre estarão dentro dos limites da matriz.
Isso é código-golfe , então o código mais curto em bytes vence!
Exemplos
Usando 1 indexado e arredondado para 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, como três listas:
[[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]
fonte
Respostas:
APL (Dyalog Unicode) , SBCS de 9 bytes
Função de infixo tácito anônimo. Leva o índice como argumento à esquerda e lista como argumento à direita.
Experimente online!
100
cem×
vezes⌷
o elemento indexado÷
dividido por1⊥
a soma (lit. a avaliação de base 1) de⊢
o argumento certofonte
C # (compilador interativo do Visual C #) , 22 bytes
Experimente online!
fonte
Python 3 , 26 bytes
Uma função sem nome que aceita um número inteiro (índice indexado 0) e uma lista que retorna a porcentagem.
Experimente online!
fonte
Geléia , 7 bytes
Um link diádico que aceita um índice inteiro com base à esquerda e uma lista de números à direita que produz a porcentagem.
Experimente online!
Quão?
fonte
05AB1E , 6 bytes
Um programa completo tendo o índice e depois a lista. Usa indexação 0.
Experimente online!
Quão?
fonte
R 28 bytes
Experimente online!
fonte
l
at no indexn
, não apenas dividir porn
(veja a caixa de[7, 3, 19], 1
teste )l[]
on
)C (gcc) , 64 bytes
Indexado a 0. A única parte divertida foi a conclusão de que
1e2
édouble
, economizando um byte100.
!Experimente online!
fonte
Java (JDK) , 47 bytes
Experimente online!
fonte
1e2
vez de100
? É porque100
é inteiro e1e2
é considerado como um número de ponto flutuante?1e2
carrega o tipo double, quea[i]
e a soma não. Como o desafio exige retornar números de ponto flutuante, é onde eu posso usá-lo.(a,i)->1e2*a[i]/IntStream.of(a).sum()
. Edit:> :( minha pobre flecha lambda(a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()
que tem 54 bytes de comprimento. Minha resposta atual tem apenas 47 bytes. Além disso,a->i->
é um byte menor que(a,i)->
.Haskell ,
2018 bytesUm operador diádico (
?
) assumindo o índice (indexado 0) à esquerda e uma lista à direita que gera a porcentagem.Experimente online!
fonte
J , 10 bytes
Experimente online!
Indexado a 0
fonte
Wolfram Language (Mathematica) , 15 bytes
Experimente online!
Entrada como
list, index
fonte
##[[]]
é incrível!JavaScript (ES6), 30 bytes
Aceita entrada como
(array)(index)
, onde o índice é baseado em 0.Experimente online!
fonte
MATL , 9 bytes
Experimente online!
Explicação
Experimente online!
fonte
PHP (7.4), 35 bytes
Experimente online!
O índice de entrada é baseado em 0.
fonte
K (oK) ,
1514 bytes-1 byte graças a ngn!
Experimente online!
Indexado a 0
fonte
(x@y)
->x[y]
Vermelho ,
3129 bytes-2 bytes graças ao ErikF
Experimente online!
fonte
1e2
vez de100.0
: Experimente online! . É bem legal quantas línguas podem usar esse truque!PowerShell , 34 bytes
Experimente online!
Os parâmetros de vergonha são tão caros no Powershell.
fonte
Scratch 3.0
2423 blocos /239228 bytesComo alternativa na sintaxe SB
Guardado 11 bytes graças a @JoKing
Experimente no zero
Histórico de respostas
Como alternativa na sintaxe SB
Experimente no zero
A entrada está na forma de:
Eu realmente deveria parar de fazer isso comigo mesma. Mas é muito divertido!
fonte
repeat length of m
alength of m-1
e salve-se odelete n
?delete n of m
que eu sugeri, então o fariaPitão , 13 bytes
Experimente online!
Primeira vez usando Pyth, provavelmente há algumas otimizações bastante grandes aqui, mas não sei onde elas estão ...
Índice 0, recebe a entrada como
list, index
fonte
Perl 5
-ap -MList::Util=Sum
, 19 bytesExperimente online!
Pegue a lista, o espaço separado na primeira linha e o índice (com base em 0) na segunda.
fonte
Japonês , 8 bytes
Tente
fonte
TI-Basic , 12 bytes (12 tokens)
Indexado 1
Leva a lista
Ans
e solicita ao usuário o índiceExemplo de execução
Explicação:
fonte
Retina 0.8.2 , 102 bytes
Experimente online! O link inclui casos de teste. Toma entrada como
index;list,...
. Explicação:Converta para unário.
Índice na lista.
Soma a lista.
Multiplique o valor desejado por 10000 e divida pela soma com arredondamento adicionando primeiro metade da soma.
Verifique se o resultado possui pelo menos três dígitos.
Insira um ponto decimal na segunda última posição.
fonte
Ruby ,
252321 bytesExperimente online!
fonte
Perl 6 , 21 bytes
Experimente online!
A solução simples, pois não posso usar parâmetros ao curry com o
$b
parâmetro sendo indexado. Uma solução mais divertida que não precisa manipular dois parâmetros usando arotate
função:Experimente online!
Mas infelizmente é mais dois bytes
fonte
Oitava , 21 bytes
Experimente online!
fonte
MathGolf ,
76 bytesIndexação baseada em 0.
Experimente online.
Explicação:
fonte
Ícone , 53 bytes
Experimente online!
A única coisa interessante aqui é encontrar a soma. Icon foi um dos primeiros idiomas a ter geradores.
!
gera todos os valores da listaL
que são acumuladoss
. Normalmente precisamos escreverevery s+:=!L
, mas usei o retorno com&\z
, que verifica se az
variável inexistente énon-null
, o que não é, e extrai o próximo valor da lista até a exaustão.fonte
Fator , 46 bytes
Experimente online!
Indexado a 0
fonte
Lote, 111 bytes
Recebe entrada como índice e lista como argumentos da linha de comando. Nota: Funciona apenas para valores de índice de
1
a9
devido a limitações do lote; poderia ser escrita uma versão indexada em 0, capaz de indexar os 10 primeiros elementos. Explicação:Mude o índice para
%0
e a lista para%1
...%9
(ou menos). Observe, porém, que os lotesshift
não afetam%*
.Obtenha todos os parâmetros, com espaço separado.
Altere os espaços para se
+
avalie aritmeticamente, obtendo a soma, mas subtraindo o índice. Em seguida, indexe na lista, multiplique por 10000, adicione metade da soma e divida pela soma. Por fim, execute divmod por 10 duas vezes para gerar as casas decimais. (O%
operador aritmético tem um significado especial no Lote e normalmente precisa ser duplicado, mas, emcall
seguida, requer uma duplicação adicional.)Produza o resultado e as casas decimais.
fonte