Para esse desafio, você deve escrever um programa ou função que produza as diagonais de uma determinada matriz quadrada. No entanto, se você transpõe as linhas e colunas do código-fonte da sua solução, ele deve se tornar um programa ou função que retorna as antidiagonais da matriz. Leia para detalhes ...
Regras
- O código-fonte da sua solução é considerado como uma grade 2D de caracteres, separada por uma nova linha padrão de sua escolha (avanço de linha, retorno de carro ou uma combinação de ambos).
Nenhuma linha no seu código-fonte pode ser maior que a anterior. Aqui estão alguns exemplos de layouts válidos:
### ### ###
######## ####### ### ### #
E aqui está um exemplo de um layout inválido (como a terceira linha é maior que a segunda):
###### #### ##### ###
Suas duas soluções devem ser a transposição uma da outra, ou seja, você deve obter uma da outra trocando linhas e colunas. Aqui estão dois pares válidos:
abc def ghi
adg beh cfi
E
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
Observe que os espaços são tratados como qualquer outro caractere. Em particular, os espaços finais são significativos, pois podem não ser espaços finais na transposição.
Cada solução deve ser um programa ou função que recebe como entrada uma matriz quadrada não vazia de números inteiros de um dígito. Uma solução deve exibir uma lista de todas as diagonais da matriz e a outra deve exibir uma lista de todas as antidiagonais. Você pode usar quaisquer formatos razoáveis e inequívocos de entrada e saída, mas eles devem ser idênticos entre as duas soluções (isso também significa que eles precisam ser as duas funções ou os dois programas).
- Cada diagonal é executada da parte superior esquerda para a parte inferior direita e deve ser solicitada de cima para baixo.
- Cada antidiagonal é executado da parte inferior esquerda para a parte superior direita e deve ser pedido de cima para baixo.
Pontuação
Para incentivar soluções o mais "quadradas" possível, a pontuação principal é o número de linhas ou o número de colunas da sua solução, o que for maior . Menos é melhor. Os laços são quebrados pelo número de caracteres na solução, sem contar as novas linhas. Novamente, menos é melhor. Exemplo:
abcd
efg
h
Isso e sua transposição teriam uma pontuação primária de 4 (pois existem 4 colunas) e uma pontuação de desempate de 8 (pois existem 8 caracteres que não são de nova linha). Cite os dois valores no cabeçalho da sua resposta.
Casos de teste
A tarefa real realizada pelas duas soluções não deve ser o principal desafio aqui, mas aqui estão dois exemplos para ajudá-lo a testar suas soluções:
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