Ваша мета - вивести графічну кругову діаграму ASCII. Це код-гольф, тому виграє найкоротша програма (підрахунок байтів вихідного коду, а не символів).
Не допускаються зовнішні програмні засоби чи API. Тільки рідні з кожної мови.
Початковий кут і напрямок (за годинниковою / проти годинникової стрілки) кола не важливі. Вихід може виглядати овальним, оскільки висота персонажа завжди перевершує його ширину.
"Фоном" (символи зліва або праворуч від пирога) повинні бути пробіли.
У якості введення у вас є три змінні (будь ласка, опублікуйте код для ініціалізації. Ініціалізація цих змінних не враховується у вашому балі):
k
: Масив символів. Кожен символ є тим, який повинен бути використаний на круговій діаграміv
: Масив поплавків. Це відсоток кожного символу. Довжинаv
дорівнює довжиніk
. Сума його елементів завжди 1,0r
: Ціле число> 1. Це радіус кругової діаграми.
Бонус: відніміть 20% від вашої оцінки, якщо ви можете вивести неповний пиріг (у випадку ).
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)