Isso é código de golfe. Para esse desafio, aceitarei um método (você não precisa de um programa completo), mas a assinatura do método conta para a contagem de bytes e eu quero ver a assinatura completa (não um lamdba). A entrada para o método é uma matriz inteira com 81 elementos. O valor de saída / retorno do método é uma string que representa a matriz como uma placa ascii sudoku.
Se você estiver usando uma linguagem esotérica ou algo que absolutamente não possui métodos, poderá se adaptar, mas se a linguagem suportar isso, quero ver que alguma coisa pode estar realmente conectada a um programa não-destruído "real", mesmo que o método próprio corpo é uma dor para trabalhar. O requisito não visa bloquear linguagens como Jelly ou 05AB1E, mas facilitar para linguagens como Java a construção de algo que faça sentido para essa plataforma.
Para a entrada, os valores inteiros 1 a 9 devem ter significados óbvios. Um 0 deve sempre ser interpretado como uma célula em branco. Você também pode interpretar qualquer outra coisa fora do intervalo de 1 a 9 como uma célula em branco, mas isso não é necessário. O posicionamento da matriz para o quebra-cabeça começa no canto superior esquerdo e preenche cada linha da esquerda para a direita antes de passar para a próxima linha.
Para as caixas, quero linhas duplas ao redor do exterior e entre cada região 3x3 e linhas únicas entre outras células. Eles devem ser desenhados com caracteres de desenho de linha (se o seu formato de E / S representar seqüências de caracteres como uma sequência de bytes em vez de uma sequência de caracteres, você deve representá-las em uma codificação conhecida como UTF-8 ou página de código 347).
Para esse desafio, NÃO estou pedindo para você gerar o quebra-cabeça sudoku. Essa é a entrada para a função. Eu não estou pedindo para você resolver o quebra-cabeça. Estou apenas pedindo que você produza uma string para "desenhar" o que você recebe (no menor número de bytes possível).
Exemplo de entrada:
Valores para a matriz:
{ 8, 5, 0, 0, 0, 2, 4, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 2, 3, 0, 5, 0, 0, 0, 9, 0, 0 ,0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 7, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 0, 4, 0}
Os valores podem usar qualquer mecanismo que seja natural para o seu idioma: int [], ArrayList, sequência, tupla, sequência de dígitos, qualquer que seja, desde que você tenha um valor na entrada para cada célula (não há mapas apenas para células preenchidas para posições ) Lembre-se de que a entrada é fornecida ... não faz parte da sua contagem de bytes. Mas a entrada pode representar qualquer quebra-cabeça sudoku, e talvez nem tenha uma solução válida . Você assume que o quebra - cabeça é imprimível. Você não terá algo com 82 elementos, por exemplo.
Você também assume uma fonte de largura fixa razoável.
Saída correspondente:
╔═══╤═══╤═══╦═══╤═══╤═══╦═══╤═══╤═══╗ ║ 8 │ 5 │ ║ │ 2 │ 4 │ │. ╟───┼───┼───╫──────────╫───┼───┼───╢ ║ 7 │ 2 │ ║ │ ║ │ │ 9 ║ ╟───┼───┼───╫──────────╫───┼───┼───╢ │ │ │ 4 ║ │ │ ║ │ │ ║ ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ ║ │ │ ║ 1 │ 7 ║ │ │ 2 ║ ╟───┼───┼───╫──────────╫───┼───┼───╢ ║ 3 │ │ 5 ║ │ │ ║ 9 │ │ ║ ╟───┼───┼───╫──────────╫───┼───┼───╢ │ │ 4 │ ║ │ ║ ║ │ ║ ╠═══╪═══╪═══╬═══╪═══╪═══╬═══╪═══╪═══╣ │ │ │ ║ │ 8 │ ║ │ 7 │ ║ ╟───┼───┼───╫──────────╫───┼───┼───╢ │ │ 1 │ 7 ║ │ │ ║ │ │ ║ ╟───┼───┼───╫──────────╫───┼───┼───╢ │ │ │ ║ │ 3 │ 6 │ │ 4 │ ╚═══╧═══╧═══╩═══╧═══╧═══╩═══╧═══╧═══╝