मुझे कुछ आतिशबाजी दिखाओ!


16

दिया, किसी भी तरह से और आदेश,

  • आयाम (जो भी आप चाहते हैं)

  • एक संभावना (जो भी प्रारूप में आप चाहते हैं)

  • पुनरावृत्तियों की संख्या (आप चुन सकते हैं कि प्रारंभिक राज्य की गणना करें या नहीं)

कर एक निम्न में से:

  • चेतन, या

  • के प्रत्येक चरण का उत्पादन या

  • के राज्यों की सूची लौटाएं

उन आयामों का एक अंतरिक्ष से भरा आकाश।

प्रत्येक पुनरावृत्ति के लिए:

  • हर आकाश चरित्र में बनने की संभावना है *

  • आठ वर्ण जो किसी भी तरह से घिरे *हैं
    \ | /
    -      -
    / | \, अगर वे सितारे नहीं बनते हैं, हालांकि,

  • यदि कोई वर्ण दो *s की सीमा के भीतर है , तो इसे a बनाएंX

उदाहरण

7 × 22 आकाश (केवल स्पष्टता के लिए फ्रेम - फ़्रेम का उत्पादन न करें)

┌──────────────────────┐
│                      │
│                      │
│                      │
│                      │
│                      │
│                      │
│                      │
└──────────────────────┘

1% संभावना बन सकता है

┌──────────────────────┐
│  *                   │
│                      │
│                      │
│                      │
│                      │
│           *          │
│                      │
└──────────────────────┘

और अगला कदम

┌──────────────────────┐
│ - - *                │
│ /|\                  │
│          *           │
│                      │
│          \|/         │
│          - -         │
│          /|\         │
└──────────────────────┘

और फिर

┌──────────────────────┐
│    - -               │
│    /|\  \|/          │
│         - -          │
│         /|\          │
│                      │
│      * *             │
│                      │
└──────────────────────┘

तथा

┌──────────────────────┐
│                      │
│                      │
│                      │
│                      │
│     \|X|/            │
│     - X -            │
│     /|X|\          * │
└──────────────────────┘

और इसी तरह

┌──────────────────────┐
│                      │
│                      │
│                      │
│                   *  │
│                      │
│                   \|/│
│                   - -│
└──────────────────────┘

5
अगर कोई यह देख रहा है कि वह यूएसए संस्कृति के बारे में बिल्कुल भी परिचित नहीं है, तो उन्हें भ्रम हो सकता है कि आप 4 जुलाई को आतिशबाजी क्यों शुरू कर रहे हैं।
ओकेक्स

@ ऑक्स का विरोध करने वाले सभी को नष्ट करने के लिए!
मैजिक ऑक्टोपस यूरन

जवाबों:


5

ईएस 6, 520 496 बाइट्स

क्लिपिंग और बाकी सब कुछ अब काम करना चाहिए।

(w,h,p,i,r=0,s=($=>{while(++r<i)for(j=0,_=$[r]=[],z=$[r-1]||[];j<w*h;){k=j+1,l='*',c=0
n=(j%w&&z[j-1]==l&&++c)|(k%w&&z[k]==l&&++c)?'-':' '
n=(z[j-w]==l&&++c)|(z[j+w]==l&&++c)?'|':n
n=(j%w&&z[j-w-1]==l&&++c)|(k%w&&z[k+w]==l&&++c)?'\\':n
n=(k%w&&z[k-w]==l&&++c)|(j%w&&z[j+w-1]==l&&++c)?'/':n
_[j++]=Math.random()<p?l:c>1?'X':n}})(x=[])||x)=>{c=document.body.children[0],r=0;while(++r<i)setTimeout((k=0)=>{for(r++,c.innerHTML='';k<h;)c.innerHTML+=s[r].slice(k*w,++k*w).join('')+'\n'},90*r);r=0}

एनीमेशन देखें!

जचार्जी की टिप के लिए 24 बाइट्स का धन्यवाद।

पुराना घोल, 478 बाइट (कतरन बग के साथ)

मुझे लगता है कि मुझे सभी नियम सही लगे, हालांकि समाधान में एक क्लिपिंग समस्या है, जहां सब कुछ सही / बाईं ओर से बाहर निकलता है, जो विपरीत दिशा में एक पंक्ति कम / अधिक होता है।

