पॉवरशेल, 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
, तो हम खाली स्ट्रिंग का चयन ""
, और इस तरह चार-सरणी बस concatenated है। अन्यथा, हम नए वर्णों के "`n"
साथ वर्ण-सरणी में शामिल होने के लिए नए वर्ण का चयन करते हैं ।
इस परिणामी स्ट्रिंग को पाइप लाइन पर छोड़ दिया गया है, और आउटपुट निहित है।
उदाहरण
PS C:\Tools\Scripts\golfing> .\orthogonal-orientation.ps1 "^" "TimmyD"
D
y
m
m
i
T