Wyzwanie
Biorąc pod uwagę kwadratową matrycę znaków (jednobajtowe znaki drukowalne ASCII), obróć każdy „pierścień” matrycy w przeciwnych kierunkach.
Weźmy przykład:
1 2 3 4 5
6 7 8 9 A
B C D E F
G H I J K
L M N O P
Następnie najbardziej zewnętrzny pierścień obraca się o 90 stopni zgodnie z ruchem wskazówek zegara, w ten sposób:
1 2 3 4 5 L G B 6 1
6 A M 2
B F => N 3
G K O 4
L M N O P P K F A 5
Drugi pierścień obraca się o 90 stopni w kierunku przeciwnym do ruchu wskazówek zegara:
7 8 9 9 E J
C E => 8 I
H I J 7 C H
Ostatni pierścień jest obracany o 90 stopni w kierunku zgodnym z ruchem wskazówek zegara, ale ponieważ jest to pojedyncza liczba (litera w naszym przykładzie), tak naprawdę nie ma to wpływu.
Ostateczny wynik to:
L G B 6 1
M 9 E J 2
N 8 D I 3
O 7 C H 4
P K F A 5
Jeśli matryca ma równą długość boku, najbardziej wewnętrzny pierścień będzie miał kwadrat 2x2 i powinien nadal być obracany.
Wkład
Lista list w dowolnym rozsądnym standardowym formacie. Na przykład ciąg znaków rozdzielany spacjami lub nowy ciąg rozdzielany spacjami jest dopuszczalny, ale lista wartości jako pierścieni wokół macierzy jest niedopuszczalna. Postacie niekoniecznie są wyjątkowe.
Wydajność
Lista list w dowolnym rozsądnym standardowym formacie. Te same zasady co dane wejściowe.
Przypadki testowe
1 2 3 7 4 1
4 5 6 => 8 5 2
7 8 9 9 6 3
1 2 3 4 5 6 Y S M G A 1
A B C D E F Z E K Q W 2
G H I J K L => ! D O I V 3
M N O P Q R @ C P J U 4
S T U V W X # B H N T 5
Y Z ! @ # $ $ X R L F 6
Kredyty
Mocno zainspirowany pokrewnym wyzwaniem, które obraca każdy element przeciwnie do ruchu wskazówek zegara o jedną pozycję (nie o 90 stopni).