একটি ASCII চাঁদকে ঘিরে একটি ASCII ব্যাট ফ্লাই করুন


34

পটভূমি

এখানে হ্যালোইন সম্পর্কিত চ্যালেঞ্জ।

যেমনটি আপনি আমার শেষ চ্যালেঞ্জটি থেকে দেখেছেন যে আমি এসকিআই আর্ট অ্যানিমেশন হিসাবে আমি কীটাকে পছন্দ করি তা কেবল একটি প্যাটার্ন আঁকাই নয় তবে অগ্রগতির যে চিত্রটি আঁকবে তা নয়। এই ধারণাটি আমার কাছে এসেছিল বছর দুয়েক আগে আমাকে হ্যালোইনের স্ক্রিনে এলোমেলো এ্যাস্কি বাট তৈরি করে একটি (বরং নিস্তেজ) উপস্থাপনা চালিয়ে যেতে বলা হয়েছিল। বলার অপেক্ষা রাখে না যে আমি যথাযথভাবে বাধ্য হয়েছি (এর জন্য আমাকে অর্থ প্রদান করা হয়েছিল) তবে এটি আমাকে ভাবতে বাধ্য করেছিল যে এলোমেলো বাদুড়ের চেয়ে জীবনের আরও কিছু আছে। এর দ্বারা অনুপ্রাণিত হয়ে আমি এই চ্যালেঞ্জটির প্রস্তাব দিতে চাই।

চ্যালেঞ্জ

চাঁদের চারপাশে একটি ব্যাট ফ্লাই করুন।

এখানে একটি ব্যাট:

^o^

এখানে চাঁদ:

     mmm         
   mmmmmmm       
  mmmmmmmmm      
   mmmmmmm       
     mmm     

ব্যাট ফ্লাইটের প্রতিটি স্তর আপনাকে অবশ্যই প্রদর্শন করবে (আউটপুট দেখুন)।

ইনপুট

না

আউটপুট

      ^o^         
      mmm         
    mmmmmmm       
   mmmmmmmmm      
    mmmmmmm       
      mmm         


      mmm^o^      
    mmmmmmm       
   mmmmmmmmm      
    mmmmmmm       
      mmm         


      mmm         
    mmmmmmm^o^    
   mmmmmmmmm      
    mmmmmmm       
      mmm         


      mmm         
    mmmmmmm       
   mmmmmmmmm^o^   
    mmmmmmm       
      mmm         


      mmm         
    mmmmmmm       
   mmmmmmmmm      
    mmmmmmm^o^    
      mmm         


      mmm         
    mmmmmmm       
   mmmmmmmmm      
    mmmmmmm       
      mmm^o^      


      mmm         
    mmmmmmm       
   mmmmmmmmm      
    mmmmmmm       
      mmm         
      ^o^         


      mmm         
    mmmmmmm       
   mmmmmmmmm      
    mmmmmmm       
   ^o^mmm         


      mmm         
    mmmmmmm       
   mmmmmmmmm      
 ^o^mmmmmmm       
      mmm         


      mmm         
    mmmmmmm       
^o^mmmmmmmmm      
    mmmmmmm       
      mmm         


      mmm         
 ^o^mmmmmmm       
   mmmmmmmmm      
    mmmmmmm       
      mmm         


   ^o^mmm         
    mmmmmmm       
   mmmmmmmmm      
    mmmmmmm       
      mmm         


      ^o^         
      mmm         
    mmmmmmm       
   mmmmmmmmm      
    mmmmmmm       
      mmm   

বিধি

  • বাহ্যিক ফাইল বা ওয়েবসাইট থেকে কোনও পঠন নেই
  • আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন জমা দিতে পারেন
  • অতিরিক্ত স্পেস এবং / অথবা নিউলাইনগুলি আমার দ্বারা ভাল
  • স্ট্যান্ডার্ড লুফোলগুলি যথারীতি নিষিদ্ধ
  • ব্যাটটি অবশ্যই চাঁদের শীর্ষে ফিরে আসতে হবে
  • ফ্রেমগুলির মধ্যে পর্দাটি নির্দ্বিধায় মুক্ত মনে করুন যদি আপনি চান তবে এটি প্রয়োজন হয় না। উপরে প্রদর্শিত হিসাবে আউটপুট ঠিক আছে
  • এটি কোড গল্ফ হিসাবে, বিজয়ীর সর্বনিম্ন বাইট গণনা সহ উত্তর হবে যদিও কোনও উত্তর স্বাগত

নমুনা

সম্পূর্ণরূপে অগল্ফড পাইথন 2 (620 বাইটে রেফারেন্স বাস্তবায়ন তবে এটি করা যেতে পারে তা প্রমাণ করার জন্য এটি পরে গল্ফ করতে পারে)।

b='^o^'
m=['                     ',
'         mmm         ',
'       mmmmmmm       ',
'      mmmmmmmmm      ',
'       mmmmmmm       ',
'         mmm         ',
'                     ']
p=[(9,12),(12,15),(14,17),(15,18),(14,17),(12,15),(9,12),(6,9),(4,7),(3,6),(4,7),(6,9),(9,12)]
d=0
for z in range(7):
    x=map(str,m[z])
    c="".join(x[:p[z][0]]) + b + "".join(x[p[z][1]:])+"\n"
    print "\n".join(m[:z]) + "\n" + c+"\n".join(m[z+1:])
for z in range(6)[::-1]:
    x=map(str,m[z])
    c="".join(x[:p[z+6][0]]) + b + "".join(x[p[z+6][1]:])+"\n"
    print "\n".join(m[:z]) + "\n" + c+"\n".join(m[z+1:])

ফল

যদিও @ জনাথন স্পষ্টতই জেলির সাথে বাইট কাউন্টে জিতলেন, আমি @ ওয়ার্সার ব্রেইনফাকের উত্তরটিকে সম্পূর্ণরূপে স্বীকৃত উত্তর হিসাবে চিহ্নিত করতে যাচ্ছি কারণ আমি মনে করি যে যে কেউ এই জাতীয় পাগল ভাষায় আসলে এরকম কিছু করতে পারে তা +15 এর প্রাপ্য দাবিদার এটি কত বাইট লাগে। গল্ফিংয়ের ভাষা নিয়ে আমার কোনও সমস্যা আছে বলে এটি নয়। আপনার যদি কোনও সন্দেহ থাকে তবে মেটাতে এ সম্পর্কিত একটি প্রশ্নের উত্তর দেখুন । যারা যে কোনও ভাষায় অবদান রেখেছিলেন তাদের সবাইকে অনেক ধন্যবাদ এবং শ্রদ্ধা।


ধন্যবাদ অলিভার আমি স্যান্ডবক্সের পরে এটি সরাতে ভুলে গেছি।
এলপেড্রো

ট্যাগ ট্যাগ যুক্ত করার জন্য @ ডিএ হাগলেনি ধন্যবাদ। আমি সে সম্পর্কে ভাবিনি।
এলপেড্রো

6
আপনি যদি মনে করেন যে রেফারেন্স বাস্তবায়ন পুরোপুরি অচল, আমি কোনও প্রোগ্রামিং প্রকল্পে আপনার সাথে কাজ করতে চাই না।
মনিকা এর মামলা মামলা

3
ঠিক আছে, সম্ভবত তখন কিছুটা গল্ফ হয়েছে :-)
এলপেড্রো

উত্তর:


9

ব্রেইনফাক, 690 বাইট

এটি আমার প্রথমবারের মতো গল্ফিং, সুতরাং আমি নিশ্চিত যে উন্নতির আরও অনেক জায়গা এখনও আছে

-[-[-<]>>+<]>-<<+++[>+++++++<-]>>>+>>-[<-->-------]<->++++++++>+>+++++>+>+++++>+>+++++++>+>+++++>+>+++++>+>++++++++>+>+>+>>+++[<++++++>-]<+>+>-->+>+>+[<]>[[<+>>-[>]+[[<]>+[>]<+[<]>>>-]<<[->>+<<]>-]>-[->>>>+<<<<]>++]>>>[[-]<]>>>>[>]>>+>+++++++<<<<[<]+<+<<+[[<]++++[>++++<-]>[<+[>]>[-<+>]<[<]>>-]>[>]++++++++++[>]>>>-[<]<<[<]<]<[<]>->-<<<[-]++++++<+<+++[>++++++<-]+<++++[>++++++++<-]---<-[>+<-----]++<----[>+<----]--<-[>+<---]<-[>++<-----]++++<-[>+<---]++<-[>+<-------]---<----[>+<----]<--[>+<++++++]<+++++[>+++++<-]++++++>[[[>]>[>]>>[-<<+>>]<<[<]<[<]>-]>[>]>[>]+++++++[>+++++++++<-]>-[->+>+>+<<<]++++[>>++++<<-]>>+<<<<[<]>[.>]>>[.>]<[<]>[-]>[-]>[-]<+[--<---[->]<]<[->+>+>+<<<]<<[[->>+<<]<]<]

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

কিছু পাঠযোগ্যতার জন্য অসমাপ্ত:

-[-[-<]>>+<]>-<<+++[>+++++++<-]>>>+>>-[<-->-------]<->++++++++>+>+++++>+>+++++>+>+++++++>+>+++++>+>+++++>+>++++++++>+>+>+>>+++[<++++++>-]<+>+>-->+>+>+
Sets counters for creation of the m's and spaces
[<]>[[<+>>-[>]+[[<]>+[>]<+[<]>>>-]<<[->>+<<]>-]>-[->>>>+<<<<]>++]
Adds the first counter plus two of the character at the second counter to the end of the
current set of cells removes the first two counters on the list then repeats until
it encounters a 254
>>>[[-]<]>>>>[>]>>+>+++++++<<<<[<]
Removes some excess cells then adds a 7 after the end of the set of cells
+<+<<+[[<]++++[>++++<-]>[<+[>]>[-<+>]<[<]>>-]>[>]++++++++++[>]>>>-[<]<<[<]<]
Adds a newline every 16 characters until 7 newlines are added
<[<]>->-<<<[-]++++++<+<+++[>++++++<-]+<++++[>++++++++<-]---<-[>+<-----]++<----[>+<----]--<-[>+<---]<-[>++<-----]++++<-[>+<---]++<-[>+<-------]---<----[>+<----]<--[>+<++++++]<+++++[>+++++<-]++++++
Removes some excess cells then sets indices for the locations of bats
>[[[>]>[>]>>[-<<+>>]<<[<]<[<]>-]>[>]>[>]+++++++[>+++++++++<-]>-[->+>+>+<<<]++++[>>++++<<-]>>+<<<<[<]>[.>]>>[.>]<[<]>[-]>[-]>[-]<+[--<---[->]<]<[->+>+>+<<<]<<[[->>+<<]<]<]
Loops through the indices replacing the spaces at each index with a bat then printing 
the set of cells then changing the bat back to spaces

আমি এই সত্যটি ব্যবহার করতে চেয়েছিলাম যে শুরুতে একটি নতুন লাইন যুক্ত করে, প্রতিটি পর্যায় দুটি ভিন্ন ধাপ পেতে উভয় দিকেই পড়া যায়, তবে আমি সাড়ে ছয়টি পর্যায় না তৈরি করে এর মতো ভাল উপায় খুঁজে পাই না couldn't একবার.


2
খুব সুন্দর! আমি মনে করি না যে ব্রেনফাকের এই চ্যালেঞ্জের জবাব দেওয়ার মতো ধৈর্য আমার আছে, হাহা।
ডিজেএমসিএমহেম

1
একটি টিআইও লিঙ্ক যুক্ত হয়েছে, আশা করি আপনার আপত্তি নেই। এছাড়াও, আমি 693 বাইট গণনা করা হয় বলে মনে হচ্ছে।
এমিগানা

পাঠযোগ্যতার জন্য অসম্পূর্ণ এখনও অপঠনযোগ্যতার জন্য প্রথম পুরষ্কার জিততে পারে :) আসলে এ জাতীয় পাগল ভাষায় এটি করার জন্য মোট সম্মান। উত্তরের জন্য খুব সুন্দর এবং ধন্যবাদ। +1 টি। যে কোনও সময় 690 বাইট মূল্য।
এলপেড্রো

@ এনিগমা আমার কাছ থেকে, টিআইও লিঙ্কটির জন্য ধন্যবাদ।
এলপেড্রো

@ ডিজেএমসিমেহেম, আমি অবশ্যই অনুলিপি / পেস্টের সাথে গোলমাল করেছি, উগ্রহীন আকারে একটি সদৃশ [<] উপস্থিত ছিল যা কেবল একবারই সেখানে পাওয়া উচিত ছিল। এখনই ঠিক করা উচিত।
Oyarsa

23

05 এ বি 1 ই , 69 62 60 বাইট

আদনানকে ধন্যবাদ 2 বাইট সংরক্ষণ করা ।

3ð×…^o^)U13FNV0379730vð5y>;ï-y_+×N(Y-12%_Xè'my×NY-12%_y&XèJ,

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

3ð×…^o^)Uতালিকা সঞ্চয় করে [" ","^o^"]এক্স পরে ব্যবহার করার জন্য।

13FNVলুপ 13 পর্যায়ে ওভার [0 .. 12] এবং দোকানে বর্তমান পুনরাবৃত্তির সূচক ওয়াই

0379730vলুপ প্রতিটি পর্যায়ে, সারি ধরে
যেখানে এন সারি সূচক এবং Y বর্তমান সংখ্যা M এর

আমরা floor(5/(y+1))-(y==0)প্রতিটি সারিতে স্পেস যুক্ত করে শুরু করি ð5y>;ï-y_+×

তারপরে আমরা নির্ধারণ করি যে মিটারের আগে কোনও ব্যাট বা 3 স্পেস থাকা উচিত কিনা ।
যদি (-N-Y)%12 == 0সত্য হয় তবে আমরা ব্যাট যুক্ত করি, অন্যথায় 3 টি স্পেস।
এই অভিব্যক্তি ( N(Y-12%_Xè) পর্যায়ক্রমে বাদুড় স্থাপন করবে 0,6-12

তারপরে আমরা y m এর সাথে রাখি 'my×

এখন আমরা নির্ধারণ করি যে মিটার পরে কোনও ব্যাট বা 3 স্পেস থাকা উচিত কিনা ।
কোডটি NY-12%_y&Xèযদি ((N-Y)%12 == 0) and y!=0সত্য হয় তবে একটি ব্যাট রাখবে , অন্যথায় 3 টি স্পেস।
এটি ধাপে বাদুড় স্থাপন করবে 1-5

অবশেষে আমরা একটি স্ট্রিং মধ্যে পুরো সারি যোগ দিতে এবং একটি newline সঙ্গে মুদ্রণ: J,


5
এটি টিন +1 এ ঠিক যা বলেছে তা করে
এলপ্যাড্রো

1
3ð×…^o^)পরিবর্তে " ^o^"2äদুটি বাইট সংরক্ষণ করা উচিত।
আদনান

@ আদনান: ধন্যবাদ! কিছু কারণে আমি কেবল ধরে নিয়েছি যে এটি দীর্ঘতর হবে এবং কখনও চেষ্টাও করা হয়নি 3ð×
এমিগানা

20

জাভাস্ক্রিপ্ট (ES6), 109 144 140 138 বাইট

f=(k=13,b=y=>(y-k)%12?'   ':'^o^')=>k--?[0,3,7,9,7,3,0].map((n,y)=>' '.repeat(5-n/2+!n)+b(y)+'m'.repeat(n)+b(n?-y:.1)).join`
`+`
`+f(k):''

console.log(f());

অ্যানিমেটেড সংস্করণ


সুন্দর উত্তর এবং আপনি আমার শেষ চ্যালেঞ্জ হিসাবে প্রথম :) :)
এলপেড্রো

1
চমৎকার উত্তর. আমি এইভাবে ভেবে আমার মাথা গুটিয়ে রাখতে পারি না।
zfrisch

15

এইচটিএমএল + জেএস, 153 149 বাইট

n=setInterval(_=>o.innerText=`zzd
zc3e
 b7f
a9g
 l7h
zk3i
zzj`.replace(/\S/g,c=>parseInt(c,36)-n%12-10?`m`.repeat(c)||`   `:`^o^`,n++),1e3)
<pre id=o>

সম্পাদনা করুন: @ রিকহিচকককে ধন্যবাদ একটি গুচ্ছ সংরক্ষণ করা। বিরক্তিকর সংস্করণ যা কেবল অ্যারেতে 13 টি মাল্টলাইন স্ট্রিং দেয় 132 131 বাইট:

_=>[...Array(13)].map((_,n)=>`zza
zl3b
 k7c
j9d
 i7e
zh3f
zzg`.replace(/\S/g,c=>parseInt(c,36)-n%12-10?`m`.repeat(c)||`   `:`^o^`))

যদি আমি সত্যিই কঠোর হয়ে থাকি তবে আমি এটি চিহ্নিত করতাম যে ব্যাটটি শীর্ষে শুরু হয় না :) তবে তারপরে এটি সম্পূর্ণ বৃত্তটি করে এবং শীর্ষে মতামত সমাপ্তির উপর নির্ভর করে যা আমি বিধিগুলিতে নির্দিষ্ট করেছিলাম was প্রথম সম্পূর্ণ অ্যানিমেশনের জন্য +1। ভাল কাজ এবং ধন্যবাদ।
এলপেড্রো

@ এলপেড্রো আমি মনে করি যে জায়গাটি ব্যাট শুরু হয় তার ফলাফলের উপর নির্ভর করে setIntervalযা আমার ব্রাউজারে সর্বদা একই থাকে তবে অন্য ব্রাউজারগুলির ক্ষেত্রে এটি আলাদা হতে পারে।
নিল 21

ঠিক আছে, তবে আমি যেমন বলেছিলাম যে প্রারম্ভিক অবস্থানটি স্পষ্টভাবে নির্দিষ্ট করা হয়নি তাই আমি সেট ইন্টার্নভালকে সিদ্ধান্ত নিতে দিতে ঠিক আছি;) আমি আগ্রহের সাথে উবুন্টুতে চুমের সাথে দেখছি t সর্বদা শীর্ষের আগে একটি অবস্থান শুরু করে তবে তাতে কিছু আসে যায় না। আপনার উত্তরের জন্য দুর্দান্ত সমাধান এবং ধন্যবাদ আবার ..
এলপেড্রো

1
innerHTMLপরিবর্তে ব্যবহার করে আপনি একটি দম্পতি বাইট সংরক্ষণ করতে পারেন textContent। এবং অন্য একটি বাইট এ পরিবর্তন repeat(+c)করে repeat(c)
রিক হিচকক

2
(এবং 1000হতে পারে 1e3।)
রিক হিচককের

14

জেলি , 76 69 58 বাইট

⁾ mṁ11ż“椿¬®µ‘ŒḄ¤Œṙs⁴Y
_4¢ḣ;“^o^”;¢ṫ⁸¤
“½œ0CSbp\I7'ð½‘Ç€Y

TryItOnline

কিভাবে?

⁾ mṁ11ż“椿¬®µ‘ŒḄ¤Œṙs⁴Y - Link 1, make a moon (niladic)
⁾ m                     - literal " m"
   ṁ                    - reshape like
    11                  - 11 (interpreted as range(11)) -> " m m m m m "
                 ¤      - nilad followed by links as a nilad
       “椿¬®µ‘         - code page indexes [22,3,11,7,8,9]
               ŒḄ       - bounce -> [22,3,11,7,8,9,8,7,11,3,22]
      ż                 - zip -> [[22,' '],[3,'m'],[11,' '],...]
                  Œṙ    - run length decode -> "                      mmm           mmmmmmm        mmmmmmmmm        mmmmmmm           mmm                      "
                    s   - split into chunks of length
                     ⁴  - l6
                      Y - join with line feeds

_4¢ḣ;“^o^”;¢ṫ⁸¤ - Link 2, a moon with a bat placed: endIndex
_4              - subtract 4 (startIndex)
  ¢              - call last link (1) as a nilad
   ḣ            - ḣead to startIndex
    ;           - concatenate
     “^o^”      - literal "^o^"
          ;     - concatenate
              ¤ - nilad followed by links as a nilad
           ¢    - call last link (1) as a nilad
            ṫ⁸  - tail from endIndex

“½œ0CSbp\I7'ð½‘Ç€Y - Main link (niladic)
“½œ0CSbp\I7'𽑠   - code page indexes [10,30,48,67,83,98,112,92,73,55,39,24,10]
                   -    indices to the right of each bat in a constructed moon
               ǀ  - call last link (2) as a monad for each
                 Y - join on line feeds

খুব সুন্দর. ভাবুন আমি জেলিটিকে আরও কাছাকাছি দেখতে হবে।
এলপেড্রো

দুর্দান্ত ব্যাখ্যা। ধন্যবাদ।
এলপেড্রো

আপনি যদি আগ্রহী হন এবং সময় পান তবে আপনি পাইথনে কীভাবে এটি পৌঁছেছেন তা দেখতে দুর্দান্ত লাগবে। আমি সবসময় শিখতে খুশি।
এলপেড্রো

12

পাইথন 2, 146 144 138 বাইট

-২ বাইটস @ উইলেমকে ধন্যবাদ ( cএকটি দিয়ে লুপিংয়ের পরিবর্তে ভেরিয়েবলটি ব্যবহার করুন map)

m='\n'.join(int(a)*' '+int(b)*'m'+3*' 'for a,b in zip('6643466','0379730'))
for b in" -;L[hrbQ@2' ":c=ord(b)-23;print(m[:c-3]+'^o^'+m[c:])

repl.it

'6643466' চাঁদের আগে শূন্যস্থানগুলির সংখ্যা (খালি প্রথম এবং শেষ লাইনে with সহ, যেহেতু ব্যাটটি সেখানে যাবে)।

'0379730''m'প্রতিটি লাইনে চাঁদে s এর সংখ্যা ।

zipমধ্যে এই অক্ষরগুলি unpacks aএবং bএবং আকাশে চাঁদ তোলে m, প্রতিটি লাইনে 3 পিছনের শূন্যস্থানগুলি সঙ্গে।

শেষ লাইনটি চাঁদের মধ্যে ব্যাটের অবস্থানগুলি সরিয়ে দেয় এবং কার্যকরভাবে:

for c in(9,22,36,53,68,81,91,75,58,41,27,16,9):print(m[:c-3]+'^o^'+m[c:])

তবে অবস্থানগুলির দ্বিখণ্ডিতটি প্রিন্টযোগ্য অক্ষরগুলির অর্ডিনাল হিসাবে এনকোড করা হয়েছে, একটি যুক্ত 23 টি (যেহেতু 9 মুদ্রণযোগ্য নয়)। এটি হিসাবে প্রকাশিত হয় " -;L[hrbQ@2' "এবং c=ord(b)-23মানগুলি নিষ্কাশন করতে ব্যবহৃত হয়।


সম্মানের +1 এবং চ্যালেঞ্জটি উত্থাপনের জন্য ধন্যবাদ :) এখন এটি ঠিক কীভাবে কাজ করে তা সম্পর্কে আমাকে কাজ করতে হবে ...
এলপেড্রো

কখনও কখনও আমি 2 টি upvotes দিতে ইচ্ছুক।
এলপেড্রো

1
আপনি শেষ লাইনে দুটি চরিত্রটি এটি লিখে লিখে সংরক্ষণ করতে পারেন:for b in" -;L[hrbQ@2' ":c=ord(b)-23;print(m[:c-3]+'^o^'+m[c:])
উইলিয়াম

7

অটোভিম , 85 81 বাইট

কোনও অ্যানিমেশন নেই, সম্ভবত এখনও গল্ফযোগ্য ... তবুও, ব্লকের নতুন বাচ্চার পক্ষে খারাপ নয়! (Autovim)

ñ9am␛ÿP2xÿP4xyjGpđp2o
%ce 15
®q=8j$p
®z=6␍"_d3hP
ñğyG12PğÿPC^o^␛v^y6@q==o␛6@z==O

এটি চালানোর জন্য:

autovim run ascii-bat.autovim -ni

ব্যাখ্যা

সংক্ষেপে, আমরা চাঁদ আঁকছি, এটি 12 বার অনুলিপি করে আটকান, এবং দুটি ম্যাক্রো ব্যবহার করি: একটি প্রথম 7 চাঁদে ব্যাট সংযোজন করার জন্য, অন্যটি শেষ 6 end

" Draw the moon
ñ                                 " Normal mode
 9am␛                            " Write 9 `m`
      ÿP                          " Duplicate the line
        2x                        " Delete two characters
          ÿP                      " Duplicate the line
            4x                    " Delete 4 characters
              yj                  " Yank two lines
                Gp                " Paste at the end of the file
                  đp              " inverts the current line with the previous
                    2o            " Add two line breaks

%ce 15                            " Center our moon

" Macros
®q=8j$p                           " Macro `q` jumps 8 lines, and pastes
                                  "   at the end
®z=6␍"_d3hP                      " Macro `z` jumps 6 lines and replaces
                                  "   the previous 3 characters by the default

" Draw all 12 moons and add the bats
                                  "   register's content
ñ                                 " Run in normal mode
 ğyG                              " Copy the moon we just drew
    12P                           " Duplicate the moon 12 times
       ğÿP                        " Duplicate the top line (gets 3 centered `m`)
          C^o^␛                  " Change the mmm by a bat
                v^y               " Copy the bat we just drew
                   6@q            " Add the first 6 bats
                      ==          " Center the bat
                        o␛       " Add a line under the bat
                           6@z    " Add the 6 last bats
                              ==  " Align the last bat in the center
                                O " Add a line over the last moon

1
আমি ডাউনলোডের নির্দেশাবলী অনুসরণ করেছি, ভিআইএম ইনস্টল করেছি এবং নিম্নলিখিতগুলি দিয়ে শেষ করেছি: ভিআইএম - ভি আইএমপ্রোভড 7.4 (2013 আগস্ট 10, সংকলিত ডিসেম্বর 9 2014 17:36:41) অজানা বিকল্প যুক্তি: "- না-একটি-শব্দ" আরও তথ্য সাথে: "vim -h" এখন দেখার সময় পান নি তবে আজ সন্ধ্যায় একটি নাটক হবে। দেখতে আকর্ষণীয় একটি প্রকল্পের মতো।
এলপেড্রো

1
আপনার যদি অল্প সময় দেওয়ার কিছু থাকে, তবে একটি গিটহাব ইস্যুটি খুলুন - এটি আমার ফোনে (টার্মাক্স, একটি লিনাক্স বিতরণ) পাশাপাশি গিট বাশের উইন্ডোজে কাজ করছে। আমি এটি সর্বত্র কাজ করতে চাই! আমার সেরা অনুমান যে ভিআইএম 2013 সালে সংকলিত সত্যিকারের সর্বশেষতম সংস্করণ নয় :) :) (সর্বশেষ সংস্করণটি 8.0)
খ্রিস্টান রোনডাউ

ঠিক আছে. আমি কেবল প্যাকেজ পরিচালক থেকে ইনস্টল করেছি তাই সম্ভবত আমি আপগ্রেড বিকল্পটি চেষ্টা করব try আমি আপনাকে জানাতে হবে কি হয়।
এলপেড্রো

1
অনুরোধ হিসাবে গিটহাবের উপরে উত্থাপিত সমস্যা। আপগ্রেডের সমাধান হওয়ার পরে আপনি যদি এটিকে কোনও সমস্যা হিসাবে বিবেচনা না করেন তবে দয়া করে এড়ানো / প্রত্যাখ্যান করতে দ্বিধা বোধ করবেন না।
এলপেড্রো

1
সুতরাং এর মানে এখন এটি কাজ করে! গ্রেট!
খ্রিস্টান রোনডাও

7

পিএইচপি, 167 বাইট

আমি পিএইচপিতে একটি ছোট প্রোগ্রাম করেছি:

<?php foreach([0,3,7,9,7,3,0]as$l)$b.=str_pad(str_repeat('=',$l),15," ",2)."\n";foreach([6,25,43,60,75,89,102,83,65,48,33,19,6]as$x)echo substr_replace($b,'^o^',$x,3);

এখানে আরও ভার্বোজ সংস্করণ দেওয়া হয়েছে:

// width of the moon
$moonsizes = [0,3,7,9,7,3,0];
// position where to place the bat
$positions = [6,25,43,60,75,89,102,83,65,48,33,19,6];
// prepare base moon painting
foreach($moonsizes as $size){
    $basepainting .= str_pad(str_repeat('=',$size),15," ",STR_PAD_BOTH)."\n";
}
// loop frames and place bat
foreach($positions as $position) {
    echo substr_replace($basepainting,'^o^',$position,3);
}

