pengantar
Saya menemukan pola (tidak berguna) ini tempo hari ketika saya sedang menonton TV. Saya menamainya "pola 9" karena angka pertama yang menggunakannya adalah 9. Intinya adalah, Anda memasukkan nomor (katakanlah x ), dan kemudian Anda kembali:
- x
- x + ( x / 3) [sebut saja ini y ]
- dua pertiga dari y [sebut saja ini z ]
- z +1
Jadi, jika saya masukkan ke dalam pola ini angka 9 sebagai x , inilah yang akan keluar:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 lebih dari 3 adalah 3, dan 9 + 3 adalah 12]
- 8 ( 12 kali dua pertiga) [sepertiga dari 12 adalah 4, dan 4 * 2 adalah 8]
- 9 ( 8 + 1 adalah 9)
Tantangan
Tuliskan saya fungsi (dalam bahasa pemrograman apa pun) yang menggunakan angka, dan mengeluarkan array integer menggunakan pola.
Agak menyukai kode-psuedo ini:
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;
}
Klarifikasi
Diskusi telah menimbulkan komentar mengenai spesifikasi pertanyaan. Bagian ini dimaksudkan untuk mengklarifikasi beberapa di antaranya.
"lebih baik untuk menghitung dalam byte daripada karakter"
Saya memilih karakter karena (bagi saya, setidaknya) akan lebih mudah untuk menilai. Tentu saja, saya tidak bisa mengubahnya sekarang. (banyak jawaban sudah diposting)
"pembulatan"
Pembulatan mengikuti sajak ini:
Jika 5 atau lebih, naikkan skor
Jika 4 atau kurang, biarkan saja
Sederhananya, jika itu adalah sekitar 4,7 atau 3,85, bulatkan masing-masing menjadi 5 dan 4.
Contohnya
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]
Namun, jika angkanya sekitar 2,3 atau 10,435446, bulatkan masing-masing menjadi 2 dan 10.
"dukungan bahasa"
Anda bebas untuk tidak menggunakan fungsi dan / atau array JIKA DAN HANYA JIKA bahasa pilihan Anda tidak mendukungnya. Jika ya (bahkan jika itu akan meningkatkan jumlah karakter Anda), Anda harus menggunakannya .