Construa uma máquina de corte de diamantes

Published by Mubashir Hassan in

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 um array de dois elementos.
  • O primeiro elemento deve ser um array de arrays 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.