Introdução
Algo com o qual eu brinquei em matemática recreativa foi a construção de uma tabela divisória para comparar / contrastar visualmente os divisores primos de um conjunto de números. O conjunto de números de entrada está na parte superior como rótulos de coluna, os divisores principais estão à esquerda como rótulos de linha e uma marca indica onde os dois estão alinhados.
Por exemplo, para entrada, 6, 9, 14, 22
uma tabela semelhante à seguinte seria construída:
6 9 14 22
2 * * *
3 * *
7 *
11 *
Isso ocorre porque 6
possui divisores primários de 2
e 3
, 9
possui divisores primários de 3
e assim por diante.
Construção
- A tabela é construída de forma que os números de entrada formem rótulos de colunas separados por espaços e em ordem crescente (você pode assumir que eles são pré-classificados) e os divisores principais são listados à esquerda em ordem crescente, um por linha que forma a linha etiquetas.
- Observe que os espaços iniciais nos divisores primos e nos números de entrada podem ser necessários se os números tiverem comprimentos diferentes, para que todas as colunas tenham a mesma largura e se alinhem adequadamente.
- Cada divisor é representado por um único
*
(ou outro caractere ASCII adequado de sua escolha, desde que o mesmo caractere seja usado para todas as ocorrências). - Vários divisores são ignorados (por exemplo,
3 x 3 = 9
mas há apenas um*
para essa interseção). - Ele
*
pode ser colocado em qualquer lugar horizontalmente na coluna, desde que não seja ambíguo (tenho todos os meus exemplos com o*
alinhado à direita).
Entrada
- Uma lista de números inteiros positivos em qualquer formato conveniente , cada um
>1
. - Você pode assumir que a entrada é pré-classificada.
- A entrada é garantida para ter apenas valores exclusivos.
Saída
A representação artística ASCII resultante da tabela do divisor principal.
Regras
- Novas linhas à esquerda ou à direita ou espaços em branco são opcionais, desde que os próprios caracteres estejam alinhados corretamente.
- Se for mais curto ter uma linha divisória que separa os títulos das colunas / linhas dos dados tabulares, isso também é permitido.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que as pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
6,9,14,22
6 9 14 22
2 * * *
3 * *
7 *
11 *
2,3,5,7
2 3 5 7
2 *
3 *
5 *
7 *
2,4,8,16,32
2 4 8 16 32
2 * * * * *
75,99,151,153
75 99 151 153
3 * * *
5 *
11 *
17 *
151 *