এটি আমার প্রথম কোডগল্ফ, যদি আপনার কোনও পরামর্শ থাকে তবে আমি শুনে খুশি হলাম :)


পিপিসিজিতে আপনাকে স্বাগতম! ভাল উত্তর। ধন্যবাদ।
এলপেড্রো

7

পাইথন 2, 112 বাইট

b=['   ','^o^']
for k in range(91):r=k%7;print(b[k/7+r==12]*(r%6>0)+(r*(6-r)*8/5-5)*'m'+b[k/7%12==r]).center(15)

ছবিটি প্রিন্ট করুন। প্রতিটি লাইনের তিনটি অংশ রয়েছে

  • বাম দিকে একটি সম্ভাব্য ব্যাট
  • mচাঁদের জন্য কিছু সংখ্যক
  • ডানদিকে একটি সম্ভাব্য ব্যাট

এই অংশগুলি স্পেসিংয়ের জন্য 15 আকারের একটি বাক্সে সংক্ষিপ্ত এবং কেন্দ্রিক হয়। কেন্দ্রটি স্থানান্তরিত বাদুড়গুলি এড়ানোর জন্য, একটি অনুপস্থিত ব্যাট একই স্থানের তিনটি স্থান length চাঁদের উপরে বা নীচে ব্যাটসের জন্য, বাম বারের স্লট বাদ দেওয়া হবে এবং ডান স্লটটি দখল করা হবে।

এখানে 91 টি লাইন রয়েছে: 13 টি ছবির জন্য একটি 7-লাইনের চিত্র। এই divmod মাধ্যমে আপ গণনা করা হয়: যেমন kথেকে গন্য 0করার 91, (k/7, k%7)যায়

(0, 0)
(0, 1)
(0, 2)
(0, 3)
(0, 4)
(0, 5)
(0, 6)
(1, 0)
(1, 1)
 ....
(12, 5)
(12, 6)

k/7চিত্র r=k%7হিসাবে প্রথম মানটি এবং দ্বিতীয় মানটিকে ছবির মধ্যে থাকা সারি সংখ্যা হিসাবে নিয়ে যাওয়া, এটি প্রথমে চিত্র দ্বারা শীর্ষে আসে এবং তারপরে প্রতিটি চিত্রের মধ্যে সারি সংখ্যা দ্বারা, উভয়ই 0-সূচীযুক্ত হয়।

সংখ্যা m'সারি নম্বর দিয়ে চাঁদ পরিবর্তন গুলি r=k%7যেমন [0,3,7,9,7,3,0]। এর পরিবর্তে সূচকের চেয়ে সূত্রটি ছোট ছিল। স্বাধীনতার একটি সুবিধাজনক ডিগ্রী যে 0এর কোন নেতিবাচক মান হতে পারে দ্বারা গুন যেমন এই এখনও খালি স্ট্রিং দেয় m। প্যারাবোলা এবং মেঝে বিভাজক নিয়ে ফিডলিং একটি সূত্র দিয়েছে r*(6-r)*8/5-5

এখন, আমরা দুটি দিকে কোনও ব্যাট আঁকতে হবে বা খালি জায়গাটি নির্বাচন করতে চাই। অ্যারেতে b=[' ','^o^']বিকল্প রয়েছে।

0 টি সারিতে ব্যাট 0 টি (উপরে), সারি 1 তে ছবি 1 (ডান দিকে), সারি থেকে 6 picture ছবিতে (উপরে)। সুতরাং, এটি সারি এবং চিত্রের সংখ্যা সমান হিসাবে উপস্থিত কিনা তা পরীক্ষা করা সহজ k/7==r,। তবে আমাদের 0 টির মতো ছবি 0 দেখতেও দরকার, তাই আমরা প্রথমে 12 নম্বরের মডুলোটি নিই।

বাম দিকে এটি একই রকম। ব্যাট সারিতে বাম প্রদর্শিত r=5,4,3,2,1ছবির মধ্যে 7,8,9,10,11। সুতরাং, আমরা সারি এবং ছবির সংখ্যাটি 12 এর সমষ্টি কিনা তা আমরা যাচাই করি এবং আমরা সারিগুলিতে তিনটি ফাঁকা স্থানের চেয়ে কিছুই আঁকতেও নিশ্চিত করি 0এবং 6- ডান ব্যাট স্লটটি ব্যাটটি আঁকবে, এবং আমাদের অবশ্যই এটির কেন্দ্রিক জগাখিচু করা উচিত না।


1
@ Xnor এর দ্রুত ব্যাখ্যা করার কোনও সুযোগ? আমি এটি
চালিয়েছি

"প্যারাবোলা এবং মেঝে-বিভাজন দিয়ে ... ... - এর জন্য +1 - যদি আমি অনুমান করতে পারি যে, প্রথম বারের মতো এই শব্দগুচ্ছটি পিপিসি-তে ব্যবহৃত হয়েছে ... :-)
zmerch

ধন্যবাদ @ এক্সনর অসাধারণ ব্যাখ্যা। আমাকে এটি অধ্যয়ন করতে কিছু সময় ব্যয় করতে হবে :)
এলপেড্রো

6

সি #, 615 582 337 বাইট

এর মধ্যে একটিতে এটি আমার প্রথম (এখনও অনেক বেশি পাঠযোগ্য) প্রচেষ্টা, তাই আমি কয়েকশ বাইট ছাঁটাই করার কোনও পরামর্শকে সানন্দে স্বাগত জানাব! এখনই আমার তালিকার শীর্ষস্থানটি চাঁদ অ্যারে তৈরি করার একটি ছোট উপায়।

