Défi:
Étant donné une matrice NxN où et l'une des huit «options de pliage» distinctes, un tableau / liste 2D avec les valeurs soustraites.
Les huit options de pliage sont: de gauche à droite; de droite à gauche; de haut en bas; de bas en haut; de haut en bas à droite; de droite à gauche; de gauche à droite; de bas en haut à gauche.
Exemples étape par étape:
Matrice d'entrée:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
Avec l'option de pliage de haut en bas, nous produisons les résultats suivants:
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
Pourquoi? Nous plions de haut en bas. Étant donné que les dimensions de la matrice sont uniformes, nous n'avons pas de couche intermédiaire à conserver en l'état. La 'e ligne sera soustraite de la ' e ligne (aurait été 'e ligne pour les matrices de dimension impaire); devient ainsi . La 'ème ligne sera alors soustraite par la ' ème ligne (aurait été 'ème ligne pour les matrices de dimension impaire); devient ainsi .[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]
Avec l'option de pliage de droite à droite à la place (avec la même matrice d'entrée ci-dessus), nous produisons les résultats suivants:
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
Avec les soustractions de pliage suivantes:
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
Règles du défi:
- Vous pouvez utiliser huit lettres
[A-Za-z]
ou nombres distincts dans la plage pour les options de pliage. Les nombres ou sont probablement les options les plus courantes, mais si vous souhaitez utiliser des nombres différents dans la plage pour certains calculs intelligents, n'hésitez pas à le faire. Veuillez indiquer les options de pliage que vous avez utilisées dans votre réponse. - La matrice d'entrée sera toujours une matrice NxN carrée, vous n'avez donc pas à gérer de matrices NxM rectangulaires. sera également toujours au moins 2, car une matrice vide ou 1x1 ne peut pas être pliée.
- L'entrée de la matrice contiendra toujours des nombres non négatifs dans la plage (les nombres dans la sortie seront donc dans la plage ).
- Avec le pliage (anti) diagonal ou le pliage vertical / horizontal de dimensions impaires, la «couche» centrale restera inchangée.
- Les E / S sont flexibles. Peut être un tableau 2D / liste d'entiers; peut être retourné ou imprimé sous forme de chaîne délimitée par des espaces et des sauts de ligne; vous pouvez modifier la matrice d'entrée et remplacer les nombres qui devraient disparaître
null
ou un nombre en dehors de la[-999, 999]
plage pour indiquer qu'ils sont partis; etc.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
Matrice d'entrée 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]]
Matrice d'entrée 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
ou n'importe quel entier de la plage [-999,999]
, donc l'ordre n'a pas d'importance. Et désolé, mais vous devez sortir le bon pli en fonction de l'entrée, donc la sortie des huit n'est pas autorisée.