Last active
June 29, 2017 07:52
-
-
Save bersace/4d0340530719ca681df1107639301b42 to your computer and use it in GitHub Desktop.
Énigme de la mouche et des TGV
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Énigme de la mouche et des TGV | |
# | |
# Un train part de Lille à 7h41 et va vers Paris (250km) a vitesse constante | |
# 250km/h. Simultanément un train part de Paris et va vers Lille à la meme | |
# vitesse. Une mouche dopée à l'EPO vole du train Lillois au train Parisien à | |
# 436 km/h. Arrivée au 2e train, elle fait demi tour et revient vers le 1er, | |
# puis à nouveau etc. Lorsque les 2 trains se croisent et que 2 urluberlus en | |
# profitent pour se dire bonjour à 500km/h, la mouche s'arrête. À ce moment, | |
# quelle distance a-t-elle parcouru sur tous les allers-retours cumulés de plus | |
# en plus courts ? | |
import logging | |
import sys | |
logging.basicConfig(level=logging.DEBUG, format="%(message)s") | |
logger = logging | |
vitesse_train = 250 | |
vitesse_mouche = 436 | |
distance_trajet = 250 | |
distance_entre_trains = distance_trajet | |
total_parcours_mouche = 0 | |
ratio_train_mouche = 1 / (1. + vitesse_mouche / vitesse_train) | |
while distance_entre_trains > 0.01: | |
distance_parcouru_train = distance_entre_trains * ratio_train_mouche | |
distance_parcouru_mouche = distance_entre_trains - distance_parcouru_train | |
total_parcours_mouche += distance_parcouru_mouche | |
distance_entre_trains = distance_entre_trains - distance_parcouru_train * 2 | |
logger.info( | |
"Les trains roulent %6.2fkm (cumul: %6.2fkm) ; " | |
"la mouche vole %6.2fkm (cumul: %6.2fkm)", | |
distance_parcouru_train, | |
(distance_trajet - distance_entre_trains) / 2., | |
distance_parcouru_mouche, | |
total_parcours_mouche | |
) | |
logger.info( | |
"Les trains se croisent. La mouche a parcouru %.2fkm.", | |
total_parcours_mouche, | |
) | |
if sys.stderr.isatty(): | |
import pdb; pdb.set_trace() # noqa | |
# $ python my-mouche.py |& cat | |
# Les trains roulent 91.11km (cumul: 91.11km) ; la mouche vole 158.89km (cumul: 158.89km) | |
# Les trains roulent 24.70km (cumul: 115.81km) ; la mouche vole 43.08km (cumul: 201.97km) | |
# Les trains roulent 6.70km (cumul: 122.51km) ; la mouche vole 11.68km (cumul: 213.65km) | |
# Les trains roulent 1.82km (cumul: 124.32km) ; la mouche vole 3.17km (cumul: 216.82km) | |
# Les trains roulent 0.49km (cumul: 124.82km) ; la mouche vole 0.86km (cumul: 217.68km) | |
# Les trains roulent 0.13km (cumul: 124.95km) ; la mouche vole 0.23km (cumul: 217.91km) | |
# Les trains roulent 0.04km (cumul: 124.99km) ; la mouche vole 0.06km (cumul: 217.98km) | |
# Les trains roulent 0.01km (cumul: 125.00km) ; la mouche vole 0.02km (cumul: 217.99km) | |
# Les trains se croisent. La mouche a parcouru 217.99km. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment