পাওয়ারশেল, 84 বাইট
param([char]$a,$b)($b[($c=$b.length)..0],$b[0..$c])[$a%7-eq6]-join("","`n")[90-lt$a]
এটি পাওয়ারশেলের সাথে পরিচিত না এমন লোকদের কাছে সম্পূর্ণ জিম্মা হতে চলেছে। এর মাধ্যমে যেতে দিন।
param([char]$a,$b)
অক্ষরটির একটি সুস্পষ্ট কাস্ট সহ ইনপুট নেয় $a
। প্রোগ্রামের বাকি একটি বিবৃতি। আমরা প্রথমার্ধ দিয়ে শুরু করব, অবধি -join
।
আমরা একটি নতুন গতিশীল অ্যারে তৈরি করছি (...,...)
এবং এর সাথে ইনডেক্স করছি $a%7-eq6
। ASCII মানগুলি যথাক্রমে এবং v
এবং >
হয় 116
এবং 62
যথাক্রমে এবং 116%7 = 62%7 = 6
এবং এবং সেগুলি দুটি দিক যা নীচে এবং ডানে "বৃদ্ধি" করে। সুতরাং, যদি সেই -eq
হয় $true
, আমরা দ্বিতীয় মান, যা নেব $b[0..$c]
, বা এর অক্ষরের একটি অ্যারের $b
শেষ পর্যন্ত । আমরা $c
প্রথম মান থেকে মানটি $b[($c=$b.length)..0]
পাই যা ইনপুট চর ^
বা <
(যেমন, এটি স্ট্রিংটি পিছনের দিকে যায়) নির্বাচন করা হয়। লক্ষণীয় গুরুত্বপূর্ণ যে দ্বিতীয় মানটি নির্বাচিত হলেও, $c
মানটি এখনও গণনা করা এবং সংরক্ষণ করা হয়, তাই আমরা এটির মতো শর্টকাট হিসাবে পুনরায় ব্যবহার করতে পারি।
সুতরাং, আমরা এখন এগিয়ে বা পিছনে যাচ্ছে অক্ষরের একটি অ্যারে পেয়েছি। আমরা তখন -join
সেই অক্ষরগুলি একসাথে অন্য গতিশীল অ্যারে সূচকের ফলাফলের সাথে করব। এবার ASCII এর মান $a
নীচে রয়েছে কিনা তার ভিত্তিতে আমরা নির্বাচন করছি 90
(সত্যিকারের প্রচুর মান কাজ করবে, আমি এটিকে কেবলমাত্র নির্বাচিত করে রেখেছি)। যেহেতু >
এবং <
উভয় নিচে একটি মান আছে 90
, -lt
হয় $false
, তাই আমরা খালি স্ট্রিং নির্বাচন ""
, এবং এইভাবে গৃহস্থালির কাজ-বিন্যস্ত কেবল ঘনিভূত হয়। অন্যথায়, আমরা "`n"
নিউলাইনগুলি সহ চার-অ্যারে যোগদানের জন্য নিউলাইন চরিত্রটি নির্বাচন করি ।
এই ফলস্বরূপ স্ট্রিংটি পাইপলাইনে রেখে গেছে, এবং আউটপুট অন্তর্ভুক্ত।
উদাহরণ
PS C:\Tools\Scripts\golfing> .\orthogonal-orientation.ps1 "^" "TimmyD"
D
y
m
m
i
T