Removendo a camada externa

Dada uma matriz bidimensional retangular, retorne uma nova matriz bidimensional com todos os elementos, exceto os da camada externa: remova a primeira e a última linha, e o primeiro e o último elemento de cada linha restante.

Exemplos

peelLayer(std::vector<std::vector<std::string>>{{"a", "b", "c", "d"}, {"e", "f", "g", "h"}, {"i", "j", "k", "l"}, {"m", "n", "o", "p"}}) // std::vector<std::vector<std::string>>{{"f", "g"}, {"j", "k"}}

peelLayer(std::vector<std::vector<int>>{{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {21, 22, 23, 24, 25}, {26, 27, 28, 29, 30}, {31, 32, 33, 34, 35}}) // std::vector<std::vector<int>>{{7, 8, 9}, {12, 13, 14}, {17, 18, 19}, {22, 23, 24}, {27, 28, 29}}

peelLayer(std::vector<std::vector<bool>>{{true, false, true}, {false, false, true}, {true, true, true}}) // std::vector<std::vector<bool>>{{false}}

peelLayer(std::vector<std::vector<std::string>>{{"hello", "world"}, {"hello", "world"}}) // std::vector<std::vector<std::string>>{}

Notas

  • A grade é sempre retangular ou quadrada.
  • Retorne uma matriz bidimensional vazia quando não restarem elementos internos.