Giriş
Ben televizyon izlerken geçen gün bu (işe yaramaz) desen tökezledi. Ben ilk sayı kullanmak çünkü "9 desen" o (diyelim bu özü, bir sayı girin olan 9. oldu adında x ) ve sonra geri almak:
- x
- x + ( x / 3) [buna y diyelim ]
- y'nin üçte ikisi [buna z diyelim ]
- z + 1
Yani, bu örüntünün içine 9 sayısını x olarak koyarsam , ortaya çıkan şey budur:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [3 üzeri 9 3 ve 9 + 3 12]
- 8 ( üçte ikisinin 12 katı) [12'nin üçte biri 4 ve 4 * 2 8'dir]
- 9 ( 8 + 1 9'dur)
Meydan okuma
Bana bir sayı alan ve deseni kullanarak bir tamsayı dizisi çıkaran bir işlev (herhangi bir programlama dilinde) yazın.
Bu psuedo kodu gibi:
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;
}
Açıklamalar
Sorunun özellikleriyle ilgili yorumlarda tartışmalar gündeme geliyor. Bu bölüm bunlardan bazılarını açıklığa kavuşturmak içindir.
"bayt cinsinden saymak karakterden daha iyidir"
Karakter seçtim çünkü (en azından benim için) yargılamak daha kolay olurdu. Tabii ki, şimdi değiştiremem. (çok sayıda yanıt zaten gönderildi)
"Yuvarlama"
Yuvarlama bu kafiyeyi izler:
5 veya daha fazla ise, puanı yükseltin
4 veya daha azsa, dinlenmesine izin verin
Basitçe söylemek gerekirse, 4.7 veya 3.85 gibi bir şey varsa, bunları sırasıyla 5 ve 4'e yuvarlayın.
Örnekler
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]
Bununla birlikte, sayılar 2.3 veya 10.435446 gibi bir şeyse, bunları sırasıyla 2 ve 10'a yuvarlayın.
"dil desteği"
Fonksiyonlar ve / veya dizileri, VEYA SADECE tercih ettiğiniz dil bunları desteklemiyorsa kullanamazsınız. Varsa (karakter sayınızı artıracak olsa bile) bunları kullanmalısınız .