স্টার প্রোগ্রামিং!


18

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা তারকাদের মুদ্রণ করে! প্রোগ্রামটি স্ট্যান্ডার ইনপুট দ্বারা দুটি পরামিতি গ্রহণ করবে: তারার আকার এবং তারার পয়েন্টের সংখ্যা। একটি তারা 0 এবং 10 এর মধ্যে যে কোনও আকারের হতে পারে এবং তার 3, 4 বা 5 পয়েন্ট থাকতে পারে। ইনপুট পরামিতিগুলি কমা দ্বারা পৃথক করা হয়, উদাহরণস্বরূপ: 5,3মানে 3 পয়েন্ট সহ একটি আকার 5 তারা। নক্ষত্রগুলি দ্বারা সুরক্ষিত*

প্রোগ্রামটি বিবেচনা করুন কেবল বৈধ ইনপুট পাবেন।

প্রিন্টগুলি অবশ্যই সঠিকভাবে ফাঁক করা উচিত যাতে আমরা আউটপুটে সুন্দর তারা দেখতে পাই!

পরামিতিগুলির ব্যাখ্যা

পয়েন্ট

কেন্দ্রীয় নক্ষত্র থেকে গণনা করা অস্ত্রের সংখ্যা।

3 পয়েন্ট তারকা :

       *
       *
       *
     *   *
    *     *

তারা একটি উল্লম্ব অস্ত্র এবং দুটি তির্যক বাহিনী দ্বারা রচিত হয়। তির্যক বাহুগুলির মধ্যে বিচ্ছেদ2*size-1

4 পয়েন্ট তারকা

   *     *
    *   *
      *
    *   *
   *     *

তাদের একটি এক্স আকার রয়েছে এবং দুটি তির্যক রেখা দ্বারা রচিত। লাইনের মধ্যে বিচ্ছেদ হয়2*(size-1)+1

5 পয়েন্ট তারকা

     *
     *
 * * * * *
    * *
   *   *

তারা একটি উল্লম্ব লাইন এবং একটি অনুভূমিক রেখা দ্বারা রচিত হয়। অনুভূমিক রেখার প্রতিটি নক্ষত্র একটি স্থান দ্বারা পৃথক করা হয়। এছাড়াও এগুলির দুটি তির্যক রেখা রয়েছে যার মধ্যে একটি পৃথকীকরণ রয়েছে2*(size-2)+1

আয়তন

আকারটি তারকাচিহ্নগুলির সংখ্যা যা কেন্দ্রীয় নক্ষত্রের (অন্তর্ভুক্ত) থেকে গণনা করা তারার প্রতিটি বাহু রয়েছে।

আকার 1 তারা একটি একক তারা দ্বারা রচিত হয়

*

আকার 2 তারা উদাহরণ

3 পয়েন্ট

       *
       *
     *   *

4 পয়েন্ট তারকা

    *   *
      *
    *   *

5 পয়েন্ট তারকা

     *
   * * *
    * *

পয়েন্ট প্যারামিটার ব্যাখ্যায় আপনার কাছে 3 টি আকারের তারার উদাহরণ রয়েছে।

জয়ের মানদণ্ড

সংক্ষিপ্ততম কোড জিতেছে। নিম্নলিখিত ইনপুট পরামিতিগুলির সাথে কোডটি পরীক্ষা করতে হবে:3,2 3,3 4,2 4,3 5,2 5,3

বোনাস

-25% অক্ষর পূর্বে ব্যাখ্যা করা মাপদণ্ডের সাথে 6 মাপের পয়েন্ট তৈরি করার জন্য গণনা করে (6 বাহু এবং আকারটি কেন্দ্রীয় নক্ষত্র থেকে গণনা করা নক্ষত্রের সংখ্যা)। নির্দিষ্টকরণের সম্মান করার সময় এটি আপনার যে কোনও রূপ হতে পারে। আকার 3 স্টোর সহ একটি আকারের 6 টির উদাহরণ:

      *
      *
  * * * * *
    * * *
   *  *  *

6 পয়েন্ট তারার নিম্নলিখিত ইনপুট সঙ্গে পরীক্ষা করা আবশ্যক 6,2 6,3


1
আপনার (5,3) নক্ষত্রের প্রথম উদাহরণে, দুটি অনুভূমিক পয়েন্টগুলি কি প্রতিটিের একটি দীর্ঘ নক্ষত্র দীর্ঘ হওয়া উচিত?
PhiNotPi

হ্যাঁ, তাই স্থির, ধন্যবাদ!
অ্যাভারোয়েস

3
"মাই গড ... এটি
স্টারে

এটাই হওয়া উচিত প্রশ্নের শিরোনাম!
লুসার droog

উত্তর:


36

