39 lines
914 B
Python
39 lines
914 B
Python
#!/usr/bin/env python
|
|
|
|
"""Automate fini reconnaissant les entiers en base 2 divisibles par 7."""
|
|
|
|
|
|
def main() -> None:
|
|
"""Exécution de l'automate."""
|
|
|
|
print("Fournissez un nombre : ")
|
|
nombre = input()
|
|
nb_base10 = int(nombre, 2)
|
|
if automate_modulo_7(nombre):
|
|
print(f"{nb_base10} est multiple de 7")
|
|
else:
|
|
print(f"{nb_base10} n'est pas multiple de 7")
|
|
|
|
|
|
def automate_modulo_7(nombre: str) -> bool:
|
|
"""Automate de modulo 7 en base 2."""
|
|
|
|
etats = [
|
|
(0, 1), # état 0
|
|
(2, 3), # état 1
|
|
(4, 5), # état 2
|
|
(6, 0), # état 3
|
|
(1, 2), # état 4
|
|
(3, 4), # état 5
|
|
(5, 6), # état 6
|
|
]
|
|
etat_courant = 0 # état initial
|
|
for chiffre in nombre:
|
|
etat_courant = etats[etat_courant][int(chiffre)]
|
|
if etat_courant == 0:
|
|
return True
|
|
return False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|