i=k=input()
while i:i-=1;print(" "*(k+~i)+"\\"+i*' / |\ '[i%2::2])[:k-~i]+"_/"[i>0:]
এটি অনলাইন চেষ্টা করুন!
এরিকের একটি কৌশল আমাকে 3 বাইট গল্ফ দেওয়ার অনুমতি দেয়! জনাথন অ্যালানকে 3 বাইট সংরক্ষণ করা হয়েছে।
এটি কীভাবে কাজ করে
প্রথমত, এই stdin এবং দুটি পৃথক ভেরিয়েবল তা নির্ধারণ থেকে ইনপুট পায় iএবং k। তারপরে, ভেরিয়েবল iসত্যবাদী হওয়ার পরেও আমরা এটিকে হ্রাস করি এবং তদনুসারে স্ট্রিংগুলি তৈরি করি; এটি ইনপুট থেকে লুপিংয়ের জন্য একটি শর্টহ্যান্ড - সর্বমোট 0 থেকে নীচে।
স্ট্রিংগুলি তৈরি করা হচ্ছে
আমি এটিকে আরও বেশি ভাগে ভাগ করব:
প্রথম প্রথম, নেতৃস্থানীয় ব্যবধান পেয়ে তা অর্জন করা হয় " "*(k+~i)। যেহেতু iপরিসীমাটির মাধ্যমে ম্যাপ করা হয়েছে (ইনপুট, 0] , তাই আমাদের অবশ্যই এটি k(আমাদের নিরাপদে সঞ্চিত মূল ইনপুট) থেকে বিয়োগ করতে হবে , হ্রাস করতে হবে এবং বহুগুণ এমন একটি স্থান পুনরাবৃত্তি করতে হবে।
+"\\"- "\"উপরের স্পেসে চরিত্রটি যুক্ত করে ।
' / |\ '[i%2::2]- আমাদের দুটি স্ট্রিং উত্পন্ন করে যথা: "/ \ "এবং " | "নিম্নলিখিত পদ্ধতিতে:
যদি iবিজোড় হয় তবে i% 2 হ'ল 1 , [i%2::2]সূচক 1 (0-সূচকযুক্ত) থেকে শুরু করে আমাদের বৃহত্তর স্ট্রিংয়ের প্রতিটি 2 টি অক্ষর প্রদান করে ।
যদি iএমনকি, আমি% 2 হয় 1 , একই আছে এইভাবে উপরে প্রক্রিয়া ছাড়া আর সূচিতে শুরু 0 ।
+~-i*- উপরের উত্পন্ন স্ট্রিংটি হয় হয় "/ \ "বা " | ", আই -1 বার পুনরাবৃত্তি করে এবং অন্যান্য স্ট্রিংগুলিতে সংযোজন করে। বিটওয়াইজ অপারেটরের সুবিধা ( ~- বিটওয়াইস কমপ্লিমেন্ট, সমতুল্য আমি -১ থেকে বিয়োগ ) এর প্রসঙ্গে এটি প্রথম বন্ধনী প্রয়োজন হয় না।
[:k-~i]- উপরে সূচি k- ~ i = কে - (-1 - i) = k + 1 + i অবধি স্ট্রিংয়ের সমস্ত অক্ষরকে সম্মিলিত করে ।
+"_/"[i>0:]- এটি কেবলমাত্র আমি যোগ করতে "/"চাইলে 1 ডলার যোগ করে , অন্যথায় এটি যুক্ত হয় _/।
সম্পূর্ণ উদাহরণ / কার্যকরকরণের বিশদ
আসুন দখল কিভাবে জিনিস একটি ইনপুট জন্য কাজ একটি উদাহরণ 4 :
i=k=input() # i and k are assigned to 4.
while i: # Starts the loop. The initial value of i is 4.
i-=1; # Decrement i. i is now 3.
" "*(k+~i) # A space repeated k - 1 - i = 4 - 1 - 3 = 0 times.
+"\\" # Plus the character "\". CS (Current string): "\".
' / |\ '[i%2::2] # The string ' / |\ '[3%2::2] = ' / |\ '[1::2] = "/ \ ".
i* # ^ repeated i = 3 times: "/ \ / \ / \ ".
+ # And concatenate. CS: "\/ \ / \ / \ "
[:k-~i] # Get the characters of ^ up to index k + 1 + i = 4 + 1 + 3 = 8.
# CS: "\/ \ / \".
+"_/"[i>0:] # Append "_/"[i>0:] = "_/"[3>0:] = "_/"[1:] = "/".
# CS: "\/ \ / \/".
print # Output the result "\/ \ / \/".
while i: # i is truthy (> 0), thus we loop again.
i-=1; # Decrement i. i becomes 2.
" "*(k+~i) # " " repeated 4 - 2 - 1 = 1 time.
+"\\" # Plus "\". CS: " \".
' / |\ '[i%2::2] # ' / |\ '[2%2::2] = ' / |\ '[::2] = " | ".
+i* # Repeat i = 2 times and append: " | ". CS: " \ | |".
[:k-~i] # CS up until k + 1 + i = 4 + 2 + 1 = 7. CS: " \ | ".
+"_/"[i>0:] # Append "/". CS: " \ | /".
print # Outputs the CS: " \ | /".
while i: # i is truthy (> 0), thus we loop again.
i-=1; # Decrement i. i is now 1.
" "*(k+~i) # " " repeated 4 - 1 - 1 = 2 times.
+"\\" # Plus "\". CS: " \".
' / |\ '[i%2::2] # ' / |\ '[2%2::2] = ' / |\ '[::2] = "/ \ ".
+i* # Repeat i = 1 time and append: "/ \ ". CS: " \/ \ ".
[:k-~i] # CS up until k + i + 1 = 4 + 2 = 6. CS: " \/ \".
+"_/"[i>0:] # Append "/". CS: " \/ \/".
print # Outputs the CS: " \/ \/".
while i: # i is truthy (> 0), thus we loop again.
i-=1; # Decrement i. i is now 0.
" "*(k+~i) # " " repeated 4 - 1 - 0 = 3 times.
+"\\" # Plus "\". CS: " \".
' / |\ '[i%2::2] # ' / |\ '[1%2::2] = ' / |\ '[1::2] = " | ".
+i* # Repeat i = 0 times and append: " \". CS: " \".
[:k-~i] # CS up until k + i + 1 = 4 + 0 + 1 = 5. CS: " \".
+"_/"[i>0:] # Append "_/" (because i > 0 is False since i == 0). CS: " \_/".
print # Outputs the CS: " \_/".
while i: # i == 0, hence the condition is falsy and the loop ends.
# Program terminates.