গণিত 80 80 67 চর

কেউ জিজ্ঞাসা করবে এটি ASCII শিল্প কিনা, তবে আমি প্রতিরোধ করতে পারিনি।

Graphics@Table[Text["*", r {Cos@t, Sin@t}], {t,0,2π,2π/#1}, {r,0,#2-1}]&

ব্যবহার (বড় বড় আকারের করতে ফন্টের আকারটি 24 এ সেট করা setting)

Graphics@Table[Text["*"~Style~24, r {Cos@t, Sin@t}], {t,0,2π,2π/#1}, {r,0,#2-1}] &[6,4]

ছয় চার


নিম্নলিখিত ক্ষেত্রে আউটপুট :

{{3, 2}, {3, 3}, {4, 2}, {4, 3},

{5, 2}, {5, 3}, {6, 2}, {6, 3},

{7, 4}, {8, 3}, {9, 2}, {12, 4}

ফ্রেম তারা


কিভাবে এটা কাজ করে

(ক) প্রথম তারা একটি স্থানাঙ্কীন স্থানের উত্সে। আসুন এটি প্রদর্শন করুন।

(খ) এর পরে, আমরা একটি পয়েন্ট প্রদর্শন করব {1,0}

(গ) তারপরে একবারে পাঁচটি পয়েন্ট। এটি অনুসরণকারী প্রতিটি সমন্বয়কে আমরা একটি খাঁটি ফাংশন প্রয়োগ করেছি।

(d) স্থানাঙ্কগুলি নির্ধারণ করতে Cos এবং সিন ব্যবহার করুন

(ঙ) সমন্বয়কারীরা কেবল ইউনিট বৃত্তে কাজ করে; 6 টি হালকা বিমের সংখ্যা।

(চ) 0 থেকে 4 ইউনিট পর্যন্ত রেডিও আঁকুন।

options = Sequence[Axes -> True, ImageSize -> 225, BaseStyle -> 14];
a = Graphics[Text["*"~Style~{28, Blue}, {0, 0}], PlotLabel -> Style["a", 20], options];

b = Graphics[Text["*"~Style~{28, Blue}, {1, 0}], PlotLabel -> Style["b", 20], options];

c = Graphics[Text["*"~Style~{28, Blue}, {#1, #2}] & @@@ {{0, 0}, {1, 0}, {0, 1}, {-1, 0}, {0, -1}}, PlotLabel -> Style["c", 20], options];

d = Graphics[Text["*"~Style~{28, Blue}, {Cos@#, Sin@#}] & /@ {0, \[Pi]/3, 2 \[Pi]/3, \[Pi], 4 \[Pi]/3, 5 \[Pi]/3}, PlotLabel -> Style["d", 20], options];

e = Graphics@Table[Text["*"~Style~24, {Cos@t, Sin@t}], {t, 0, 2 \[Pi],  2 \[Pi]/#1}] &[6];

f = Graphics@Table[Text["*"~Style~24, r {Cos@t, Sin@t}], {t, 0, 2 \[Pi], 2 \[Pi]/#1}, {r, 0, #2 - 1}] &[6, 4];

GraphicsGrid[{{a, b, c}, {d, e, f}}, Dividers -> All]

ব্যাখ্যা


+1 খুব আকর্ষণীয়! এটি কীভাবে কাজ করে তা আপনি ব্যাখ্যা করতে পারেন?
রব

1
ব্যাখ্যার জন্য আপনাকে ধন্যবাদ, এটি আরও অর্থবোধ করা শুরু করে। আমি কেবল ইচ্ছুক যে ম্যাথামেটিকাকে এতটা "লকড" করা হয়নি এবং বেশিরভাগই শিক্ষাগত উদ্দেশ্যে। আপনার কি এমন কোনও সংস্থান আছে যা ম্যাথমেটিকা ​​আইডিই ডেমোর সাথে লিঙ্ক করে বা ওল্ফ্রাম যেগুলি সরবরাহ করে তার বাইরে উদাহরণ?
রব

ম্যাথমেটিকা ​​তার কমপটেবল ডকুমেন্ট ফর্ম্যাট দিয়ে যথেষ্ট পরিমাণে খোলে, যা শিক্ষামূলক, অ-বাণিজ্যিক উদ্দেশ্যে অ্যাপলেট বিনামূল্যে বিতরণ করতে দেয়। ম্যাথামেটিকায় উত্স কোডটি মূলত "লক ডাউন"। সম্পদের জন্য হিসাবে, আপনি এ HTTP দেখতে চাই করতে পারেন: /demonstrations.wolfram.com এবং mathematica.stackexchange.com/questions/18/...
DavidC

7

রুবি, এএসসিআইআই, 193 স্কোর 142 (189 অক্ষর - 25% বোনাস)

def s r,d
f=->a,n{[n*Math.sin(a),n*Math.cos(a)]}
s=d*6
p=[]
s.times{|k|p<<" "*s}
c=s/2
p[c][c]=?*
r.times{|a|d.times{|l|x,y=f[6.28/r*a,d*l]
p[c+x.round][c+y.round]=?*}}
p.map{|j|puts j}
end

এটি অনলাইনে পরীক্ষা করুন

আমি মনে করি এটি 6-রে স্টার বোনাসের জন্য যোগ্যতা অর্জন করে।

      *     *     

       *  *       


   *  *  *  *  *  


        *  *      

      *     *     







     * *    

    * * *   

     * *    





      *           *     


        *       *       



          *   *         


*   *   *   *   *   *   *


          *   *         



        *       *       


      *           *   

3

গণিত , 65 64

ডেভিডের পদ্ধতিটি আমি গ্রহণ করি:

f@p_=Graphics@Array[Text["*",{Cos@#,Sin@#}&[2π/p[[1]]#]#2]&,p,0]

ব্যবহার করুন:

f @ {6,4}

এখানে চিত্র বর্ণনা লিখুন

=পরিবর্তে ব্যবহারের কারণে ত্রুটি তৈরি হয় :=এবং এটি কোনও সংজ্ঞা দেওয়ার উপযুক্ত উপায় নয়, তবে এটি এখানে কাজ করে।

যদি একটিকে তারকাচিহ্নের পরিবর্তে বিন্দু ব্যবহার করার অনুমতি দেওয়া হয় তবে এটি (52 অক্ষর) লেখা যেতে পারে:

f@p_:=Most@ListPolarPlot@Array[{2π/p[[1]]#,#2}&,p,0]

f @ {6, 4}

এখানে চিত্র বর্ণনা লিখুন


আমি খাঁটি ফাংশনগুলির স্তরগুলি ব্যবহার করার ধারণাটি পছন্দ করি।
ডেভিডসি

@ ডেভিড ধন্যবাদ :-)
মিঃ উইজার্ড 14

@ অ্যাভারোস আপনার এই উত্তরটি গ্রহণ করা উচিত।
বাফার ওভার পড়ুন

0
use subs qw /N W E S NW NE SE SW Circler Printer/;
($size,$points)=split(/\,/,$ARGV[0]);
my $arrsize = $size>$points ? $size : $points;
for $my (0...2*$arrsize-2) {
    $starArray[$my]=(); 
}
if($size == 3) {
    @armlist=('N','SW','SE');
}
elsif($size == 4) {
    @armlist=('NE','NW','SW','SE');
}
elsif($size == 5) {
    @armlist=('E','N','W','SW','SE');
}
elsif($size == 6) {
    @armlist=('E','N','W','SW','S','SE');
}
elsif($size == 7) {
    @armlist=('E','N','W','SW','S','SE','NE');
}
elsif($size == 8) {
    @armlist=('E','N','W','SW','S','SE','NE','NW');
}
Circler;
Printer;
sub Circler{
    for (@armlist) {
        &{$_};
    }
}
sub Printer{
    for $my1 (0...2*$arrsize-2) {
        for $my2 (0...2*$arrsize-2) {
            print "$starArray[$my1]->[$my2]"."\t"; 
        }
        print "\n\n";
    }
}
sub N {
    for $my (0...$points-1) {
        $starArray[$arrsize-1-$my]->[$arrsize-1]="*"; 
    }
}
sub E {
    for $my (0...$points-1) {
        $starArray[$arrsize-1]->[$arrsize-1+$my]="*"; 
    }
}
sub W {
    for $my (0...$points-1) {
        $starArray[$arrsize-1]->[$arrsize-1-$my]="*"; 
    }
}
sub S {
    for $my (0...$points-1) {
        $starArray[$arrsize-1+$my]->[$arrsize-1]="*"; 
    }
}
sub NW {
    for $my (0...$points-1) {
        $starArray[$arrsize-1-$my]->[$arrsize-1-$my]="*"; 
    }
}
sub NE {
    for $my (0...$points-1) {
        $starArray[$arrsize-1-$my]->[$arrsize-1+$my]="*"; 
    }
}
sub SE {
    for $my (0...$points-1) {
        $starArray[$arrsize-1+$my]->[$arrsize-1+$my]="*"; 
    }
}
sub SW {
    for $my (0...$points-1) {
        $starArray[$arrsize-1+$my]->[$arrsize-1-$my]="*"; 
    }
}
__END__;

5
এটা কি? পার্ল?
লুসার droog

7
হতে পারে না, আমি পার্ল কোডটি এর আগে কখনও দেখিনি
জামিলাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.