अससी कला पाई चार्ट


16

आपका लक्ष्य ASCII कला पाई चार्ट का उत्पादन करना है। यह कोड-गोल्फ है, इसलिए सबसे छोटा प्रोग्राम (स्रोत कोड के बाइट्स की गिनती, वर्ण नहीं) जीतता है।

किसी भी बाहरी सॉफ्टवेयर्स या एपीआई की अनुमति नहीं है। प्रत्येक भाषा के केवल मूल निवासी।

सर्कल के शुरुआती कोण और दिशा (घड़ी की दिशा में / एंटीक्लॉकवाइज) महत्वपूर्ण नहीं हैं। आउटपुट अंडाकार दिख सकता है क्योंकि एक चरित्र की ऊंचाई हमेशा इसकी चौड़ाई से बेहतर होती है।

"पृष्ठभूमि" (पाई के दाईं या दाईं ओर वर्ण) रिक्त स्थान होना चाहिए।

इनपुट के रूप में, आपके पास तीन चर हैं (कृपया इसे प्रारंभ करने के लिए कोड पोस्ट करें। इन चरों की गणना आपके स्कोर में नहीं की गई है):

  • k: पात्रों की सरणी। प्रत्येक वर्ण वह है जिसका उपयोग पाई चार्ट पर किया जाना है
  • v: फ़्लोट्स की सरणी। यह प्रत्येक वर्ण का प्रतिशत है। की लंबाई के vबराबर है k। तत्वों का योग हमेशा 1.0 होता है
  • r : इंटेगर> 1. यह पाई चार्ट की त्रिज्या है।

(Σमैं=1|v|vमैं)<1

जवाबों:


6

पायथन: 255 चर - 20% = 204

from math import*
def s(k,v,a):
 if not v:return ' '
 if a<v[0]:return k[0]
 return s(k[1:],v[1:],a-v[0])
def p(k,v,r):
 d=range(-r,r)
 for y in d:
  t=""
  for x in d:
   if x*x+y*y<r*r:
    a=atan2(y,x)/pi/2+.5
    t=t+s(k,v,a)
   else:t=t+" "
  print t

उदाहरण:

>>> pie.p("ABCD", [0.25,0.125,0.125,0.125],8)

     AAABBBB    
   AAAAABBBBBB  
  AAAAAABBBBBCC
  AAAAAABBBBCCC
 AAAAAAABBBCCCCC
 AAAAAAABBCCCCCC
 AAAAAAABCCCCCCC
        DDDDDDDD
          DDDDDD
           DDDDD
            DDDD
             DD
              D


>>>


>>> pie.p(".$!@", [0.3,0.3,0.3,0.1],6)

   .....$$  
  ......$$$
 ......$$$$$
 ......$$$$$
 ......$$$$$
 @@@@@$$$$$$
 @@@@!!!$$$$
 @@@!!!!!$$$
 @!!!!!!!!!$
  !!!!!!!!!
   !!!!!!!  
>>>

यह एक s लंबर के साथ फ़ंक्शन s को प्रतिस्थापित करके 231 बाइट्स तक कम किया जा सकता है 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 x*x+y*y<r*r:a=atan2(y,x)/pi/2+.5;t=t+s(k,v,a)
अनाम नहीं लिफ़्टर

7

जावास्क्रिप्ट, 259

d=r*2;M=Math;R=M.round;p=[];for(y=0;y<d;y++){p[y]=[];for(x=0;x<d;x++)p[y][x]=" "}t=0;i=-1;for(f=0;f<1;f+=1/(r*20)){if(f>t)t+=v[++i];a=M.PI*2*f;for(j=0;j<r;j++)p[R(M.sin(a)*j)+r][R(M.cos(a)*j)+r]=k[i]}s="";for(y=0;y<d;y++){for(x=0;x<d;x++)s+=p[y][x];s+="\n";}s

फ़ायरफ़ॉक्स खरोंच में काम करता है।

पहला उदाहरण

इनपुट:

var k = ["#", "+",  "$",  "X"];
var v = [0.2, 0.4, 0.15, 0.25];
var r = 10;

आउटपुट:

       $$$XXXX      
     $$$$$XXXXXX    
    $$$$$$XXXXXXX   
   $$$$$$$XXXXXXXX  
  +$$$$$$$XXXXXXXXX 
  ++$$$$$$XXXXXXXXX 
 +++++$$$$XXXXXXXXXX
 ++++++$$$XXXXXXXXXX
 +++++++$$XXXXXXXXXX
 +++++++++XXXXXXXXXX
 ++++++++++#########
 +++++++++++########
 +++++++++++########
  ++++++++++####### 
  +++++++++++###### 
   ++++++++++#####  
    +++++++++####   
     ++++++++###    
       +++++++      

दूसरा उदाहरण:

इनपुट:

var k = ["A",  "B", "C" ];
var v = [0.5, 0.25, 0.25];
var r = 5;

आउटपुट:

   BBCCC  
  BBBCCCC 
 BBBBCCCCC
 BBBBCCCCC
 BBBBCCCCC
 AAAAAAAAA
 AAAAAAAAA
  AAAAAAA 
   AAAAA  
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.