No hemos tenido desafíos agradables y fáciles en mucho tiempo, así que aquí vamos.
Dada una lista de enteros cada uno mayor que y un índice como entrada, genera el porcentaje del elemento en el índice dado de la suma total de la lista.
La salida debe ser la representación natural para flotantes / enteros en su idioma (unario, decimal, números de iglesia, etc.). Si elige redondear la salida de alguna manera, debe tener un mínimo de 2 decimales (cuando sea razonable. no necesita redondearse, pero también es perfectamente aceptable).1.20
Los índices pueden estar indexados en 1 o indexados en 0, y siempre estarán dentro de los límites de la matriz.
Este es el código de golf , por lo que gana el código más corto en bytes.
Ejemplos
Usando 1 indexado y redondeado a 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
O, como tres 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]
fuente
Respuestas:
APL (Dyalog Unicode) , SBCS de 9 bytes
Función de infijo tácito anónimo. Toma el índice como argumento izquierdo y la lista como argumento derecho.
Pruébalo en línea!
100
cien×
veces⌷
el elemento indexado÷
dividido por1⊥
la suma (lit. la evaluación de base 1) de⊢
el argumento correctofuente
C # (compilador interactivo de Visual C #) , 22 bytes
Pruébalo en línea!
fuente
Python 3 , 26 bytes
Una función sin nombre que acepta un número entero (índice indexado 0) y una lista que devuelve el porcentaje.
Pruébalo en línea!
fuente
Jalea , 7 bytes
Un enlace diádico que acepta un índice entero basado en uno a la izquierda y una lista de números a la derecha que produce el porcentaje.
Pruébalo en línea!
¿Cómo?
fuente
05AB1E , 6 bytes
Un programa completo que toma el índice y luego la lista. Utiliza indexación 0.
Pruébalo en línea!
¿Cómo?
fuente
R 28 bytes
Pruébalo en línea!
fuente
l
índicen
, no solo dividir porn
(ver el caso de[7, 3, 19], 1
prueba )l[]
alrededorn
)C (gcc) , 64 bytes
0 indexado. ¡Lo único divertido fue darse cuenta de que
1e2
es undouble
ahorro de un byte100.
!Pruébalo en línea!
fuente
Java (JDK) , 47 bytes
Pruébalo en línea!
fuente
1e2
lugar de100
? ¿Es porque100
es entero y1e2
se considera como un número de coma flotante?1e2
lleva el tipo doble, quea[i]
y la suma no. Como el desafío requiere devolver números de coma flotante, ahí es donde puedo usarlo.(a,i)->1e2*a[i]/IntStream.of(a).sum()
. Editar:> :( mi pobre flecha lambda(a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()
que tiene 54 bytes de longitud. Mi respuesta actual tiene solo 47 bytes de longitud. Además,a->i->
es un byte más corto que(a,i)->
.Haskell ,
2018 bytesUn operador diádico (
?
) que toma el índice (indexado a 0) a la izquierda y una lista a la derecha que produce el porcentaje.Pruébalo en línea!
fuente
J , 10 bytes
Pruébalo en línea!
0 indexado
fuente
Wolfram Language (Mathematica) , 15 bytes
Pruébalo en línea!
Entrada como
list, index
fuente
##[[]]
¡es increíble!JavaScript (ES6), 30 bytes
Toma la entrada como
(array)(index)
, donde el índice está basado en 0.Pruébalo en línea!
fuente
MATL , 9 bytes
Pruébalo en línea!
Explicación
Pruébalo en línea!
fuente
PHP (7.4), 35 bytes
Pruébalo en línea!
El índice de entrada está basado en 0.
fuente
K (oK) ,
1514 bytes-1 byte gracias a ngn!
Pruébalo en línea!
0 indexado
fuente
(x@y)
->x[y]
Rojo ,
3129 bytes-2 bytes gracias a ErikF
Pruébalo en línea!
fuente
1e2
lugar de100.0
: ¡ Pruébelo en línea! . ¡Es bastante bueno cuántos idiomas pueden usar este truco!PowerShell , 34 bytes
Pruébalo en línea!
Los parámetros de vergüenza son tan caros en Powershell.
fuente
Scratch 3.0
2423 bloques /239228 bytesAlternativamente en sintaxis SB
Guardado 11 bytes gracias a @JoKing
Pruébalo desde cero
Historial de respuestas
Alternativamente en sintaxis SB
Pruébalo desde cero
La entrada tiene la forma de:
Realmente debería dejar de hacerme esto a mí mismo. ¡Pero es muy divertido!
fuente
repeat length of m
alength of m-1
y se ahorrará eldelete n
?delete n of m
que sugerí, seríaPyth , 13 bytes
Pruébalo en línea!
La primera vez que uso Pyth, probablemente hay algunas optimizaciones bastante grandes aquí, pero no sé dónde están ...
0-index, toma la entrada como
list, index
fuente
Perl 5
-ap -MList::Util=Sum
, 19 bytesPruébalo en línea!
Tome la lista, el espacio separado en la primera línea, el índice (basado en 0) en la segunda.
fuente
Japt , 8 bytes
Intentalo
fuente
TI-Basic , 12 bytes (12 tokens)
1 indexado
Toma la lista
Ans
y solicita al usuario el índiceEjecución de ejemplo
Explicación:
fuente
Retina 0.8.2 , 102 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Toma entrada como
index;list,...
. Explicación:Convierte a unario.
Indice en la lista.
Suma la lista.
Multiplique el valor deseado por 10000 y divida por la suma con redondeo agregando primero la mitad de la suma.
Asegúrese de que el resultado tenga al menos tres dígitos.
Inserte un punto decimal en la segunda última posición.
fuente
Ruby ,
252321 bytesPruébalo en línea!
fuente
Perl 6 , 21 bytes
Pruébalo en línea!
La solución simple, ya que no puedo usar parámetros curry con el
$b
parámetro que se indexa. Una solución más divertida que no tiene que manejar dos parámetros usando larotate
función en su lugar:Pruébalo en línea!
Pero lamentablemente es dos bytes más largo
fuente
Octava , 21 bytes
Pruébalo en línea!
fuente
MathGolf ,
76 bytesIndexación basada en 0.
Pruébalo en línea.
Explicación:
fuente
Icono , 53 bytes
Pruébalo en línea!
Lo único interesante aquí es encontrar la suma. Icon fue uno de los primeros idiomas en tener generadores.
!
genera todos los valores de la listaL
que se acumulan ens
. Normalmente necesitamos escribirevery s+:=!L
, pero utilicé el rastreo hacia atrás&\z
, que comprueba si laz
variable no existe esnon-null
, que no lo es, y extrae el siguiente valor de la lista hasta el agotamiento.fuente
Factor , 46 bytes
Pruébalo en línea!
0 indexado
fuente
Lote, 111 bytes
Toma la entrada como índice y la lista como argumentos de línea de comandos. Nota: Solo funciona para valores de índice de
1
a9
debido a limitaciones de Batch; se podría escribir una versión indexada en 0 que pudiera indexar los primeros 10 elementos. Explicación:Cambie el índice
%0
y la lista a%1
...%9
(o menos). Sin embargo, tenga en cuenta que Batch'sshift
no afecta%*
.Obtenga todos los parámetros, separados por espacios.
Cambie los espacios a
+
sy evalúe aritméticamente, tomando la suma, pero reste el índice. Luego indexe en la lista, multiplique por 10000, agregue la mitad de la suma y divida por la suma. Finalmente realice divmod por 10 dos veces para generar los lugares decimales. (El%
operador aritmético tiene un significado especial en Batch y normalmente debe duplicarse, perocall
luego requiere una duplicación adicional).Salida del resultado y los lugares decimales.
fuente