PowerShell ขนาด 84 ไบต์
param([char]$a,$b)($b[($c=$b.length)..0],$b[0..$c])[$a%7-eq6]-join("","`n")[90-lt$a]
นี่จะเป็นการพูดพล่อยๆที่ไม่สมบูรณ์สำหรับผู้ที่ไม่คุ้นเคยกับ PowerShell ไปกันเถอะ
จะเข้ากับนักแสดงอย่างชัดเจนกับตัวละครสำหรับ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, ดังนั้นเราจึงเลือกสตริงที่ว่างเปล่า"", และดังนั้น char-array จึงถูกต่อกัน มิฉะนั้นเราจะเลือกอักขระขึ้นบรรทัดใหม่"`n"เพื่อเข้าร่วม char-array พร้อมกับการขึ้นบรรทัดใหม่
สตริงผลลัพธ์นี้ถูกทิ้งไว้บนไพพ์ไลน์และเอาต์พุตเป็นค่าปริยาย
ตัวอย่าง
PS C:\Tools\Scripts\golfing> .\orthogonal-orientation.ps1 "^" "TimmyD"
D
y
m
m
i
T