チャレンジ:
および8つの異なる「折りたたみオプション」の1つであるNxN行列が与えられた場合、値が減算された2D配列/リストを出力します。
8つの折りたたみオプションは次のとおりです。左から右。右から左へ; 上から下へ; 下から上 左上から右下; topright-to-bottomleft; 左下から右上へ。下から左へ。
段階的な例:
入力行列:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
折りたたみオプションを上から下にすると、次の結果が出力されます。
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
どうして?上から下に折ります。マトリックスの次元は均一なので、そのまま保持する中間層はありません。「行が減算される行目(であったであろう」の奇数次元行列の「行目)。そうなります。番目の行は、次に減算される行目(であったであろう」奇数次元行列の「行目)。そうなります。[1, 1, 1, 1]
[1-0, 1-8, 1-6, 1-4]
[1, -7, -5, -3]
[1, 25, 0, 75]
[1-1, 25-3, 0-5, 75-7]
[0, 22, -5, 68]
代わりに(上記と同じ入力行列を使用して)折りたたみオプションbottomright-to-topleftを使用して、結果として次を出力します。
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
以下のフォールディング減算を使用します。
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
チャレンジルール:
- 折り畳みオプションには、
[A-Za-z]
の範囲の8つの異なる文字または異なる数字を使用できます。数字またははおそらく最も一般的なオプションですが、スマートな計算のために範囲内で異なる数字を使用する場合は、お気軽にそうしてください。回答で使用した折りたたみオプションを明記してください。 - 入力行列は常に正方NxN行列になるため、長方形のNxM行列を処理する必要はありません。また、空または1x1のマトリックスは折り畳みできないため、は常に少なくとも2になります。
- マトリクスの入力は常に範囲内の負でない数を含むことになる(出力中の数字は、したがって、範囲内であろう)。
- (反)対角線の折り畳みまたは奇数次元の垂直/水平の折り畳みでは、中央の「レイヤー」は変更されません。
- I / Oは柔軟です。整数の2D配列/リストにすることができます。スペースと改行で区切られた文字列として返すか、印刷できます。入力行列を変更し、消えるべきであることを示すため
null
に、消えるべき数字または[-999, 999]
範囲外の数字を置き換えることができます。などなど
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、コードゴルフ以外の言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - デフォルトのI / Oルールを使用した回答には標準ルールが適用されるため、STDIN / STDOUT、関数/メソッド、適切なパラメーターおよび戻り値型、完全なプログラムを使用できます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンク(TIOなど)を追加してください。
- また、回答の説明を追加することを強くお勧めします。
テストケース:
入力行列1:
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
入力行列2:
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
に、範囲内の任意の文字または整数を使用できる[-999,999]
ため、順序は関係ありません。申し訳ありませんが、入力に基づいて正しいフォールドを出力する必要があるため、8つすべてを出力することはできません。