ligne13~20171216-191541.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # -*- coding : utf8 -*-
  2. import random
  3. from scipy.stats import norm
  4. import numpy as np
  5. from colors import bold
  6. # Preferences
  7. noise_duration = 50
  8. silence_duration = 300
  9. # prob_list contiendra la problaité qu'il y ai une altération sur Chaque
  10. # lettre durant le bruit.
  11. prob_list_range = np.arange(-2, 2, 4/noise_duration)
  12. prob_list = [y*2 for y in norm().pdf(prob_list_range)]
  13. # fonction principale
  14. def main():
  15. # Lire le fichier input.txt et le ranger dans text_in
  16. with open("input.txt") as f:
  17. text_in = f.read()
  18. # Parcourir le fichier et effectuer le procédé sur chaque carractere
  19. # en fonction de sa place dans le texte. Écrire le résultat dans text_out
  20. text_out = ""
  21. for i, c in enumerate(text_in):
  22. text_out += process(i, c)
  23. print(text_out)
  24. # Écrire le contenu de text_out dans le fichier output.txt
  25. with open("output.txt", "w") as f:
  26. f.write(text_out)
  27. # Le procédé a appliquer sur chaque caractere en fonction de sa position.
  28. def process(index, char):
  29. # Je m'assure qu'il y ait un silence au début du texte
  30. index += silence_duration
  31. # Si je suis dans la période de bruit
  32. if index%(noise_duration+silence_duration) < noise_duration:
  33. # je tire au sort pour savoir si j'altère le caractere
  34. if random.random() < prob_list[index%(noise_duration+silence_duration)]:
  35. # j'altère le caractere avec un "v" ou un "r"
  36. char = bold(random.choice(["v", "r"]))
  37. # je retourne le caractere
  38. return char
  39. # je lance le programme
  40. main()