Introdução
Eu tropecei nesse padrão (inútil) outro dia enquanto estava assistindo TV. Eu o chamei de "o padrão 9" porque o primeiro número a usá-lo foi 9. A essência é que você digita um número (digamos x ) e depois volta:
- x
- x + ( x / 3) [vamos chamar isso de y ]
- dois terços de y [vamos chamar isso de z ]
- z + 1
Então, se eu colocar dentro desse padrão o número 9 como x , é isso que sairia:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 acima de 3 é 3 e 9 + 3 é 12]
- 8 ( 12 vezes dois terços) [um terço de 12 é 4 e 4 * 2 é 8]
- 9 ( 8 + 1 é 9)
Desafio
Escreva-me uma função (em qualquer linguagem de programação) que capte um número e produza uma matriz inteira usando o padrão.
Um pouco como este código psuedo:
function ninePattern(int myInt) returns IntegerArray {
int iterationA = myInt + (myInt / 3);
int iterationB = iterationA * (2 / 3);
int iterationC = iterationB + 1;
IntegerArray x = [myInt, iterationA, iterationB, iterationC];
return x;
}
Esclarecimentos
Discussões têm despertado comentários sobre as especificações da questão. Esta seção pretende esclarecer alguns deles.
"melhor contar em bytes do que caracteres"
Escolhi personagens porque (pelo menos para mim) seria mais fácil julgar. Claro, não posso mudar isso agora. (muitas respostas já foram postadas)
"arredondamento"
O arredondamento segue esta rima:
Se for 5 ou mais, aumente a pontuação
Se for 4 ou menos, deixe descansar
Simplificando, se for algo como 4.7 ou 3.85, arredonde-os para 5 e 4, respectivamente.
Exemplos
Input => Result
9 => [9, 12, 8, 9]
8 => [8, 11, 7, 8]
6 => [6, 8, 5, 6]
23 => [23, 31, 21, 22]
159 => [159, 212, 141, 142]
Se, no entanto, os números forem algo como 2.3 ou 10.435446, arredonde-os para 2 e 10, respectivamente.
"suporte de linguas"
Você é livre para não usar funções e / ou matrizes SE E SOMENTE SE O idioma de sua escolha não os suportar. Se isso acontecer (mesmo que isso aumente a contagem de caracteres), você deve usá-los .