前書き
先日、テレビを見ているときに、この(役に立たない)パターンに出会いました。使用する最初の数字が9だったので、「9パターン」と名付けました。その要点は、数字(xとしましょう)を入力すると、次のようになります。
- バツ
- x +(x / 3)[これをyとしましょう]
- yの 3分の2 [これをzと呼ぶ]
- z + 1
したがって、このパターン内に9をxとして入れると、次のようになります。
- 9(9)
- 12(9 + 9/3)[9 over 3は3、9 + 3は12]
- 8(12の 2/3の12)[12の3分の1は4、4 * 2は8]
- 9(8 + 1は9)
チャレンジ
数値を受け取り、パターンを使用して整数配列を出力する関数を(プログラミング言語で)書いてください。
この擬似コードのように:
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;
}
明確化
質問の仕様に関するコメントは議論が活発化しています。このセクションでは、それらのいくつかを明確にすることを目的としています。
「文字よりバイトで数えるほうがいい」
(少なくとも私にとっては)判断しやすいので、私はキャラクターを選びました。もちろん、今は変更できません。(多数の回答が既に投稿されています)
「丸め」
丸めはこの韻に従っています:
5点以上
ならスコアアップ4 点以下なら休ませる
簡単に言えば、4.7または3.85のような場合は、それぞれ5と4に丸めます。
例
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]
ただし、数値が2.3または10.435446のような場合は、それぞれ2と10に丸めます。
「言語サポート」
選択した言語でサポートされていない場合にのみ、関数や配列を自由に使用できます。もしそうなら(たとえそれがあなたの文字数を増やすことになっても)、あなたはそれらを使わなければなりません。