Amacınız bir ASCII sanat pasta grafiği çıkarmaktır. Bu kod golfüdür, bu nedenle en kısa program (karakterlerin değil kaynak kodun baytlarını sayarak) kazanır.
Harici yazılımlara veya API'lara izin verilmez. Her dilin yalnızca ana dilleri.
Dairenin başlangıç açısı ve yönü (saat yönünde / saat yönünün tersine) önemli değildir. Çıktı oval görünebilir, çünkü bir karakterin yüksekliği her zaman genişliğinden daha üstündür.
"Arka plan" (pastanın solundaki veya sağındaki karakterler) boşluk olmalıdır.
Giriş olarak üç değişkeniniz var (lütfen kodu başlatmak için gönderin. Bu değişkenlerin başlatılması puanınıza dahil edilmez):
k
: Karakter dizisi. Her karakter, pasta grafikte kullanılması gereken karakterdirv
: Şamandıra dizisi. Her karakterin yüzdesidir. Uzunluğu, uzunluğunav
eşittirk
. Elemanlarının toplamı her zaman 1.0r
: Tamsayı> 1. Pasta grafiğin yarıçapı.
Bonus: Eksik bir pasta çıkarırsanız puanınızın% 20'sini çıkarın ( ).
s=lambda k,v,a:' 'if not v else k[0]if a<v[0]else s(k[1:],v[1:],a-v[0])
ve if ifadesini bir satıra koymak için noktalı virgül kullanılarak 231 bayta düşürülebilir.if x*x+y*y<r*r:a=atan2(y,x)/pi/2+.5;t=t+s(k,v,a)