Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben, die bestimmt, ob eine Zahl durch eine andere teilbar ist. Der Haken ist, dass es so schnell wie möglich eine Antwort geben sollte , auch wenn nicht alle Ziffern der Nummer angegeben wurden.
Ihr Programm sollte eine ganze Zahl D ≥ 2 und dann eine Reihe von Ziffern als Eingabe annehmen . Diese repräsentieren die Ziffern einer anderen ganzen Zahl N ≥ 1, beginnend mit der niedrigstwertigen Ziffer. Beim ersten Punkt, an dem N durch D teilbar sein muss oder nicht , sollte Ihr Programm die entsprechende Antwort ausgeben und beenden . Wenn das Ende der Eingabe erreicht ist, sollte ausgegeben werden, ob das volle N durch D teilbar ist .
Hier ist eine Liste akzeptabler Eingabeformate für N (hinterlassen Sie einen Kommentar, wenn Sie der Meinung sind, dass etwas, das nicht enthalten ist, zulässig sein sollte):
Standardeingabe : Ziffern werden in separaten Zeilen angegeben; Ende der Eingabe ist EOF oder ein spezieller Wert; exit bedeutet, dass die Funktion zurückkehrt oder das Programm beendet wird.
Analogeingang : über z. B. Tastenanschläge oder zehn Tasten, die jede Ziffer darstellen; Das Eingabeende ist ein spezieller Wert. exit bedeutet, dass die Funktion zurückkehrt oder das Programm beendet wird.
Funktion mit globalem Status : wiederholt mit aufeinanderfolgenden Ziffern aufgerufen; Das Eingabeende ist ein spezieller Wert. exit bedeutet, dass die Funktion einen Wert ungleich null zurückgibt. Beachten Sie, dass , wenn Sie globalen Zustand zu verwenden, müssen sie gelöscht werden , nachdem ein Wert zurückgegeben oder auf andere Weise zurückgesetzt , so dass die Funktion mehrmals funktioniert .
Curry-Funktion : Gibt entweder eine andere Funktion zurück, die mit der nächsten Ziffer oder einem Wert aufgerufen werden soll. Das Eingabeende ist ein spezieller Wert oder der Aufruf der Funktion ohne Argument. exit bedeutet, dass die Funktion eine Antwort und keine andere Funktion zurückgibt.
GUI-Eingabeaufforderung oder ähnliches : wird wiederholt angezeigt; Ende der Eingabe ist "Abbruch" oder Äquivalent oder ein spezieller Wert; exit bedeutet, dass keine Eingabeaufforderungen mehr angezeigt werden.
Iteratorfunktion : input ist ein statusbehaftetes Objekt oder eine Funktion, die beim Aufruf die nächste Ziffer zurückgibt, end of input ist eine Ausnahme oder ein spezieller Wert; exit bedeutet, dass der Iterator nicht mehr aufgerufen wird.
Die Eingabe für D und die Ausgabe kann über jede akzeptable Standardmethode erfolgen .
Testfälle:
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
Eingabe mit einem speziellen Wert für EOF zu verwenden?
[]
und [2]
Rückkehr etwas anderes als false
oder true
(einschließlich der Funktion selbst etc ...) , während [2,3]
, [2,3,1]
und [2,3,1,EOF]
Rückkehr true
. Es kommt mir der globalen Staatsoption sehr nahe.