あなたの仕事は、ある数値が別の数値で割り切れるかどうかを判断するプログラムまたは関数を書くことです。キャッチは、数字のすべての数字が与えられていなくても、できるだけ早く答えを出すべきだということです。
あなたのプログラムは、整数とるべきD ≥2と、入力として一連の数字を。これらは、整数、別の数字を表すN個の最下位桁から始まる、1≥。最初の時点でいることをNのどちらかがしなければならないか、してはならないことでdivisbleもD、あなたのプログラムの出力すべき適切な解答して終了します。入力の終わりに到達した場合、完全なNがDで割り切れるかどうかを出力する必要があります。
Nの受け入れ可能な入力形式のリストを次に示します (含まれないものを許可する必要があると思われる場合はコメントを残します)。
標準入力:数字は別々の行に表示されます。 入力の終わりはEOFまたは特別な値です。 exitは、関数が戻るか、プログラムが終了することを意味します。
アナログ入力:キーストロークや各桁を表す10個のボタンなど。 入力の終わりは特別な値です。 exitは、関数が戻るか、プログラムが終了することを意味します。
グローバル状態の関数:連続した数字で繰り返し呼び出されます。 入力の終わりは特別な値です。 exitは、関数がnull以外の値を返すことを意味します。グローバル状態を使用する場合は、値が返された後、または関数が複数回機能するようにリセットした後にクリアする必要があることに注意してください。
Curried function:次の数字または値で呼び出される別の関数を返します。 入力の終わりは特別な値であるか、引数なしで関数を呼び出します。 exitは、関数が別の関数ではなく答えを返すことを意味します。
GUIプロンプトなど:繰り返し表示されます。 入力の終わりは「キャンセル」または同等の値、または特別な値です。 exitは、プロンプトが表示されなくなることを意味します。
イテレータ関数:入力は、呼び出されたときに次の数字を返すステートフルオブジェクトまたは関数 です。入力の終わりは例外または特別な値です。 exitは、反復子の呼び出しが停止することを意味します。
Dの入力と出力は、任意の受け入れ可能な標準方法を使用できます。
テストケース:
2; 6 => true
5; 6 => false
20; 0 3 => false
20; 0 4 => true
100; 1 => false
100; 0 0 => true
100; 0 2 => false
4; 2 4 => false
4; 2 5 => true
4; 2 [eof] => false
4; 4 [eof] => true
625; 5 5 => false
625; 5 7 2 => false
625; 5 7 3 6 => false
625; 5 7 3 4 => true
7; 9 3 4 [eof] => false
7; 9 3 4 5 [eof] => true
140; 0 3 => false
140; 0 4 5 [eof] => false
140; 0 4 5 1 [eof] => true
14; 4 5 1 4 [eof] => false
14; 4 5 1 4 1 [eof] => true
digits
EOFの特別な値を持つ入力としてリストを取得するだけで問題はありませんか?
[]
と[2]
リターン以外false
たりtrue
しながら、(...関数自体などを含む)[2,3]
、[2,3,1]
および[2,3,1,EOF]
リターンtrue
。グローバル状態オプションに近いと思います。