เป้าหมายของคุณคือส่งออกแผนภูมิวงกลมของ ASCII นี่คือ code-golf ดังนั้นโปรแกรมที่สั้นที่สุด (นับจำนวนไบต์ของซอร์สโค้ดไม่ใช่ตัวอักษร) จะชนะ
ไม่อนุญาตให้มีซอฟต์แวร์หรือ API ภายนอก เฉพาะภาษาพื้นเมืองของแต่ละภาษา
มุมเริ่มต้นและทิศทาง (ตามเข็มนาฬิกา / ทวนเข็มนาฬิกา) ของวงกลมไม่สำคัญ ผลลัพธ์สามารถดูเป็นรูปไข่ได้เนื่องจากความสูงของอักขระจะเหนือกว่าความกว้างของอักขระเสมอ
"พื้นหลัง" (อักขระทางด้านซ้ายหรือด้านขวาของวงกลม) ต้องเป็นช่องว่าง
คุณมีตัวแปรสามตัว (โปรดโพสต์โค้ดเพื่อเริ่มต้นการเริ่มต้นตัวแปรเหล่านี้จะไม่ถูกนับในคะแนนของคุณ):
k
: อาร์เรย์ของอักขระ อักขระแต่ละตัวเป็นอักขระที่ต้องใช้ในแผนภูมิวงกลมv
: อาร์เรย์ลอย เป็นเปอร์เซ็นต์ของตัวละครแต่ละตัว ความยาวของมีค่าเท่ากับความยาวของv
k
ผลรวมขององค์ประกอบคือ 1.0 เสมอr
: 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)