introduzione
Mi sono imbattuto in questo schema (inutile) l'altro giorno mentre guardavo la TV. L'ho chiamato "il modello 9" perché il primo numero per usarlo era 9. La sostanza è che inserisci un numero (diciamo x ) e poi torni indietro:
- X
- x + ( x / 3) [chiamiamolo y ]
- due terzi di y [chiamiamolo z ]
- z + 1
Quindi, se inserissi in questo modello il numero 9 come x , questo sarebbe ciò che verrebbe fuori:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 su 3 è 3 e 9 + 3 è 12]
- 8 ( 12 volte due terzi) [un terzo di 12 è 4 e 4 * 2 è 8]
- 9 ( 8 + 1 è 9)
Sfida
Scrivimi una funzione (in qualsiasi linguaggio di programmazione) che accetta un numero e genera un array intero usando il modello.
Un po 'come questo psuedo-codice:
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;
}
chiarimenti
Discussioni hanno suscitato commenti in merito alle specifiche della domanda. Questa sezione ha lo scopo di chiarire alcuni di questi.
"meglio contare in byte che in caratteri"
Ho scelto personaggi perché (almeno per me) sarebbe stato più facile giudicare. Certo, non posso cambiarlo adesso. (molte risposte sono già state pubblicate)
"arrotondamento"
L'arrotondamento segue questa rima:
Se è 5 o più, aumenta il punteggio
Se è 4 o meno, lascialo riposare
In poche parole, se è qualcosa come 4.7 o 3.85, arrotondali rispettivamente a 5 e 4.
Esempi
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, tuttavia, i numeri sono qualcosa come 2.3 o 10.435446, arrotondali rispettivamente a 2 e 10.
"supporto linguistico"
Sei libero di non usare le funzioni e / o le matrici SE E SOLO SE la lingua che preferisci non le supporta. Se lo fa (anche se aumenterà il numero dei tuoi personaggi), devi usarli .