Per questa sfida, dovresti scrivere un programma o una funzione che emetta le diagonali di una data matrice quadrata. Tuttavia, se trasponi le righe e le colonne del codice sorgente della tua soluzione, dovrebbe invece diventare un programma o una funzione che restituisce gli antidiagonali della matrice. Continua a leggere per dettagli ...
Regole
- Il codice sorgente della tua soluzione è considerato come una griglia 2D di caratteri, separati da una nuova riga standard di tua scelta (avanzamento riga, ritorno a capo o una combinazione di entrambi).
Nessuna riga nel codice sorgente potrebbe essere più lunga della precedente. Ecco alcuni esempi di layout validi:
### ### ###
######## ####### ### ### #
Ed ecco un esempio di layout non valido (poiché la terza riga è più lunga della seconda):
###### #### ##### ###
Le tue due soluzioni dovrebbero essere reciprocamente trasposte, ovvero dovresti ottenere l'una dall'altra scambiando righe e colonne. Ecco due coppie valide:
abc def ghi
adg beh cfi
E
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
Nota che gli spazi sono trattati come qualsiasi altro personaggio. In particolare, gli spazi finali sono significativi in quanto potrebbero non essere spazi finali nella trasposizione.
Ogni soluzione dovrebbe essere un programma o una funzione che accetta come input una matrice quadrata non vuota di numeri interi a una cifra. Una soluzione dovrebbe generare un elenco di tutte le diagonali della matrice e l'altra dovrebbe generare un elenco di tutti gli antidiagonali. È possibile utilizzare qualsiasi formato di input e output ragionevole e inequivocabile, ma devono essere identici tra le due soluzioni (ciò significa anche che devono essere entrambe le funzioni o entrambi i programmi).
- Ogni diagonale va dall'alto in alto a sinistra in basso a destra e dovrebbero essere ordinate dall'alto verso il basso.
- Ogni antidiagonale scorre dal basso a sinistra in alto a destra e dovrebbero essere ordinate dall'alto verso il basso.
punteggio
Per incoraggiare soluzioni il più "quadrate" possibile, il punteggio principale è il numero di righe o il numero di colonne della soluzione, a seconda di quale sia maggiore . Meno è meglio. I legami sono interrotti dal numero di caratteri nella soluzione, senza contare le nuove righe. Ancora una volta, meno è meglio. Esempio:
abcd
efg
h
Questa e la sua trasposizione avrebbero un punteggio primario di 4 (in quanto vi sono 4 colonne) e un punteggio di 8 (in quanto vi sono 8 caratteri non di nuova riga). Si prega di citare entrambi i valori nell'intestazione della risposta.
Casi test
Il vero compito svolto dalle due soluzioni non dovrebbe essere la sfida principale qui, ma qui ci sono due esempi per aiutarti a testare le tue soluzioni:
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