Wprowadzenie
Pewnego dnia natknąłem się na ten (bezużyteczny) wzór podczas oglądania telewizji. Nazwałem go „wzorem 9”, ponieważ pierwszą cyfrą, która go użyła, było 9. Istotą tego jest to, że wpisujesz liczbę (powiedzmy x ), a następnie wracasz:
- x
- x + ( x / 3) [nazwijmy to y ]
- dwie trzecie y [nazwijmy to z ]
- z + 1
Tak więc, jeśli wstawię do tego wzoru cyfrę 9 jako x , oto co wyjdzie:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 powyżej 3 to 3, a 9 + 3 to 12]
- 8 ( 12 razy dwie trzecie) [jedna trzecia z 12 to 4, a 4 * 2 to 8]
- 9 ( 8 + 1 to 9)
Wyzwanie
Napisz mi funkcję (w dowolnym języku programowania), która przyjmuje liczbę i generuje tablicę liczb całkowitych za pomocą wzorca.
Trochę jak ten kod 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;
}
Wyjaśnienia
W komentarzach dotyczących specyfikacji pytania pojawiły się dyskusje. Ta sekcja ma na celu wyjaśnienie niektórych z nich.
„lepiej liczyć w bajtach niż w znakach”
Wybrałem postacie, ponieważ (przynajmniej dla mnie) łatwiej byłoby ocenić. Oczywiście nie mogę tego teraz zmienić. (wiele odpowiedzi jest już opublikowanych)
„zaokrąglenie”
Zaokrąglanie następuje według tego wiersza:
Jeśli jest to 5 lub więcej, podnieś wynik
Jeśli jest to 4 lub mniej, pozwól mu odpocząć
Mówiąc prosto, jeśli jest to coś takiego jak 4.7 lub 3.85, zaokrąglij je odpowiednio do 5 i 4.
Przykłady
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]
Jeśli jednak liczby są podobne do 2,3 lub 10,435446, zaokrąglij je odpowiednio do 2 i 10.
„obsługa języków”
Możesz swobodnie korzystać z funkcji i / lub tablic JEŻELI I TYLKO JEŻELI wybrany język ich nie obsługuje. Jeśli tak (nawet jeśli zwiększy liczbę twoich postaci), musisz ich użyć .