Il s'agit du trou 1 du tournoi d'automne d'APL CodeGolf . Je suis l'auteur original du problème là-bas, et donc autorisé à le publier à nouveau ici.
À partir d'une liste de nombres, produisez un diagramme à barres horizontales de #
caractères pour le nombre de nombres qui correspondent à chacun des dix groupes de taille égale. Par exemple, si les données vont de 0 à 100, les plages seront 0–9,9, 10–19,9,…, 90–100. (Formellement, [0,10), [10,20),…, [90,100].). Vous pouvez supposer qu'il y aura au moins deux nombres et que tous ne seront pas identiques.
Exemples:
[1,0,0,0,0,0,0,0,0,0]
donne:
#########
#
[0,1,2,3,4,5,6,7,8,9]
donne:
#
#
#
#
#
#
#
#
#
#
[0,1,2,3,4,5,6,7,8,9,10]
donne:
#
#
#
#
#
#
#
#
#
##
[0,1,2,3,4,5,6,7,8,9,10,11]
donne:
##
#
#
#
#
#
#
#
#
##
[0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,-4,-4.5,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,-4,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,1.5,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,2,1.5,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,2.5,2,1.5,1,0.5,0,-0.5,-1,-1.5,-2,3,2.5,2,1.5,1,0.5,0,-0.5,-1,-1.5,3.5,3,2.5,2,1.5,1,0.5,0,-0.5,-1,4,3.5,3,2.5,2,1.5,1,0.5,0,-0.5,4.5,4,3.5,3,2.5,2,1.5,1,0.5,0]
donne:
###
#######
###########
###############
#########
###################
###############
###########
#######
###
[9014,9082,9077,9068,8866,8710,9049,8364,8867,9015,9064,9023,9024,8804,8805,8800,8744,8743,8714,9076,8593,8595,9075,9675,8968,8970,8711,8728,8834,8835,8745,8746,8869,8868,9073,9074,9042,9035,9033,9021,8854,9055,9017,9045,9038,9067,9066,8801,8802,9496,9488,9484,9492,9532,9472,9500,9508,9524,9516,9474,8739,9079,8900,8592,8594,9053,9109,9054,9059]
donne:
#
####
#########
############
######
#########################
###########
#
[0,8,10,13,32,12,6,7,27,9,37,39,95,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,1,2,175,46,48,49,50,51,52,53,54,55,56,57,3,165,36,163,162,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,4,5,253,183,127,193,194,195,199,200,202,203,204,205,206,207,208,210,211,212,213,217,218,219,221,254,227,236,240,242,245,123,125,168,192,196,197,198,201,209,214,216,220,223,224,225,226,228,229,230,231,232,233,234,235,237,238,239,241,91,47,92,60,61,62,45,43,247,215,63,126,42,40,124,59,44,33,243,244,246,248,34,35,30,38,180,64,249,250,251,94,252,96,182,58,191,161,41,93,31,160,167]
donne:
#############
######################
##########################
#########################
#########################
#
########
################
########################
##########################
[0.9,1]
(et non[0.9,1)
)?[0,1)
ne contient que0
tandis que la ligne du bas[9,10]
contient à la fois9
et10
.Réponses:
Python 2 , 96 octets
Essayez-le en ligne!
la source
Python 2 ,
10795 octetsEssayez-le en ligne!
la source
*.1
cela ne fonctionne pas au lieu du/10.
tout dernier cas de test. TBH Je ne sais pas pourquoi cela ne fonctionne pas.R ,
7781 octets+4 octets pour corriger certains cas de test
Essayez-le en ligne!
Le lien est vers une version du code qui prend une entrée séparée par des virgules; cette version prend l'espace séparé.
Lit depuis stdin, imprime vers stdout.
R est un langage de programmation statistique qui fait de son mieux pour donner des résultats de haute qualité, ce qui est parfois frustrant:
hist
place les entrées dans un histogramme avecbreaks
comme deuxième argument. Normalement, on pourrait s'attendre à ce que vous puissiez spécifier que le nombre de pauses soit de 10. En effet, c'est le cas:(pas d'italique dans l'original).
Cependant, la phrase suivante dit:
J'ai donc regardé la documentation de
pretty
et cela ne fonctionne tout simplement pas pour notre situation, car elle sélectionne ainsi les points de rupture:Ce qui ne fera tout simplement pas l'affaire.
Ainsi, le
seq(min(x),max(x),,11)
spécifie 11 points également espacés que lebreaks
,hist(x,breaks,r=F)$c
donne les comptes,r=F
garantit que les bacs sont des intervalles ouverts à droite, et lafor
boucle s'occupe du reste.la source
C (gcc) , 241 octets
Essayez-le en ligne!
la source
k
un global, (+ 1 octet) mais il est initialisé à 0, économisez donc 3 octets à partir dek=0
.double
versfloat
etlf
versf
, enregistrer encore 2 octets. (au moins cela fonctionne sur TIO)float
pourrait fonctionner, je ne l'ai pas utilisé car ce n'est pas le type à virgule flottante "standard" en C et réduit la précision, donc pas sûr que cela soit autorisé ...Mathematica, 152 octets
Essayez-le en ligne!
la source
Range[0,9]
pendant que je parleRange[0,10]
sans raison. Mais il échoue en fait pourRange[0,10]
: TIO .<=
aux deux extrémités, ce qui est correct sur le dernier segment mais pas sur les 9 autres.JavaScript (ES6), 99 octets
Modifier 2 octets de sauvegarde thx @JustinMariner
Une fonction renvoyant un tableau de chaînes
Moins golfé
Tester
la source
i
dans les crochets du tableau suivie d'une virgule, vous permettant de supprimer les parenthèses autour du corps de la fonction de carte: Essayez-le en ligne!i
et le réutilisezMath.min
, avec un alias: essayez-le en ligne!Python 2 ,
126121 octetsEssayez-le en ligne!
la source
Gelée , 21 octets
Un lien monadique renvoie une liste de chaînes.
Essayez-le en ligne!
la source
ÇŒṘ
ouÇY
dans votre pied de page afin de visualiser le résultat. De plus, au lieu d'un programme complet, vous pouvez dire que votre soumission est un lien monadique, qui renvoie plutôt que d'imprimer, ce qui la rend automatiquement valide.Pyth ,
3231 octetsEssayez-le ici! ou Vérifiez tous les cas de test. (avec jolie impression en utilisant
j
)Comment ça marche
Il s'agit d'un programme complet qui accepte les données de STDIN. C'est pour la version 32 octets. Je vais le mettre à jour bientôt.
la source
Fusain , 31 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. La saisie de listes de longueur variable semble un peu gênante dans Charcoal, j'ai donc dû encapsuler la liste dans un tableau contenant une chaîne. Explication:
la source
Fortran 2003, 263 octets
Je l'ai écrit sur GNU gfortran 5.4.0 et compilé sans aucun drapeau supplémentaire.
Il lit depuis STDIN, une valeur à la fois, et imprime vers STDOUT.
Ça y est:
Explication non golfée: (je ne sais pas si "golfé" peut être appliqué à fortran mais de toute façon: P)
Fait amusant: j'ai fait un code similaire hier pour tester mon implémentation d'un générateur de nombres aléatoires Weibull, donc il n'a fallu qu'une petite adaptation :)
la source
Perl 5 , 85 + 1 (
-a
) = 86 octetsEssayez-le en ligne!
la source
Perl 5, 84 + 19 (-MList :: Util = min, max) octets
Essayez-le en ligne
la source
Perl 5, 102 octets
Essayez-le en ligne .
Non golfé:
la source
Java (OpenJDK 8) ,
246221209207206163162161157 octetsEssayez-le en ligne!
la source
q / kdb +, 52 octets
Solution:
Essayez-le en ligne! (Notez que le lien TIO est un port K (oK) de 44 octets de cette solution car il n'y a pas de TIO pour q / kdb +).
Exemples:
Explication:
La plupart du code est utilisé pour créer les compartiments qui
bin
regroupent l'entrée.la source
Gelée , 19 octets
Essayez-le en ligne!
Ceci est basé sur ma réponse APL pour le problème d'origine, que je publierai après la fin de la compétition.
Comment? (Je ne suis pas bon pour expliquer les choses)
la source