Twoim zadaniem jest napisanie programu lub funkcji, która określa, czy liczba jest podzielna przez inną. Haczyk polega na tym, że powinien udzielić odpowiedzi tak szybko, jak to możliwe , nawet jeśli nie podano wszystkich cyfr numeru.
Twój program powinien przyjąć jako liczbę całkowitą D ≥ 2, a następnie ciąg cyfr. Reprezentują one cyfry innej liczby całkowitej N ≥ 1, zaczynając od co najmniej znaczącej cyfry. Na pierwszym miejscu, że N albo musi lub nie może być divisble przez D , Twój program powinien wypisać właściwą odpowiedź i wysiadanie. Po osiągnięciu końca wejścia, to powinien wypisać czy pełny N jest podzielna przez D .
Oto lista dopuszczalnych formatów wejściowych dla N (zostaw komentarz, jeśli uważasz, że coś nieuwzględnionego powinno być dozwolone):
Standardowe wprowadzanie : cyfry są podawane w osobnych wierszach; koniec wejścia to EOF lub wartość specjalna; Wyjście oznacza, że funkcja zwraca lub program kończy działanie.
Wejście analogowe : np. Poprzez naciśnięcia klawiszy lub dziesięć przycisków reprezentujących każdą cyfrę; koniec wprowadzania jest wartością specjalną; Wyjście oznacza, że funkcja zwraca lub program kończy działanie.
Funkcja ze stanem globalnym : wywoływana wielokrotnie z kolejnymi cyframi; koniec wprowadzania jest wartością specjalną; exit oznacza, że funkcja zwraca wartość inną niż null. Pamiętaj, że jeśli używasz stanu globalnego, musi on zostać wyczyszczony po zwróceniu wartości lub w inny sposób zresetowany , aby funkcja działała wiele razy .
Funkcja curry : zwraca inną funkcję, która ma zostać wywołana z następną cyfrą lub wartością; koniec wejścia to specjalna wartość lub wywołanie funkcji bez argumentu; Wyjście oznacza, że funkcja zwraca odpowiedź, a nie inną funkcję.
Pytanie GUI lub podobne : wyświetlane wielokrotnie; koniec wprowadzania to „anuluj” lub równoważny albo wartość specjalna; exit oznacza, że monity przestają się pojawiać.
Funkcja iteratora : wejście jest obiektem stanowym lub funkcją, która po wywołaniu zwraca następną cyfrę, koniec wejścia to wyjątek lub wartość specjalna; exit oznacza, że iterator przestaje być wywoływany.
Dane wejściowe dla D i dane wyjściowe można przeprowadzić dowolną akceptowalną metodą standardową .
Przypadki testowe:
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
danych wejściowych o specjalnej wartości dla EOF?
[]
i [2]
coś innego niż powrót false
lub true
(w tym samej funkcji etc ...), podczas [2,3]
, [2,3,1]
i [2,3,1,EOF]
powrót true
. Uderza mnie to tak blisko opcji globalnego stanu.