Este es el hoyo 1 del Torneo de otoño de APL CodeGolf . Soy el autor original del problema allí y, por lo tanto, me permite volver a publicarlo aquí.
Dada una lista de números, produzca un gráfico de barras horizontales de #
caracteres para cuántos números caben en cada uno de los diez grupos de igual tamaño. Por ejemplo, si los rangos de datos van de 0 a 100, los rangos serán 0–9.9, 10–19.9,…, 90–100. (Formalmente, [0,10), [10,20),…, [90,100].). Puede suponer que habrá al menos dos números y que no todos los números serán iguales.
Ejemplos:
[1,0,0,0,0,0,0,0,0,0]
da:
#########
#
[0,1,2,3,4,5,6,7,8,9]
da:
#
#
#
#
#
#
#
#
#
#
[0,1,2,3,4,5,6,7,8,9,10]
da:
#
#
#
#
#
#
#
#
#
##
[0,1,2,3,4,5,6,7,8,9,10,11]
da:
##
#
#
#
#
#
#
#
#
##
[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]
da:
###
#######
###########
###############
#########
###################
###############
###########
#######
###
[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]
da:
#
####
#########
############
######
#########################
###########
#
[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]
da:
#############
######################
##########################
#########################
#########################
#
########
################
########################
##########################
[0.9,1]
(y no[0.9,1)
)?[0,1)
contiene solo0
mientras que la fila inferior[9,10]
contiene ambos9
y10
.Respuestas:
Python 2 , 96 bytes
Pruébalo en línea!
fuente
Python 2 ,
10795 bytesPruébalo en línea!
fuente
*.1
no funciona en lugar del/10.
último caso de prueba. TBH No sé por qué no funciona.R ,
7781 bytes+4 bytes para arreglar algunos casos de prueba
Pruébalo en línea!
El enlace es a una versión del código que toma entradas separadas por comas; Esta versión lleva espacio separado.
Lee desde stdin, imprime en stdout.
R es un lenguaje de programación estadística que hace todo lo posible para dar resultados de alta calidad, lo que a veces es frustrante:
hist
agrupa las entradas en un histograma conbreaks
su segundo argumento. Normalmente, uno esperaría que pudiera especificar que el número de descansos sea 10. De hecho, este es el caso:(énfasis añadido).
La siguiente oración, sin embargo, dice:
Así que miré la documentación de
pretty
y simplemente no funciona para nuestra situación, ya que selecciona puntos de quiebre por lo tanto:Lo que simplemente no servirá.
Por lo tanto,
seq(min(x),max(x),,11)
especifica 11 puntos igualmente espaciados comobreaks
,hist(x,breaks,r=F)$c
da los recuentos,r=F
asegura que los contenedores sean intervalos abiertos a la derecha, y elfor
bucle se encarga del resto.fuente
C (gcc) , 241 bytes
Pruébalo en línea!
fuente
k
como global, (+ 1byte), sin embargo, se inicializa a 0, por lo tanto, guarde 3 bytes dek=0
.double
afloat
ylf
af
, salvar a otro de 2 bytes. (al menos eso funciona en TIO)float
fuerza de trabajo, que no usamos porque no es el tipo de punto flotante "estándar" en C y reduce la precisión, por lo que no está seguro de esto es permitido ...Mathematica, 152 bytes
Pruébalo en línea!
fuente
Range[0,9]
mientras habloRange[0,10]
sin razón. Pero en realidad falla porRange[0,10]
: TIO .<=
en ambos extremos, lo cual es correcto en el último segmento pero no en los otros 9.JavaScript (ES6), 99 bytes
Editar 2 bytes guardar thx @JustinMariner
Una función que devuelve una matriz de cadenas
Menos golf
Prueba
fuente
i
a los corchetes seguidos de una coma, lo que le permite eliminar los paréntesis alrededor del cuerpo de la función de mapa: ¡ Pruébelo en línea!i
y lo usaMath.min
nuevamente, con un alias: ¡ Pruébelo en línea!Python 2 ,
126121 bytesPruébalo en línea!
fuente
Jalea , 21 bytes
Un enlace monádico devuelve una lista de cadenas.
Pruébalo en línea!
fuente
ÇŒṘ
oÇY
en su pie de página para visualizar el resultado. Además, en lugar del programa completo, puede decir que su envío es un enlace monádico, que devuelve en lugar de imprimir, lo que lo hace automáticamente válido.Pyth ,
3231 bytesPruébalo aquí! o Verificar todos los casos de prueba. (con impresión bonita usando
j
)Como funciona esto
Este es un programa completo que recibe información de STDIN. Esto es para la versión de 32 bytes. Lo actualizaré pronto.
fuente
Carbón , 31 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. La entrada de listas de longitud variable parece un poco incómoda en Charcoal, por lo que tuve que ajustar la lista en una matriz que contiene una cadena. Explicación:
fuente
Fortran 2003, 263 bytes
Lo escribí en GNU gfortran 5.4.0 y lo compilé sin ningún indicador adicional.
Lee de STDIN, un valor a la vez, e imprime en STDOUT.
Aquí va:
Explicación sin golf: (no sé si "golf" se puede aplicar a fortran pero de cualquier manera: P)
Dato curioso: ayer hice un código similar para probar mi implementación de un generador de números aleatorios Weibull, por lo que solo necesité una pequeña adaptación :)
fuente
Perl 5 , 85 + 1 (
-a
) = 86 bytesPruébalo en línea!
fuente
Perl 5, 84 + 19 (-MList :: Util = min, max) bytes
Pruébalo en línea
fuente
Perl 5, 102 bytes
Pruébalo en línea .
Sin golf:
fuente
Java (OpenJDK 8) ,
246221209207206163162161157 bytesPruébalo en línea!
fuente
q / kdb +, 52 bytes
Solución:
Pruébalo en línea! (Tenga en cuenta que el enlace TIO es un puerto K (oK) de 44 bytes de esta solución ya que no hay TIO para q / kdb +).
Ejemplos:
Explicación:
La mayor parte del código se usa creando los cubos en los que se
bin
inserta la entrada.fuente
Jalea , 19 bytes
Pruébalo en línea!
Esto se basa en mi respuesta APL para el problema original, que publicaré después de que termine la competencia.
¿Cómo? (No soy bueno explicando cosas)
fuente