Skip to content

Instantly share code, notes, and snippets.

@bersace
Last active June 29, 2017 07:52
Show Gist options
  • Save bersace/4d0340530719ca681df1107639301b42 to your computer and use it in GitHub Desktop.
Save bersace/4d0340530719ca681df1107639301b42 to your computer and use it in GitHub Desktop.
Énigme de la mouche et des TGV
# É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