Introdução
Mais complexo que Um quadrado de texto, pois isso requer preenchimento e entrada tem tipo de dados desconhecido.
Todos os anos, a Dyalog Ltd. realiza uma competição estudantil. O desafio é escrever um bom código APL. Esta é uma edição de código-golfe independente de idioma do décimo problema deste ano.
Tenho permissão explícita para postar esse desafio aqui, do autor original da competição. Sinta-se livre para verificar, seguindo o link fornecido e entrando em contato com o autor.
Problema
Escreva um programa / função que remodelará uma determinada sequência de caracteres ou lista numérica no menor quadrado que conterá todos os elementos da entrada, preenchendo com elementos adicionais, se necessário. O elemento pad deve ser o elemento de preenchimento padrão para o tipo de dados fornecido ou qualquer elemento de sua escolha. Os elementos do quadrado devem estar na ordem em que o achatamento fornecerá a ordem original dos dados de entrada (com elementos de preenchimento à direita, se houver).
Casos de teste
[1,2,3,4]
→
[[1,2],
[3,4]]
[1,2,3,4,5]
→
[[1,2,3],
[4,5,0],
[0,0,0]]
"Dyalog APL"
→
[["Dyal"], [["D","y","a","l"],
["og A"], or ["o","g"," ","A"],
["PL "], ["P","L"," "," "],
[" "]] [" "," "," "," "]]
[100]
→
[[100]]
[]
→
o equivalente mais próximo do seu idioma a uma matriz vazia, por exemplo, []
ou[[]]
[1,2,3,4,'O']
, ou é garantido que isso não ocorrerá? 3. A ordem requerida após o achatamento está ignorando os elementos da almofada (por exemplo, poderia haver uma entrada de [1,2,3,4,5]
rendimento [[0,0,0],[0,1,2],[3,4,5]]
ou mesmo [[0,1,0],[2,0,3],[0,4,5]]
)?