Ваше завдання - написати програму або функцію, яка визначає, чи ділиться число на інше. Проблема полягає в тому, що вона повинна дати відповідь якнайшвидше , навіть якщо не всі цифри дано.
Ваша програма повинна взяти ціле число D ≥ 2, а потім ряд цифр як вхід. Вони представляють цифри іншого цілого числа N ≥ 1, починаючи з найменш значущої цифри. На першому етапі, що N або повинен, або не повинен бути розділеним на D , ваша програма повинна вивести відповідну відповідь і вийти. Якщо кінець введення буде досягнуто, то слід виводити повний N ділиться на D .
Ось перелік прийнятних вхідних форматів для N (залиште коментар, якщо ви вважаєте, що щось, що не включено, повинно бути дозволено):
Стандартне введення : цифри наводяться в окремих рядках; кінець введення - EOF або спеціальне значення; Вихід означає, що функція повертається або програма закінчується.
Аналоговий ввід : наприклад, натискання клавіш або десять кнопок, що представляють кожну цифру; кінець введення - це особливе значення; Вихід означає, що функція повертається або програма закінчується.
Функція з глобальним станом : викликається повторно з послідовними цифрами; кінець введення - це особливе значення; вихід означає, що функція повертає ненулеве значення. Зауважте, що якщо ви використовуєте глобальний стан, його потрібно очистити після повернення значення або скидання іншим способом , щоб функція працювала кілька разів .
Закрита функція : повертає або іншу функцію для виклику із наступною цифрою, або значенням; кінець введення - це спеціальне значення або виклик функції без аргументу; вихід означає, що функція повертає відповідь, а не іншу функцію.
Підказка GUI або подібне : відображається повторно; кінець введення - "скасувати" або еквівалент, або спеціальне значення; 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
. Це вражає мене якнайбільш близьким до глобального державного варіанту.