Ваша цель - вывести художественную круговую диаграмму ASCII. Это код-гольф, поэтому выигрывает самая короткая программа (считая байты исходного кода, а не символы).
Никакие внешние программы или API не допускаются. Только родные для каждого языка.
Начальный угол и направление (по часовой стрелке / против часовой стрелки) круга не имеют значения. Вывод может выглядеть овальным, потому что высота символа всегда превышает его ширину.
«Фон» (символы слева или справа от круговой диаграммы) должны быть пробелами.
В качестве входных данных у вас есть три переменные (пожалуйста, опубликуйте код для его инициализации. Инициализация этих переменных не засчитывается в ваш счет):
k
: Массив символов. Каждый символ - тот, который должен использоваться на круговой диаграммеv
: Массив поплавков. Это процент от каждого персонажа. Длинаv
равна длинеk
. Сумма его элементов всегда равна 1,0r
: Integer> 1. Это радиус круговой диаграммы.
s=lambda k,v,a:' 'if not v else k[0]if a<v[0]else s(k[1:],v[1:],a-v[0])
-выражением и используя точку с запятой, чтобы поместить оператор if в одну строкуif x*x+y*y<r*r:a=atan2(y,x)/pi/2+.5;t=t+s(k,v,a)