PowerShell, 84 Byte
param([char]$a,$b)($b[($c=$b.length)..0],$b[0..$c])[$a%7-eq6]-join("","`n")[90-lt$a]
Dies wird für Leute, die mit PowerShell nicht vertraut sind, ein völliger Kauderwelsch sein. Lass es uns durchgehen.
Nimmt Eingaben param([char]$a,$b)mit einem expliziten Cast-to-Character für $a. Der Rest des Programms ist eine Aussage. Wir werden mit der ersten Hälfte beginnen, bis zum -join.
Wir erstellen ein neues dynamisches Array (...,...)und indizieren es mit $a%7-eq6. Die ASCII - Werte für vund >sind 116und 62sind, und 116%7 = 62%7 = 6, und das sind die beiden Richtungen , dass „Erhöhung“ nach unten und nach rechts. Wenn dies der Fall -eqist $true, nehmen wir den zweiten Wert $b[0..$c]oder ein Array der Zeichen $bbis zum Ende . Wir erhalten den Wert $cvom ersten Wert, $b[($c=$b.length)..0]der ausgewählt wird, wenn das Eingabezeichen ^oder ist <(dh, die Zeichenfolge wird rückwärts durchlaufen). Es ist wichtig zu beachten, dass der $cWert auch dann berechnet und gespeichert wird, wenn der zweite Wert ausgewählt wird, sodass wir ihn als eine solche Verknüpfung wiederverwenden können.
Wir haben jetzt also eine Reihe von Zeichen, die entweder vorwärts oder rückwärts laufen. Wir haben dann -joindiese Zeichen zusammen mit dem Ergebnis eines anderen dynamischen Array-Index. Dieses Mal wählen wir basierend darauf aus, ob der ASCII-Wert für $adarunter liegt 90(wirklich viele Werte würden funktionieren, ich habe diesen ausgewählt, nur weil). Da >und <beide unten einen Wert haben 90, -ltist das $false, also wählen wir die leere Zeichenfolge aus "", und somit wird das Zeichen-Array einfach verkettet. Andernfalls wählen wir das Zeilenumbruchzeichen aus "`n", um das Zeichen -Array zusammen mit Zeilenumbrüchen zu verbinden.
Diese resultierende Zeichenfolge verbleibt in der Pipeline, und die Ausgabe ist implizit.
Beispiel
PS C:\Tools\Scripts\golfing> .\orthogonal-orientation.ps1 "^" "TimmyD"
D
y
m
m
i
T