(w,h,p,i,r=0,s=($=>{while(++r<i)for(j=0,_=$[r]=[],z=$[r-1]||[];j<w*h;){c=0
n=(z[j-1]=='*'&&++c)|(z[j+1]=='*'&&++c)?'-':' '
n=(z[j-w]=='*'&&++c)|(z[j+w]=='*'&&++c)?'|':n
n=(z[j-w-1]=='*'&&++c)|(z[j+w+1]=='*'&&++c)?'\\':n
n=(z[j-w+1]=='*'&&++c)|(z[j+w-1]=='*'&&++c)?'/':n
_[j++]=Math.random()<p?'*':c>1?'X':n}})(x=[])||x)=>{c=document.body.children[0],r=0;while(++r<i)setTimeout((k=0)=>{for(r++,c.innerHTML='';k<h;)c.innerHTML+=s[r].slice(k*w,++k*w).join('')+'\n'},90*r);r=0}

पुराना देखें।


अच्छी तरह से किया। क्या आप किनारों पर रिक्त कॉलम, चेतन और फिर काट कर क्लिपिंग को ठीक नहीं कर सकते?
21

'*'जब से आप इसे इस्तेमाल करते हैं, तब आप एक चर को परिभाषित नहीं कर सकते थे ?
ज़चारि

@ Zacharý अच्छा टिप, मैं '*'अन्य आम तौर पर इस्तेमाल की जाने वाली चीजों के लिए चर को परिभाषित करूंगा।
2ndAttmt

अगर केवल JS के पास मैक्रोज़ थे।
ज़चारि

2

APL (Dyalog) , 65 वर्ण या 71 बाइट्स *

आयाम (पंक्तियाँ, कॉलम), तो पुनरावृत्तियों के लिए (प्रारंभिक अवस्था गिनती नहीं) के लिए संकेत देता है, तो संभावना के लिए (के रूप में एन में ¹/ )।

⎕{1=?⍺⍺:'*'2≤+/b←'*'=1↓4⌽,⍵:'X'⋄⊃b/'-/|\\|/-'}⌺3 3{⍺⍺⎕←⍵}⍣⎕⊢⎕⍴''

इसे ऑनलाइन आज़माएं!

⎕⍴'' इनपुट और उपयोग के लिए मिलता है कि करने के लिए आर रूप में की जरूरत एक खाली स्ट्रिंग eshape, रिक्तियों के साथ padding

 उपज है कि

... ⍣⎕ इनपुट के लिए शीघ्र और ऊपर ( many ) पर कई बार निम्न फ़ंक्शन लागू करें :

 ... {... } एक समारोह संकार्य (के रूप में समारोह नीचे का उपयोग कर प्राप्त ⍺⍺ ), के रूप में इस प्रकार है:

  ⎕←⍵ तर्क मुद्रित करें

  ⍺⍺ निम्नलिखित फ़ंक्शन लागू करें:

   … ⌺3 3 प्रत्येक तत्व के 3 × 3 मूर पड़ोस पर निम्नलिखित फ़ंक्शन लागू करें:

    ⎕{... } इनपुट प्राप्त करें और इसे एक नया फ़ंक्शन प्राप्त करने के लिए ऑपरेंड ( input ) के रूप में उपयोग करें

     ?⍺⍺ पहले के बीच यादृच्छिक पूर्णांक ⍺⍺ पूर्णांकों

     1= एक के बराबर अगर बूलियन

     : यदि सत्य हैं:

      '*' एक सितारा लौटाओ

      अन्य:

      ,⍵ तर्क (चपटा) तर्क (मूर पड़ोस)

      4⌽ इसे चक्रवात से बाईं ओर चार चरणों में घुमाएं

      1↓ एक तत्व को छोड़ें (मूल केंद्र)

      '*'= बुलियन सूची जहां एक तारे के बराबर है

      b← स्टोर करें कि बी के रूप में

      +/ योग है

      2≤ दो या अधिक होने पर बूलियन

      : यदि सत्य हैं:

       'X' एक एक्स लौटें

       अन्य:

       b/'-/|\\|/-'स्ट्रिंग को फ़िल्टर करने के लिए b का  उपयोग करें

        पहले एक को चुनें, अगर कोई नहीं हैं, तो प्रोटोटाइप चुनें (एक स्थान)


* Dyalog Classic में चलाने के लिए, बस बदलें साथ⎕U233A

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