void M(){string[]m={"","      mmm","    mmmmmmm","   mmmmmmmmm","    mmmmmmm","      mmm",""};var b="^o^";for(int x=0;x<13;x++){var a=(string[])m.Clone();int n=x>6?12-x:x;int[] j={0,1,3,6};a[n]=!a[n].Contains("m")?"      "+b:x<=n?a[n]+b:new string(' ',j[Math.Abs(9-x)])+b+a[n].Replace(" ","");foreach(var c in a){Console.WriteLine(c);}}}

অবহেলিত (লুপ অন্তর্ভুক্ত!)

class Program {
    public static string[] moon = new string[] { "               ", "      mmm      ", "    mmmmmmm    ", "   mmmmmmmmm   ", "    mmmmmmm    ", "      mmm      ", "               " };

    public static string bat = "^o^";

    static void Main(string[] args) {
        while (true) {
            Fly();
        }
    }

    static void Fly() {
        int times = (moon.Length * 2) - 1;
        for (int x = 0; x < times; x++) {
            string[] temp = (string[])moon.Clone(); //create a new array to maintain the original

            int index = x >= moon.Length ? times - x - 1 : x;

            if (!temp[index].Contains("m")) {
                temp[index] = new string(' ', 6) + bat + new string(' ', 6);
            } else if (x <= index) {
                int lastM = temp[index].LastIndexOf('m') + 1;
                temp[index] = temp[index].Insert(lastM, bat);
            } else {
                int firstM = temp[index].IndexOf('m');
                char[] src = temp[index].ToCharArray();
                int i = firstM - bat.Length;
                src[i] = bat[0];
                src[i + 1] = bat[1];
                src[i + 2] = bat[2];

                temp[index] = new string(src);
            }

            for (int y = 0; y < temp.Length; y++) {
                Console.WriteLine(temp[y]);
            }
            Thread.Sleep(100);
            Console.Clear();
        }            
    }
}

সম্পাদনা:

অ্যারে ঘোষণার ফাঁকে ফাঁক করে 21 বাইট নিয়েছে। 15 টি অক্ষর প্রশস্ত গ্রিডের পরিবর্তে, প্রতিটি সারিটি ব্যাটের জন্য উপযুক্ত ফিট যথেষ্ট। Main()ঘোষণায় অযৌক্তিক স্ট্রিংয়ের জন্য আর 12 টি সরানো হয়েছে ।

সম্পাদনা 2:

245 বাইট বের করে বেশিরভাগ যুক্তি আবার লিখেছিলেন! মন্তব্য থেকে প্রস্তাবিত পরিবর্তন অন্তর্ভুক্ত। ধন্যবাদ!

মন্তব্যগুলি থেকে, M()এটি পূর্বের Main()পদ্ধতির পরিবর্তে একটি কার্যক্রমে রূপান্তরিত করেছে - সুতরাং এখন, এটি বাহ্যিকভাবে বলা দরকার।


পিপিসিজিতে আপনাকে স্বাগতম! :)
মার্টিন এন্ডার

স্বাগতম এবং প্রথম প্রথম প্রচেষ্টা! আপনার উত্তরের জন্য ধন্যবাদ. এসি না # বিশেষজ্ঞ নিজেই তাই সম্ভবত আপনাকে বেশি সাহায্য করতে পারে না তবে আমি নিশ্চিত যে আপনি অনেক সম্প্রদায়ের সদস্য পাবেন যারা সাহায্য করে খুশি হবেন।
এলপেড্রো

2
এগুলি new string[]থেকে সরিয়ে mএবং ঠিক রেখে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন string[]m={...}
পোকেচু 22

2
- varstring[]w=(string[])m.Clone();var w=(strin[])m.Clone();
এমএক্স ডি

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

6

পাইথন 2, 299 300 290 270 বাইট

গল্ফ ডাউন ডাউন কিছুটা গল্ফিংয়ের অভিজ্ঞতা অর্জন করেছে।

রেফারেন্স বাস্তবায়ন 321 320 330 বাইট দ্বারা গলফ হয়েছে । সুন্দর বা মার্জিত নয়। কেবল নিষ্ঠুর বলের স্ট্রিং এবং তালিকা স্লাইসিং ব্যবহার করে। বাইটটি নিচে নামিয়ে আনতে মজা পেয়েছিল তবে আমি মনে করি কোনও গুরুতর প্রতিযোগীর সাথে শুরু করার জন্য পদ্ধতিটি সম্পূর্ণ ভুল ছিল।

আমি এই উত্তরটি গুরুত্ব সহকারে গৃহীত হবে বলে আশা করি না তাই দয়া করে কোনও নিম্নগঠিত হন না। আমি প্রশ্নে বলেছিলাম যে আমি রেফারেন্স বাস্তবায়নটি গল্ফ করার চেষ্টা করব এবং এটি ঠিক এটি। সবেমাত্র মজাদার জন্য পোস্ট করা।

c,e,n=' ','m','\n';f,g=c*9+e*3+c*9,c*7+e*7+c*7;h=9,12;i=12,15;j=6,9;k=13,17;l=4,7;m=c*21,f,g,c*6+e*9+c*6,g,f,c*21;p=h,i,k,(15,18),k,i,h,j,l,(3,6),l,j,h;w=0
for z in map(int,'0123456543210'):print n.join(m[:z])+n+m[z][:p[w][0]]+'^o^'+m[z][p[w][1]:]+n+n.join(m[z+1:]);w+=1

এটি অনলাইন চেষ্টা করুন!


3

রুবি, 164 156 বাইট

puts Zlib.inflate Base64.decode64 "eNqlkrUVAAEMQvtMcZP9DfLYvzo3qhNSxQ2GVRC1ad29ar1JXaoHbul16Yig+p6BCKqtFBFU+1IE1famoHrX/jZBvN8e8f5tiE94Ib4SBREwNKH5BNJy2QM="

খুব সহজ প্রোগ্রাম। আরও কাজ করা যেতে পারে। মন্তব্যগুলিতে পরামর্শ দিন।


