Você é um hábil lapidador de diamantes, cujo negócio melhora a cada dia. Com o tempo, decidiu que precisava aumentar a escala para acompanhar a demanda.
- Construa uma máquina de corte de diamantes (isto é, escreva uma função que receba um inteiro positivo que represente a quantidade de quilates da pedra bruta).
- A saída deve ser o diamante finalizado e uma etiqueta indicando sua qualidade, organizados em uma lista de dois elementos.
- O primeiro elemento deve ser uma lista de listas que represente o diamante.
- O segundo elemento deve ser uma string indicando "perfect cut" se todas as arestas do diamante forem pontiagudas ou "good cut" caso contrário.
Exemplos
diamond(3) ➞ [
[[0, 1, 0],
[1, 0, 1],
[0, 1, 0]],
"perfect cut"
]
# Perfect edge.
diamond(4) ➞ [
[[0, 1, 1, 0],
[1, 0, 0, 1],
[0, 1, 1, 0]],
"good cut"
]
# First and last rows had blunt edges with two 1s each.
diamond(11) ➞ [
[[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]],
"perfect cut"
]
Observações
- No mundo do lapidador, o corte é mais importante que a quantidade de quilates. Por isso, para reduzir o número de bordas rombas, a máquina reduziria o tamanho do diamante.
- No segundo exemplo, de uma pedra bruta de 4 quilates, a máquina produz um diamante finalizado com apenas 3 linhas, para que haja apenas 2 bordas rombas, em vez de 4.
- No primeiro e no terceiro exemplos, a máquina conseguiu produzir diamantes de n linhas a partir de pedras de n quilates.