Do tego wyzwania powinieneś napisać program lub funkcję, która wyprowadza przekątne danej macierzy kwadratowej. Jednak jeśli transponujesz wiersze i kolumny kodu źródłowego rozwiązania, powinno ono stać się programem lub funkcją, która zwraca antydagonalne macierze. Czytaj dalej, aby poznać szczegóły ...
Zasady
- Kod źródłowy twojego rozwiązania jest traktowany jako dwuwymiarowa siatka znaków, oddzielona standardową nową linią do wyboru (wysuw linii, znak powrotu karetki lub kombinacja obu).
Żaden wiersz w kodzie źródłowym nie może być dłuższy niż poprzedni. Oto kilka przykładów prawidłowych układów:
### ### ###
######## ####### ### ### #
A oto przykład nieprawidłowego układu (ponieważ trzeci wiersz jest dłuższy niż drugi):
###### #### ##### ###
Wasze dwa rozwiązania powinny być wzajemnie transponowane, to znaczy powinieneś otrzymać jedno od drugiego poprzez zamianę wierszy i kolumn. Oto dwie prawidłowe pary:
abc def ghi
adg beh cfi
I
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
Pamiętaj, że spacje są traktowane jak wszystkie inne znaki. W szczególności spacje końcowe są znaczące, ponieważ mogą nie być spacjami końcowymi w transpozycji.
Każde rozwiązanie powinno być programem lub funkcją, która przyjmuje na wejściu niepustą kwadratową macierz jednocyfrowych liczb całkowitych. Jedno rozwiązanie powinno wypisać listę wszystkich przekątnych macierzy, a drugie powinno wypisać listę wszystkich antydiagonaliów. Możesz użyć dowolnych rozsądnych, jednoznacznych formatów wejściowych i wyjściowych, ale muszą one być identyczne między dwoma rozwiązaniami (oznacza to również, że albo muszą to być obie funkcje, albo oba programy).
- Każda przekątna biegnie od lewego górnego rogu do prawego dolnego rogu i powinna być uporządkowana od góry do dołu.
- Każdy antydiagonalny biegnie od dołu z lewej do prawej u góry i należy je zamawiać od góry do dołu.
Punktacja
Aby zachęcić do rozwiązań, które są jak najbardziej „kwadratowe”, głównym wynikiem jest liczba wierszy lub liczba kolumn rozwiązania, w zależności od tego, która wartość jest większa . Mniej znaczy lepiej. Więzy są zerwane przez liczbę znaków w rozwiązaniu, nie licząc nowych linii. Ponownie, mniej znaczy lepiej. Przykład:
abcd
efg
h
To i jego transpozycja miałyby pierwotny wynik 4 (ponieważ są 4 kolumny) i wynik rozstrzygający 8 (ponieważ istnieje 8 znaków innych niż nowa linia). Proszę podać obie wartości w nagłówku odpowiedzi.
Przypadki testowe
Rzeczywiste zadanie wykonane przez dwa rozwiązania nie powinno być tutaj głównym wyzwaniem, ale oto dwa przykłady, które pomogą Ci przetestować swoje rozwiązania:
Input:
1 2 3
4 5 6
7 8 9
Diagonals:
3
2 6
1 5 9
4 8
7
Antidiagonals:
1
4 2
7 5 3
8 6
9
Input:
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Diagonals:
0
1 1
0 0 0
1 1 1 1
0 0 0
1 1
0
Antidiagonals:
1
0 0
1 1 1
0 0 0 0
1 1 1
0 0
1