Это Hole-1 с осеннего турнира APL CodeGolf . Я являюсь первоначальным автором этой проблемы, и поэтому мне разрешено повторно публиковать ее здесь.
Учитывая список чисел, создайте горизонтальную гистограмму #
символов для того, сколько чисел вписывается в каждую из десяти групп одинакового размера. Например, если данные колеблются от 0 до 100, диапазоны будут 0–9,9, 10–19,9,…, 90–100. (Формально, [0,10), [10,20),…, [90,100].). Вы можете предположить, что будет как минимум два числа и что не все числа будут одинаковыми.
Примеры:
[1,0,0,0,0,0,0,0,0,0]
дает:
#########
#
[0,1,2,3,4,5,6,7,8,9]
дает:
#
#
#
#
#
#
#
#
#
#
[0,1,2,3,4,5,6,7,8,9,10]
дает:
#
#
#
#
#
#
#
#
#
##
[0,1,2,3,4,5,6,7,8,9,10,11]
дает:
##
#
#
#
#
#
#
#
#
##
[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]
дает:
###
#######
###########
###############
#########
###################
###############
###########
#######
###
[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]
дает:
#
####
#########
############
######
#########################
###########
#
[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]
дает:
#############
######################
##########################
#########################
#########################
#
########
################
########################
##########################
[0.9,1]
(и нет[0.9,1)
)?[0,1)
содержит только в0
то время как нижний ряд[9,10]
содержит и9
и10
.Ответы:
Python 2 , 96 байт
Попробуйте онлайн!
источник
Python 2 ,
10795 байтПопробуйте онлайн!
источник
*.1
что не работает вместо/10.
самого последнего контрольного примера. TBH Я не знаю, почему это не работает.R ,
7781 байт+4 байта для исправления некоторых тестовых случаев
Попробуйте онлайн!
Ссылка на версию кода, которая принимает ввод через запятую; эта версия занимает пробел
Читает из стандартного ввода, печатает на стандартный вывод.
R является статистическим языком программирования, который делает все возможное, чтобы давать высококачественные результаты, что иногда расстраивает:
hist
объединяет входные данные в гистограмму соbreaks
вторым аргументом. Обычно можно ожидать, что вы можете указать, что количество разрывов равно 10. Действительно, это так:(выделение добавлено).
Однако в следующем предложении говорится:
Итак, я посмотрел на документацию,
pretty
и она просто не работает для нашей ситуации, потому что она таким образом выбирает точки останова:Который просто не будет делать.
Таким образом,
seq(min(x),max(x),,11)
указывается 11 точек с равным интервалом, какbreaks
,hist(x,breaks,r=F)$c
дает счет,r=F
гарантирует, что срезы имеют правильные интервалы, аfor
остальная часть позаботится о цикле.источник
C (gcc) , 241 байт
Попробуйте онлайн!
источник
k
как глобальный, (+ 1 байт), однако он инициализируется в 0, таким образом сохранить 3 байта изk=0
.double
наfloat
и,lf
чтобыf
сохранить еще 2 байта. (по крайней мере, это работает наfloat
может работать, я не использовал его, потому что это не «стандартный» тип с плавающей точкой в C и снижает точность, поэтому не уверен, что это разрешено ...Mathematica, 152 байта
Попробуйте онлайн!
источник
Range[0,9]
пока я говорюRange[0,10]
без причины. Но это на самом деле не дляRange[0,10]
: TIO .<=
на обоих концах, что правильно на последнем сегменте, но не 9 других.JavaScript (ES6), 99 байт
Редактировать 2 байта сохранить thx @JustinMariner
Функция, возвращающая массив строк
Меньше гольфа
Тестовое задание
источник
i
в скобки массива, за которыми следует запятая, что позволит вам удалить скобки вокруг тела функции карты: попробуйте онлайн!i
и будете использоватьMath.min
снова, используя псевдоним: попробуйте онлайн!Python 2 ,
126121 байтПопробуйте онлайн!
источник
Желе , 21 байт
Монадическая ссылка возвращает список строк.
Попробуйте онлайн!
источник
ÇŒṘ
илиÇY
в нижний колонтитул, чтобы визуализировать результат. Кроме того, вместо полной программы вы можете сказать, что ваша отправка представляет собой монадическую ссылку, которая возвращает, а не печатает, что делает ее автоматически действительной.Pyth ,
3231 байтПопробуй это здесь! или Проверьте все контрольные примеры. (с использованием симпатичной печати
j
)Как это работает
Это полная программа, которая принимает данные от STDIN. Это для 32-байтовой версии. Я скоро обновлю.
источник
Древесный уголь , 31 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Ввод списков переменной длины кажется немного неудобным в Charcoal, поэтому мне пришлось обернуть список в массив, содержащий строку. Объяснение:
источник
Фортран 2003, 263 байта
Я написал его на GNU gfortran 5.4.0 и скомпилировал без каких-либо дополнительных флагов.
Он читает из STDIN по одному значению за раз и печатает в STDOUT.
Здесь это идет:
Нецензурное объяснение: (Я не знаю, может ли «гольф» применяться к фортрану, но в любом случае: P)
Интересный факт: я сделал похожий код только вчера, чтобы проверить мою реализацию генератора случайных чисел Вейбулла, так что для этого потребовалась лишь небольшая адаптация :)
источник
Perl 5 , 85 + 1 (
-a
) = 86 байтПопробуйте онлайн!
источник
Perl 5, 84 + 19 (-MList :: Util = min, max) байтов
Попробуйте онлайн
источник
Perl 5, 102 байта
Попробуйте онлайн .
Ungolfed:
источник
Java (OpenJDK 8) ,
246221209207206163162161157 байтПопробуйте онлайн!
источник
q / kdb +, 52 байта
Решение:
Попробуйте онлайн! (Обратите внимание, что канал TIO - это 44-байтовый порт K (oK) этого решения, поскольку для q / kdb + нет TIO).
Примеры:
Объяснение:
Большая часть кода используется для создания сегментов, в которые
bin
помещаются входные данные.источник
Желе , 19 байт
Попробуйте онлайн!
Это основано на моем ответе APL на исходную проблему, который я опубликую после завершения этого конкурса.
Как? (Я не умею объяснять вещи)
источник