Ihr Ziel ist es, ein ASCII-Art-Kreisdiagramm auszugeben. Dies ist Code-Golf, also gewinnt das kürzeste Programm (das die Bytes des Quellcodes zählt, nicht die Zeichen).
Externe Software oder APIs sind nicht zulässig. Nur die Muttersprachler jeder Sprache.
Der Startwinkel und die Richtung (im / gegen den Uhrzeigersinn) des Kreises sind nicht wichtig. Die Ausgabe kann oval aussehen, da die Höhe eines Zeichens immer größer ist als seine Breite.
Der "Hintergrund" (Zeichen links oder rechts vom Kreis) muss ein Leerzeichen sein.
Als Eingabe haben Sie drei Variablen (bitte geben Sie den Code für die Initialisierung an. Die Initialisierung dieser Variablen wird in Ihrer Punktzahl nicht berücksichtigt):
k
: Array von Zeichen. Jedes Zeichen muss im Kreisdiagramm verwendet werdenv
: Array von Schwimmern. Es ist der Prozentsatz jedes Zeichens. Die Länge vonv
ist gleich der Länge vonk
. Die Summe seiner Elemente ist immer 1.0r
: Integer> 1. Dies ist der Radius des Kreisdiagramms.
Bonus: Subtrahieren Sie 20% Ihrer Punktzahl, wenn Sie einen unvollständigen Kuchen ausgeben können (für den Fall, dass ).
s=lambda k,v,a:' 'if not v else k[0]if a<v[0]else s(k[1:],v[1:],a-v[0])
und die if-Anweisung mit einemif x*x+y*y<r*r:a=atan2(y,x)/pi/2+.5;t=t+s(k,v,a)