পাওয়ারশেল ভি 2 +, 217 205 190 187 184 বাইট
param($b)"_"*(($a=[math]::Abs($b))*4);$z,$y='/\'[($b=$b-lt0),!$b]
((($x=1..$a|%{($w=" "*($_-1))+$z+" "*(2*($a-$_))+$y+(' ','_')[$_-eq$a]*($a*2-1)+$y+$w})|%{-join$_[($a*4)..0]}),$x)[$b]
$b
পূর্ণসংখ্যা হিসাবে ইনপুট নেয় । মনে রাখবেন যে যদি $b
নেতিবাচক হয় তবে যথাযথভাবে কাস্ট করার জন্য আপনার স্পষ্টভাবে এটি পেরেনের সাথে ঘিরে রাখা দরকার (উদাহরণগুলি দেখুন), অন্যথায় পাওয়ারশেল মনে করবে এটি একটি স্ট্রিং।
তাঁবুটি কোন দিকে মুখ করেই নয়, প্রথম লাইনটি একই, আন্ডারস্কোরগুলির একগুচ্ছ; ঠিক 4*abs(input)
তাদের অনেকেই আসলে। এই নম্বরটি $a
পরে ব্যবহারের জন্যও সংরক্ষণ করা হয়। অধিকন্তু, এখন আমাদের $b
সঞ্চিত হওয়ার পরম মান রয়েছে $a
, আমরা $b
এর সাইন এর জন্য একটি বুলিয়ান রূপান্তরিত করে $y
এবং আমাদের স্ল্যাশগুলিকে এবং এর মধ্যে সঞ্চিত নির্বাচন করি $z
।
পরের লাইনটি আউটপুটটি তৈরি করছে এবং তৈরি করছে, এবং এটি একটি ঘোলাটে, সুতরাং আসুন এটি ভেঙে দিন।
আমরা মূলত দুটি উপাদানের একটি অ্যারেতে সূচি তৈরি করছি, (big long calculations saved into $x)
বা এর $x
উপর ভিত্তি করে $b
।
হিসাবগুলি হ'ল যেখানে তাঁবুর দেহটি নির্মিত। আমরা লুপ থেকে 1..$a|%{...}
। প্রতিটি পুনরাবৃত্তি আমরা তাঁবু শরীরের একটি লাইন তৈরি করছি। আমরা যে লাইনে চলেছি তার সমান সংখ্যক স্পেস দিয়ে শুরু করি -1
, যাতে এটি যথাযথভাবে বাম-প্রান্তরেখা থাকে। এটি $w
পরে সংরক্ষণ করা হয়েছে এবং যথাযথ স্ল্যাশ (, z ভিত্তিক $b
) এর সাথে জড়িত, তারপরে ফাঁকা স্থানের ডোর ফ্রেম সংখ্যা, তারপরে অন্য স্ল্যাশ $y
, তারপরে হয় আন্ডারস্কোর বা স্পেসগুলি নির্ভর করে যদি আমরা নীচের লাইনে থাকি বা না, তারপরে আরেকটি স্ল্যাশ $y
এবং অবশেষে $w
একটি আয়তক্ষেত্রাকার স্ট্রিং তৈরির জন্য যথাযথ স্থানের স্থান ( ) যে স্ট্রিং এর ফলে অ্যারে সংরক্ষণ করা হয় $x
।
অ্যারের বাম অর্ধেক নির্বাচিত থাকে (অর্থাত, $b
হয় False
, তাহলে আমরা মাধ্যেমে লুপ করতে প্রয়োজন যেহেতু ইনপুট ইতিবাচক ছিল না) $x
এবং প্রতিটি লাইন আইটেমে বিপরীত - এই হল সেই জায়গা যেখানে পিছনের শূন্যস্থানগুলি খেলার মধ্যে আসা; এটি আমাদের দূরত্বগুলি পুনরায় গণনার চেয়ে লাইনগুলি কেবল বিপরীত করতে দেয়।
যদি $b
হয় True
, তবে $x
পরিবর্তে অ্যারের ডান অর্ধেকটি নির্বাচিত হবে।
উভয় ক্ষেত্রেই, পাইপলাইনে এখন স্ট্রিংগুলির একটি অ্যারে রয়েছে। Write-Output
উপাদানগুলির মধ্যে ডিফল্ট নিউলাইন সহ, প্রোগ্রামের সমাপ্তির মধ্যে অন্তর্ভুক্ত আউটপুট ঘটে।
উদাহরণ
PS C:\Tools\Scripts\golfing> .\print-upside-down-tent.ps1 (-5)
____________________
\ / /
\ / /
\ / /
\ / /
\/_________/
PS C:\Tools\Scripts\golfing> .\print-upside-down-tent.ps1 (4)
________________
\ \ /
\ \ /
\ \ /
\_______\/
3
উদাহরণস্বরূপ আমরা কি ইনপুটটির জন্য 12 দৈর্ঘ্যের চারটি স্ট্রিং (একটি আয়তক্ষেত্র) আউটপুট দিতে পারি ?