स्टार प्रोग्रामिंग!


18

चुनौती

एक प्रोग्राम या फ़ंक्शन लिखें जो सितारों को प्रिंट करता है! कार्यक्रम को स्टैंडर इनपुट द्वारा दो पैरामीटर प्राप्त होंगे: स्टार का आकार और स्टार के अंकों की संख्या। एक तारा 0 और 10 के बीच किसी भी आकार का हो सकता है और उसके 3, 4 या 5 अंक हो सकते हैं। इनपुट मापदंडों को अल्पविराम द्वारा अलग किया जाता है, उदाहरण के लिए: 5,33 अंक के साथ 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

हाँ यही है। निश्चित, धन्यवाद!
Averroes

3
"माई गॉड ... यह सितारों से भरा है"
ड्रेक क्लेरिस

यह प्रश्न शीर्षक होना चाहिए!
लूसर ड्रॉग

जवाबों:


36

गणितज्ञ 80 76 67 वर्ण

कुछ लोग सवाल करेंगे कि क्या यह ASCII कला है, लेकिन मैं विरोध नहीं कर सका।

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

उपयोग (तारों को बड़ा दिखाने के लिए 24 पर फ़ॉन्ट आकार सेट करना।)

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},

{,, ४}, {,, ३}, {९, २}, {१२, ४}}

तारे बने


यह काम किस प्रकार करता है

(a) पहला तारा एक समन्वित स्थान के मूल में है। इसे प्रदर्शित करते हैं।

(b) बाद में, हम {1,0} पर एक बिंदु प्रदर्शित करेंगे।

(c) फिर एक बार में 5 अंक। हमने निर्देशांक के प्रत्येक जोड़े पर एक शुद्ध कार्य लागू किया जो इसका अनुसरण करता है।

(d) निर्देशांक निर्धारित करने के लिए Cos और Sin का उपयोग करें

(ई) निर्देशांक केवल इकाई सर्कल पर काम करते हैं; 6 प्रकाश पुंज की संख्या है।

(च) ० से ४ इकाई तक रेडी ड्रा करें।

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
स्पष्टीकरण के लिए धन्यवाद, यह अधिक समझ बनाने के लिए शुरू हो रहा है। मैं बस कामना करता हूं कि मैथमेटिका इतना "लॉक डाउन" न हो और ज्यादातर शैक्षिक उद्देश्यों के लिए। क्या आपके पास कोई ऐसा संसाधन है जो किसी Mathematica IDE डेमो या वुल्फराम द्वारा उपलब्ध कराए गए उदाहरणों से परे है?
रोब

गणितज्ञ अपने कम्प्यूटेशनल दस्तावेज़ प्रारूप के साथ काफी खुल गए, जो शैक्षिक, गैर-वाणिज्यिक प्रयोजनों के लिए ऐपलेट्स के मुफ्त वितरण की अनुमति देता है। हालांकि, मैथमेटिका का स्रोत कोड "लॉक डाउन" है, हालांकि। संसाधनों के लिए, आप http: /demonstrations.wolfram.com और mathematica.stackexchange.com/questions/18/…
डेविड

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

गणितज्ञ , ६५ ६४

डेविड की विधि पर मेरा विचार:

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}

यहाँ छवि विवरण दर्ज करें


मुझे शुद्ध कार्यों की परतों का उपयोग करने का विचार पसंद है।
डेविडक्र्स

@ डेविड धन्यवाद। :-)
श्री। छिपकली

@ आप को इस उत्तर को स्वीकार करना चाहिए।
बफ़र ओवर पढ़ें 11

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
वो क्या है? पर्ल?
लूज़र

7
नहीं हो सकता, मैंने पहले कभी भी पर्ल कोड नहीं देखा है
जामिलक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.