(un paradoxe, un paradoxe, un paradoxe des plus ingénieux)
Il s'agit de la première partie d'une série en plusieurs parties inspirée par différentes fonctions R.
La tâche
Étant donné un ensemble de données d'entiers positifs, je dois vous calculer le résumé du numéro 5 de . Cependant, je travaille sur de grands ensembles de données, j'ai donc besoin que votre code soit aussi petit que possible, ce qui me permet de le stocker sur mon ordinateur.
Le résumé à cinq chiffres comprend:
- Valeur minimum
- Premier quartile (T1)
- Médiane / deuxième quartile (T2)
- Troisième quartile (T3)
- Valeur maximum
Il existe plusieurs façons de définir les quartiles, mais nous utiliserons celle implémentée par R:
Définitions:
- Minimum et maximum: les plus petites et les plus grandes valeurs, respectivement.
- Médiane: la valeur moyenne si a un nombre impair d'entrées et la moyenne arithmétique des deux valeurs les plus moyennes si a un nombre pair d'entrées. Notez que cela signifie que la médiane peut être une valeur non entière. Nous avons dû calculer la médiane avant .
- Premier et troisième quartiles: divisez les données en deux moitiés, y compris l'élément central dans chaque moitié si a un nombre impair d'entrées, et trouvez la valeur médiane de chaque moitié. La médiane de la moitié inférieure est le premier quartile et la médiane de la moitié supérieure est le troisième quartile.
Exemples:
. La médiane est alors de , et la moitié inférieure est , ce qui donne un premier quartile de , et la moitié supérieure est , ce qui donne un troisième quartile de .
. La médiane est de et la moitié inférieure est , ce qui donne un premier quartile de , et la moitié supérieure est , ce qui donne un troisième quartile de .
Règles supplémentaires:
- L'entrée est un tableau ou l'équivalent le plus proche de votre langue.
- Vous pouvez supposer que le tableau est trié dans l'ordre croissant ou décroissant (mais veuillez préciser lequel).
- Vous pouvez renvoyer / imprimer les résultats dans n'importe quel ordre cohérent et dans le format flexible que vous aimez, mais veuillez indiquer l'ordre et le format dans votre réponse.
- Fonctions intégrées équivalentes à
fivenum
sont autorisées, mais veuillez également implémenter votre propre solution. - Vous ne pouvez pas supposer que chacun des cinq nombres sera un entier.
- Des explications sont encouragées.
- C'est le golf de code , donc la réponse la plus courte dans chaque langue gagne!
Cas de test générés aléatoirement
1 1 1 1 1 2 2 2 2 2 3 3 4 4 4 4 4 5 5 5 -> 1 1.5 2.5 4 5
1 2 2 2 4 4 5 5 6 7 7 8 9 9 9 9 9 10 10 10 -> 1 4 7 9 10
2 2 2 6 8 10 15 16 21 22 23 24 26 33 35 38 38 45 46 47 48 -> 2 10 23 38 48
1 2 9 -> 1 1.5 2 5.5 9
1 2 3 3 3 4 9 -> 1 2.5 3 3.5 9
1 1 2 5 7 7 8 8 15 16 18 24 24 26 26 27 27 28 28 28 29 29 39 39 40 45 46 48 48 48 48 49 50 52 60 63 72 73 79 85 86 87 88 90 91 93 94 95 95 97 100 -> 1 25 45 76 100
2 2 4 4 6 8 10 11 13 14 14 15 17 21 23 24 26 27 27 28 28 30 31 33 33 34 36 36 38 38 39 40 41 42 42 43 45 45 47 47 47 47 47 48 48 48 50 51 53 53 55 56 56 56 57 57 58 62 62 63 64 64 65 65 66 67 67 67 68 69 69 71 71 71 74 79 80 81 81 81 82 82 83 83 86 86 86 87 89 94 94 94 95 95 97 98 99 100 100 100 -> 2 33.5 54 76.5 100
1 3 3 4 -> 1 2 3 3.5 4
1 3 3 3 4 -> 1 3 3 3 4
la source
quantile
renvoie un vecteur nommé, alors qu'ilfivenum
est sans nom. C'est peut-être un problème en aval de l'endroit oùfivenum
est utilisé?unname()
résoudrait cela. Peut-être qu'il y a des raisons historiques?fivenum
entrées de longueur 3 mod 4, dont deux des cas de test.MATL , 18 octets
L'ordre de sortie augmente, comme dans les cas de test.
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
MATL, comme MATLAB, calcule les quantiles en utilisant une interpolation linéaire si nécessaire (tout comme spécifié dans le défi pour la médiane). Pour obtenir le comportement requis pour les premier et troisième quartiles, il suffit de répéter la médiane si la longueur de l'entrée est impaire. Les résultats ne sont alors que les quantiles 0, 0,25, 0,5, 0,75 et 1.
la source
Gelée , 13 octets
Essayez-le en ligne!
Ordre:
[Q1, Q3, Q2/med, min, max]
.la source
Python 3.8 (pré-version) , 66 octets
Essayez-le en ligne!
L'entrée et la sortie sont en ordre croissant.
la source
Python 3.8, 97 octets
Cela suppose que la liste d'entrée est triée par ordre croissant.
f
est la fonction pour renvoyer le résumé à 5 chiffres.J'ai enlevé quelques octets en prenant quelques indices de la réponse de FlipTack à Calculer la médiane.
Essayez-le en ligne!
Comment ça marche?
la source
Fusain , 33 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Sorties dans l'ordre croissant ou décroissant selon que l'entrée est dans l'ordre croissant ou décroissant. Explication:
Récupère l'index du dernier élément.
Mappez les éléments du tableau suivant et transformez le résultat en chaîne pour une impression implicite sur des lignes distinctes.
Calculez les positions des éléments du quartile, où un extra
0.5
indique que la valeur est la moyenne de deux éléments adjacents.Calculez le quartile à chaque position en prenant la moyenne des valeurs au plancher et au plafond de la position.
la source
Ruby 2.7-preview1 , 59 octets
Un directe
ripoffport de réponse Python xnor .Essayez-le en ligne! (un octet de plus car TiO utilise Ruby 2.5 et n'a pas de paramètres de bloc numérotés par exemple
@1
).la source
C (gcc) ,
123121119 octets-2 grâce au plafond.
Suppose une liste triée par ordre croissant.
Sorties dans l'ordre: min, Q1, Q2, Q3, max.
Essayez-le en ligne!
la source
05AB1E , 18 octets
Est ordre de sortie:
[Q1, Q3, Q2, min, max]
.Essayez-le en ligne ou vérifiez tous les cas de test . (J'ai ajouté un tri
{
pour la suite de tests, donc les cas de test sont plus faciles à vérifier dans l'ordre[min, Q1, Q2, Q3, max]
.)Explication:
la source