Votre tâche consiste à écrire un programme ou une fonction qui détermine si un nombre est divisible par un autre. Le hic, c'est qu'il devrait donner une réponse dès que possible , même si tous les chiffres du numéro n'ont pas été donnés.
Votre programme doit prendre un entier D ≥ 2 puis une série de chiffres en entrée. Ceux-ci représentent les chiffres d'un autre entier N ≥ 1, en commençant par le chiffre le moins significatif. Au premier point que N soit doit ou ne doit pas être divisble par D , votre programme doit générer la réponse appropriée et la sortie. Si la fin de l'entrée est atteinte, il se doit de sortie si la totalité N est divisible par D .
Voici une liste des formats d'entrée acceptables pour N (laissez un commentaire si vous pensez que quelque chose qui n'est pas inclus devrait être autorisé):
Entrée standard : les chiffres sont indiqués sur des lignes distinctes; la fin de l'entrée est EOF ou une valeur spéciale; exit signifie que la fonction revient ou que le programme se ferme.
Entrée analogique : par exemple, par touches ou dix boutons représentant chaque chiffre; la fin de l'entrée est une valeur spéciale; exit signifie que la fonction revient ou que le programme se ferme.
Fonction avec état global : appelée à plusieurs reprises avec des chiffres successifs; la fin de l'entrée est une valeur spéciale; exit signifie que la fonction renvoie une valeur non nulle. Notez que si vous utilisez l'état global, il doit être effacé après qu'une valeur est retournée ou autrement réinitialisé de sorte que la fonction fonctionne plusieurs fois .
Fonction curry : renvoie soit une autre fonction à appeler avec le chiffre suivant, soit une valeur; la fin de l'entrée est une valeur spéciale ou l'appel de la fonction sans argument; exit signifie que la fonction renvoie une réponse plutôt qu'une autre fonction.
Invite GUI ou similaire : affiché à plusieurs reprises; la fin de l'entrée est "annuler" ou équivalent, ou une valeur spéciale; exit signifie que les invites cessent d'apparaître.
Fonction d'itérateur : l'entrée est un objet ou une fonction avec état qui renvoie le chiffre suivant lorsqu'il est appelé, la fin de l'entrée est une exception ou une valeur spéciale; exit signifie que l'itérateur cesse d'être appelé.
L'entrée pour D et la sortie peuvent se faire par n'importe quelle méthode standard acceptable .
Cas de test:
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
entrée avec une valeur spéciale pour EOF?
[]
et [2]
quoi que ce soit de retour autre que false
ou true
(y compris la fonction elle - même , etc ...) tout [2,3]
, [2,3,1]
et [2,3,1,EOF]
retour true
. Cela me semble aussi proche de l'option de l'État mondial.