PoC | TryAngels (R&D)

Resumo Executivo

R&D

PoC

Referências

[Código fonte incluso]

↑ Topo ↑

en

R&D – Research and Development

Comecei por organizar e estender os dados que eu havia coletado anteriormente em uma planilha, o que resultou na seguinte tabela:

table1

Tabela 1. Tabulação de dados

Em seguida eu procurei por algum tipo de validação desses dados, e construí então a seguinte figura:

49triangles

Figura 1. Triângulo equilátero com lado igual a sete unidades de medida

Tal protótipo, ainda que rudimentar, possibilitou a verificação e validação dos dados levantados na Tabela 1 (para um triângulo de Lado 7).

A tabela abaixo define os triângulos compostos contidos na Figura 1.

updowntable

Tabela 2. Triângulos compostos

Tais ações me fizeram ver que eu estava no caminho certo. Voltei então à planilha original comecei a imaginar que fórmula poderia fornecer uma resposta à questão proposta pelo desafio proposto, que pode ser assim traduzido:

Requerimento:

Dado um triângulo equilátero de lado L, determinar o número total de triângulos contidos no mesmo.

Ou seja, trata-se de implementar uma função que retorne o valor 118 quando o usuário fornece 7 como valor de entrada, certo? Bem, eu não estou tão certo… É que, ao examinar os dados mais de perto, podemos observar claramente que dos 118 triângulos contidos em um triângulo (pai) de lado 7, apenas 28 (em azul na Figura 1) são de fato reais e concretos; apenas 28 são realmente criados ou instanciados. Não é?

28triangles

Figura 2. Triângulos unitários reais (instanciados) em um triângulo equilátero de lado 7

Todos os demais ou são fruto de pura ilusão de ótica, ou são compostos por um mix de triângulos reais (em azul) e “virtuais” – inexistentes, ilusórios, aparentes, falsos. Correto?

Assim sendo, uma resposta mais acurada e completa para o desafio proposto deveria ser mais ou menos assim representada:

report-pt

Listagem 1. Relatório estatístico

Como vemos, existem (pelo menos) duas respostas válidas para a questão proposta. A resposta “certa”, ou mais apropriada, dependerá dos objetivos e necessidades contextuais, que determinam o propósito e as justificativas, fornecem os requerimentos, e direcionam os nossos esforços e estratégias.

Há, na realidade, uma terceira resposta válida, que pode ser ainda mais recomendável – dependendo das especificações do cliente. Exploro esta alternativa mais adiante.

Passei então a procurar uma resposta que contemplasse apenas o uso da matemática; e após algum esforço de R&D, eu acabei por definir alguns conceitos (ou regras de negócio) pertinentes.

As fórmulas matemáticas apresentadas abaixo representam as funções que necessitamos para satisfazer ao requerimento proposto (acima):

formulas

Figura 3. Fórmulas matemáticas pertinentes ao contexto

Podemos deduzir de tais fórmulas que:

  1. O número de triângulos reais (e unitários) contidos em um triângulo equilátero de lado L é determinado pelo Termial de L;
  2. O número de triângulos compostos contidos em um triângulo equilátero de lado L, e com o vértice voltado para o mesmo sentido do vértice do triângulo “pai”, é determinado pelo Tetraédrico de (L – 1);
  3. O número de triângulos compostos contidos em um triângulo equilátero de lado L, e com o vértice voltado para o sentido oposto ao do vértice do triângulo “pai”, é determinado pelo Wolfram de L; e finalmente
  4. O número total de triângulos “visíveis” contidos em um triângulo equilátero de lado L é determinado pelo Lizard de L.

Com a informação levantada até este momento eu fui então capaz de criar a seguinte interface de usuário:

ui-counting

Figura 4. Projeto TryAngels v.: 0.0.0.1 (R&D) – Primeira interface de usuário

Por um lado, tal interface tanto satisfaz ao requerimento especificado como responde ao desafio proposto inicialmente.

Por outro lado, contudo, trata-se de uma solução limitada e com fraco apelo “promocional”. Afinal, um triângulo é uma figura gráfica, e ao usuário deveria ser disponibilizada a habilidade de ver os resultados obtidos através de uma representação gráfica do triângulo.

Tal solução pode ainda disponibilizar mais detalhes a respeito do triângulo, como os apresentados a parte inferior da Listagem 1 (acima); desde que satisfaça aos seguintes requerimentos não funcionais:

  • Otimização do uso de memória
  • Performance (velocidade de processamento, rapidez na obtenção dos resultados)
  • Facilidade de uso e de entendimento.

A próxima seção descreve como eu implementei a solução, e Referências inclui um link para o seu download.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: