আসকি আর্ট পাই চার্ট


16

আপনার লক্ষ্য একটি ASCII আর্ট পাই চার্ট আউটপুট। এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম প্রোগ্রাম (উত্স কোডের বাইটগুলি গণনা করে, অক্ষরগুলি নয়) জিতে যায়।

কোনও বাহ্যিক সফ্টওয়্যার বা API গুলি অনুমোদিত নয় প্রতিটি ভাষার কেবল স্থানীয় ভাষা।

বৃত্তের প্রারম্ভিক কোণ এবং দিক (ক্লকওয়াইজ / অ্যান্টলিকওয়াস) গুরুত্বপূর্ণ নয়। আউটপুটটি ডিম্বাকৃতি দেখতে পারে কারণ একটি অক্ষরের উচ্চতা সর্বদা তার প্রস্থের চেয়ে বেশি is

"ব্যাকগ্রাউন্ড" (পাই এর বাম বা ডানদিকে অক্ষর) অবশ্যই ফাঁকা স্থান।

ইনপুট হিসাবে আপনার তিনটি ভেরিয়েবল রয়েছে (দয়া করে এটি শুরু করার জন্য কোড পোস্ট করুন these

  • k: অক্ষরের অ্যারে। প্রতিটি চরিত্র হ'ল পাই চার্টে ব্যবহার করতে হয়
  • v: ফ্লোটের অ্যারে। এটি প্রতিটি চরিত্রের শতাংশ। দৈর্ঘ্য দৈর্ঘ্যের vসমান k। এর উপাদানগুলির যোগফল সর্বদা 1.0 থাকে
  • r : পূর্ণসংখ্যা> 1. এটি পাই চার্টের ব্যাসার্ধ।

বোনাস: যদি আপনি অসম্পূর্ণ পাই আউটপুট করতে পারেন তবে আপনার স্কোরের 20% বিয়োগ করুন ক্ষেত্রে ))।(Σআমি=1|বনাম|বনামআমি)<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=lambda k,v,a:' 'if not v else k[0]if a<v[0]else s(k[1:],v[1:],a-v[0])এবং সেফ-স্টেটমেন্টটিকে একটি লাইনে রাখার জন্য একটি অর্ধ-কোলন ব্যবহার করে 231 বাইটে হ্রাস করা যেতে পারে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  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.