চমৎকার উত্তর. আমি বর্তমানে রুবির সাথে এই মুহুর্তে খেলছি যখন গল্ফিংয়ের কথা আসে তখন পাইথনের চেয়ে অনেক কম ভার্বোস লাগে looks
এলপেড্রো

3
@ এলপিড্রো এটি হ'ল স্পেস, জেলিব সংক্ষেপিত এবং বেস 64 এনকোডযুক্ত টেক্সট। কোথাও কোনও ম্যাজিক রুবি অ্যাকশন নেই।
dkudriavtsev

তবুও ভাবেন যে পাইথনকে নিয়ে এই পদ্ধতিটি আরও বেশি ভারী হবে যদি না কেউ আমাকে ভুল প্রমাণ করতে চায় (@
জনাথন

স্বাগতম, আমি কিছু লাইব্রেরি অন্তর্ভুক্ত করতে ভুলে গেছি এবং এসই আমাকে এটি করতে দেয় না। কেউ দয়া করে খুব কম সময়ের মধ্যে লাইব্রেরিগুলি অন্তর্ভুক্ত করতে base64এবং zlibসেগুলি বাইট গণনায় যুক্ত করতে পারেন?
dkudriavtsev

putsএবং এর মধ্যে কোনও পার্থক্য আছে কি say? আমি রুবির সাথে পরিচিত নই।
রোমান গ্রাফ

2

/// , 205 বাইট

/*/\/\///B/^o^*9/         
*M/mmm*N/MM*O/   *0/OO*n/

*1/O Nm0
*2/NM0
*3/0M9*4/1O2*7/13n*5/34/0B9570MB0
473O NmBO 
O2731ONMBO
75O NmBO 
3n510MB0n
5130B9n51OBM9n5 BNm0 
3n31B273 BNm0 
O27OBM9470B90M0O
410MO

এটি অনলাইন চেষ্টা করুন!

কেবলমাত্র যদি আমার প্রচুর ট্রেলিং স্পেসের প্রয়োজন না হয় ...


2

মাম্পস, 223 বাইট

এটি আন্তঃসিস্টেমস ক্যাশে ম্যাম্প ব্যবহার করছে - এটি লুপগুলির চারপাশে ধনুর্বন্ধনী দেয় যা এটি একক লাইনে নেস্টেড লুপগুলির জন্য সহজ করে তোলে।

S X="09121415141209060403040609",R="097679",L="037973",S=-14 F Y=1:1:13 S S=S+2 F C=1:1:7 S F=$E(X,Y*2-1,Y*2),(M,T)="",$P(T," ",21)="" F A=1:1:$E(L,C){S M=M_"m"} S $E(T,$E(R,C))=M S:C=$S(Y<8:Y,1:Y-S) $E(T,F,F+2)="^o^" W T,!

সম্ভবত আরও গল্ফ করা যেতে পারে এবং আমি আরও সময় পেলে খেলতে পারি। আরও 9 টি বাইট যুক্ত করুন এবং এটি অ্যানিমেটেড হবে [['এইচ 1 ডাব্লু #' -> সংযোজনের কারণে যা এক সেকেন্ডের জন্য থামবে এবং স্ক্রিন সাফ করবে:

S X="09121415141209060403040609",R="097679",L="037973",S=-14 F Y=1:1:13 S S=S+2 H 1 W # F C=1:1:7 S F=$E(X,Y*2-1,Y*2),(M,T)="",$P(T," ",21)="" F A=1:1:$E(L,C){S M=M_"m"} S $E(T,$E(R,C))=M S:C=$S(Y<8:Y,1:Y-S) $E(T,F,F+2)="^o^" W T,!

সঠিক 'কর' বিবৃতি এবং ডট লুপের সাথে এখানে একটি অলগ্ফল্ড / ব্যাখ্যা করা সংস্করণ (অ্যানিমেশন সংস্করণটির) রয়েছে:

 S X="09121415141209060403040609"
 S R="097679",L="037973",S=-14              ; Initialize Variablex
 F Y=1:1:13 D                               ; Set up our main loop of 13 cels
 . S S=S+2                                  ; set up secondary counter, for start char.
 . H 1                                      ; halt for 1 second
 . W #                                      ; clear screen
 . F C=1:1:7 D                              ; set up our per-line loop
 . . S F=$E(X,Y*2-1,Y*2)                    ; set F to 2-digit "start of bat"
 . . S (M,T)=""                             ; set our "builder" lines to empty strings
 . . S $P(T," ",21)=""                      ; then reset our main 'line string' to 21 spaces.
 . . F A=1:1:$E(L,C){S M=M_"m"}             ; make our 'moon' text.
 . . S $E(T,$E(R,C))=M                      ; and insert our 'moon' into the empty line
 . . S:C=$S(Y<8:Y,1:Y-S) $E(T,F,F+2)="^o^"  ; find the start character for our 'bat' and insert.
 . . W T,!                                  ; and write the line and a CR/LF.

আমি "কম্প্রেস তারপর বেস-64৪ এনকোড" জাজটি করার চেষ্টা করলাম কী হবে তা দেখার জন্য, তবে এনকোডযুক্ত স্ট্রিংটি প্রোগ্রামের থেকে কিছুটা দীর্ঘ শেষ হয়েছিল! এটি, এবং ক্যাসির সিস্টেমগুলি সংক্ষেপণের জন্য কল করে এবং বেস 64৪ টি এনকোডিং বেশ দীর্ঘ ... উদাহরণস্বরূপ, এখানে বেস 64 ডিকোড করার জন্য সিস্টেম কলটি রয়েছে: $ System.Encryption.Base64Decode (STRING)

এই পদ্ধতিটি 300 টিরও বেশি চরিত্রগুলিতে প্রোগ্রামটি 'ফুলে' উঠবে, আমি মনে করি ...

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