この課題では、特定の正方行列の対角線を出力するプログラムまたは関数を作成する必要があります。ただし、ソリューションのソースコードの行と列を転置する場合は、代わりに、マトリックスの対角線を返すプログラムまたは関数になります。詳細をお読みください...
ルール
- ソリューションのソースコードは、選択した標準の改行(ラインフィード、キャリッジリターン、または両方の組み合わせ)で区切られた文字の2Dグリッドと見なされます。
ソースコードの行は、前の行より長くなることはありません。有効なレイアウトの例を次に示します。
### ### ###
######## ####### ### ### #
そして、無効なレイアウトの例を次に示します(3行目は2行目より長いため)。
###### #### ##### ###
2つのソリューションは互いに転置する必要があります。つまり、行と列を交換することで一方から他方を取得する必要があります。有効なペアは次の2つです。
abc def ghi
adg beh cfi
そして
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
スペースは他の文字と同様に扱われることに注意してください。特に、末尾のスペースは、転置の末尾のスペースではない可能性があるため重要です。
各ソリューションは、入力として1桁の整数の空でない正方行列を取るプログラムまたは関数でなければなりません。1つのソリューションは、マトリックスのすべての対角線のリストを出力し、もう1つのソリューションは、すべての対角線のリストを出力する必要があります。合理的で明確な入力および出力形式を使用できますが、2つのソリューション間で同一である必要があります(これは、両方の機能または両方のプログラムでなければならないことも意味します)。
- 各対角線は左上から右下に向かって走り、上から下に並べられます。
- 各対角線は左下から右上に向かって走り、上から下に順番に並べる必要があります。
得点
可能な限り「正方形」のソリューションを推奨するために、プライマリスコアは、ソリューションの行数または列数のいずれか大きい方です。少ないほど良い。関係は、改行をカウントせずに、ソリューション内の文字数によって分割されます。繰り返しますが、少ないほど良いです。例:
abcd
efg
h
これとその転置のプライマリスコアは4(列が4つあるため)、タイブレークスコアは8(改行文字以外が8つあるため)です。回答のヘッダーにある両方の値を引用してください。
テストケース
2つのソリューションによって実行される実際のタスクは、ここでの主要な課題ではありませんが、ソリューションのテストに役立つ2つの例を次に示します。
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