Le problème de la machine à café

Transcription

Le problème de la machine à café
Le problème de la
machine à café
Stéphane Gonnord
Le problème de la machine à café
Un peu d’informatique avec le projet Euler
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Stéphane Gonnord
Programmation de
base
Somme des décimales
[email protected]
www.mp933.fr
Lycée du parc - Lyon
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Lundi 6 mai 2013 - Luminy
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
WTF ?
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Au programme
Il y aura...
Le problème de la
machine à café
Stéphane Gonnord
Introduction
I
plein de petits exercices (' 30) ;
I
du crible d’Ératosthène ;
I
de la programmation (plus ou moins) de base ;
I
de l’arithmétique light... et un peu moins light ;
I
du dénombrement ;
I
des probabilités ;
I
de la programmation dynamique (plein !) ;
I
des études de complexité «à la louche» ;
I
des photos de hard !
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Et bien entendu....
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
de la géométrie à la (grand-)papa !
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Project Euler (1/4)
Le problème de la
machine à café
Stéphane Gonnord
Introduction
www.projecteuler.net
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Problem 1 : Multiples of 3 and 5
Les chemins
Décomposition en somme
Mais encore...
If we list all the natural numbers below 10 that are multiples
of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples
is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Project Euler (2/4) - neuneuterie
Une grosse calculatrice est parfois suffisante !
Problem 48 : Self powers
1
2
3
10
The series, 1 + 2 + 3 + · · · + 10 = 10405071317.
Find the last ten digits of the series,
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
1
2
3
1000
1 + 2 + 3 + · · · + 1000
.
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
> add(k**k,k=1..1000) mod 10**10;
Pas très malin en effet... Mais ça passe quand même !
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
>>> sum(k**k for k in range(1001)) % 10**10
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Project Euler (3/4) - Plus intéressant...
Problem 15 : Lattice paths
Starting in the top left corner of a 2 × 2 grid, and only being
able to move to the right and down, there are exactly 6
routes to the bottom right.
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
How many such routes are there through a 20 × 20 grid ?
Les chemins
Décomposition en somme
Mais encore...
I
I
Fastoche : dénombrement classique, ou formule «de
récurrence».
Comment programmer le calcul via cette formule ?
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Project Euler (4/4) - Ça ne rigole plus
Problem 208 : Robot walks
A robot moves in a series of one-fifth circular arcs ( 25π ) (blah blah blah) One of 70932
possible closed paths of 25 arcs starting northward is
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
(Blah blah) how many journeys of 70 arcs in length can it take that return it, after the final
arc, to its starting position ?
Des probabilités
Dice game
The chase
Flea circus
I
Il va falloir faire un peu de géométrie...
I
mais surtout de l’informatique !
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Complexité (1/3) : the «one minute rule»
One minute rule
Each problem has been designed according to a "oneminute rule", which means that although it may take several
hours to design a successful algorithm with more difficult
problems, an efficient implementation will allow a solution
to be obtained on a modestly powered computer in less
than one minute.
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
9
Une minute = un milliard = 10 = 2
30
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Complexité (2/3) : à la louche
Problem 184 : Triangles containing the origin
For a radius of 2, I2 contains the nine points (0,0), (1,0),
(1,1), (0,1), (-1,1), (-1,0), (-1,-1), (0,-1) and (1,-1). There are
eight triangles having all three vertices in I2 which contain
the origin in the interior. Two of them are shown below, the
others are obtained from these by rotation.
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
How many triangles are there containing the origin in the
interior and having all three vertices in I105 ?
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Brute force en n4 ... OK !
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Complexité (3/3) : à la louche
Problem 204 - Generalised Hamming numbers
A Hamming number is a positive number which has no
prime factor larger than 5. So the first few Hamming numbers are 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15. There are 1105
Hamming numbers not exceeding 108.
We will call a positive number a generalised Hamming
number of type n, if it has no prime factor larger than n.
Hence the Hamming numbers are the generalised Hamming numbers of type 5.
How many generalised Hamming numbers of type 100 are
there which don’t exceed 109 ?
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
I
I
I
9
Brute force en 10 ×un truc pas trop petit...
Il va falloir finasser...
Patience !
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Crible (1/7)
Problem 10 : Summation of primes
The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
I
(106 )3/2 = (un peu) trop de divisions euclidiennes.
I
def somme(N):
Premiers=[True]*N
p,s = 2,0
while p<N:
if Premiers[p]:
s += p
k = 2
while k*p < N:
Premiers[k*p] = False
k += 1
p += 1
return s
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
I
Résultat en 2-3 secondes
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
Crible (2/7) - complexité
0
1
2
3
4
5
6
Stéphane Gonnord
7
8
9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
Introduction
The name of the game
Project Euler
Complexité
Des cribles
30 31 32 33 34 35 36 37 38 39
Principe et complexité
D’autres applications
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
70 71 72 73 74 75 76 77 78 79
Nombres de Hamming
Une petite pause géométrique
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
Programmation
dynamique
Principes
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
20 21 22 23 24 25 26 27 28 29
Dice game
The chase
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
Flea circus
De l’arithmétique
Le pgcd
50 51 52 53 54 55 56 57 58 59
Plus musclé
L’arbre de Stern-Brocot
Crible (3/7) - Encore du python
from reportlab.pdfgen import canvas
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Crible = canvas.Canvas(’tableau.pdf’)
Des cribles
Principe et complexité
D’autres applications
Crible.setFont("Helvetica", 16)
for i in range(10):
Programmation de
base
for j in range(10):
Crible.rect(100+30*i,500-30*j,30,30)
Crible.drawString(108+30*i,510-30*j, str(10*j+i))
Le crible «cache friendly»
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Crible.save()
Principes
Les chemins
Décomposition en somme
Crible.setStrokeColorRGB(255,0,0)
for x in range(4,100,2):
i,j = x%10,x/10
Crible.line(100+30*i,500-30*j,130+30*i,530-30*j)
Crible.line(130+30*i,500-30*j,100+30*i,530-30*j)
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
Crible (4/7) - Variantes
Stéphane Gonnord
Problem 231 : Prime factorisation of binomial coefficients
10
3
3
The binomial coefficient
= 120 = 2 × 3 × 5, and 2 +
2 + 2 + 3 + 5 = 14.
So the sum of the terms in the prime
factorisation of 10
is 14.
3
Find thesum of the terms in the prime factorisation of
20000000
.
15000000
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
«Now let’s go back home and sieve... and respect the
not_20_minutes_and_not_20_computers rule»
Problem 124 : Ordered radicals
The radical of n, rad (n), is the product of distinct prime
factors of n. For example, 504 = 23 × 32 × 7, so rad (504) =
2 × 3 × 7 = 42 ... (blah blah blah)
Sort rad (k ) for 1 ≤ k ≤ 100000.
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Crible (5/7) - Et en maths ?
Hardy & Wright - theorem 430 ( !)
The average number of both ω(n) and Ω(n) is ln ln n.
More precisly (blah blah...)
On compte le nombre de fois qu’on a «rayé» un nombre :
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
I
En criblant selon tous les premiers.
I
En criblant selon tous les entiers.
Programmation de
base
Somme des décimales
Fibonacci
Et bien entendu :
Nombres de Hamming
Une petite pause géométrique
pn ∼ n ln n
Programmation
dynamique
Principes
Les chemins
I
I
Le nombre moyen de diviseurs premiers des k ≤ n
est équivalent à ln ln n.
Le nombre moyen de diviseurs des k ≤ n est
équivalent à ln n.
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Crible (6/7) - Version «Cache friendly»
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
Crible (7/7) - C’est pas du bidon !
I
Crible classique :
10
0.041
5
10
0.15
6
7
10
1.4
8
10
15
10
160
Cache friendly, n = 107 :
Taille blocs
t (secondes)
I
Introduction
4
n
t (secondes)
I
Stéphane Gonnord
103
8.8
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
104
5.9
105
6.3
106
7.7
107
15.1
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
8
Cache friendly, n = 10 :
Nombres de Hamming
Une petite pause géométrique
Taille blocs
t (secondes)
I
103
157
104
67.9
Le chronomètre :
import time
t0=time.time() ...
105
67.1
106
72
107
85
108
157
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Somme des décimales (1/3)
Problem 16 : Power digit sum
15
2 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 =
26.
What is the sum of the digits of the number 21000 ?
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Problem 20 : Factorial digit sum
Programmation de
base
Somme des décimales
Find the sum of the digits in the number 100!
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Somme des décimales (2/3)
I
def somme(n):
if n<10: return n
return (n%10) + somme(n/10)
C’était une blague !
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
I
I
I
def somme(n):
if n<10: return n
return (n%10) + somme(n//10)
def somme2(n0):
n,s = n0,0
while n>0:
s += n%10
n /= 10
return s
Aheum... (Et oui, on peut écrire n //= 10)
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
Somme des décimales (3/3)
Stéphane Gonnord
I
Le vrai pythoneux écrira probablement :
I
def somme3(n):
return sum(int(x) for x in list(str(n))) Des cribles
k
Performances : pour le calcul de S (22 ) (récursif hors
Introduction
The name of the game
Project Euler
Complexité
Principe et complexité
D’autres applications
jeu)
Le crible «cache friendly»
Programmation de
base
k
Itératif
Pythoneux
Maple
13
0.02
0.003
0.02
14
0.11
0.007
0.08
(la version maple est itérative)
Exercice
Commenter...
15
0.45
0.02
0.30
16
1.8
0.07
1.1
17
7.1
0.23
4.4
18
28
0.87
17
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Fibonacci 1/2
Problem 2 : Even Fibonacci numbers
Each new term in the Fibonacci sequence is generated by
adding the previous two terms. By starting with 1 and 2, the
first 10 terms will be :
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Programmation de
base
Somme des décimales
Find the sum of all the even-valued terms in the sequence
which do not exceed four million.
Problem 25 : 1000-digit Fibonacci number
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
The Fibonacci sequence is defined by the recurrence relation : Fn = Fn−1 + Fn−2 , where F1 = 1 and F2 = 1. Hence
the first 12 terms will be : F1 = 1, F2 = 1, F3 = 2, ... ,
F10 = 55, F11 = 89, F12 = 144. The 12-th term, F12 , is the
first term to contain three digits.
What is the first term in the Fibonacci sequence to contain
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
Fibonacci 2/2
Stéphane Gonnord
Combien coûte le calcul de fn ?
Introduction
The name of the game
I
C’est exponentiel si on s’y prend mal.
I
C’est linéaire si on tabule (ou mémoïze).
I
Mais on peut faire du logarithmique !
I
Hum... c’est bizarre !
I
Rha, c’était plutôt entre linéaire et quadratique !
I
En fait c’était exponentiel !
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Comme quoi...
Un exercice
Déterminer des algorithmes plus ou moins naïfs pour calculer les nombres de Catalan, et évaluer «leur complexité».
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
n−1
C0 = 1 et pour tout n ≥ 1, Cn =
∑
k =0
Flea circus
Ck Cn−1−k .
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Nombres de Hamming (1/2)
Problem 204 - Generalised Hamming Numbers
A Hamming number is a positive number which has no
prime factor larger than 5. So the first few Hamming numbers are 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15. There are 1105
Hamming numbers not exceeding 108.
We will call a positive number a generalised Hamming
number of type n, if it has no prime factor larger than n.
Hence the Hamming numbers are the generalised Hamming numbers of type 5.
How many generalised Hamming numbers of type 100 are
there which don’t exceed 109 ?
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
ϕ(n, k ) := nombre de nombre de Hamming de type pk .
ϕ(n, k ) = ϕ(n, k − 1) + ϕ(n/pk , k )
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Nombres de Hamming (2/2) - récréation
Le problème de la
machine à café
Stéphane Gonnord
I did the ugliest code possible (25 nested for loops in java)
Introduction
for(p[0]=0;p[0]<5;p[0]++){
for(p[1]=0;p[1]<5;p[1]++){
for(int i=2;i<25;i++){
p[i]=0;
}
if(calcv(p)<bound)
for(p[2]=0;p[2]<5;p[2]++){
for(int i=3;i<25;i++){
p[i]=0;
}
if(calcv(p)<bound)
for(p[3]=0;p[3]<5;p[3]++){
for(int i=4;i<25;i++){
p[i]=0;
}
if(calcv(p)<bound)
for(p[4]=0;p[4]<5;p[4]++){
for(int i=5;i<25;i++){
p[i]=0;
}
...
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Pause géométrique (1/2)
Problem 199 : Iterative circle packing
Blah blah blah... 3 iterations... blah blah blah... there are
108 gaps and the fraction of the area which is not covered
by circles is 0.06790342.
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
What fraction of the area is not covered by circles after 10
iterations ?
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Grumf...
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Pause géométrique (2/2)
Théorème de Descartes (Pschhh....)
Si quatre cercles de courbures (1/R) respectives k1 , ..., k4
sont mutuellement tangents...
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
alors : (k1 + k2 + k3 + k4 )2 = 2(k12 + k22 + k32 + k42 ).
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
2
(−1 + 2 + 3 + 6) = 2(1 + 4 + 9 + 36)
(2 + 3 + 6 + 23)2 = 2(4 + 9 + 36 + 232 )
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Au fait...
Le dessin précédent... a été produit par python, bien
entendu !
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
from reportlab.pdfgen import canvas
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Desc = canvas.Canvas(’tangents.pdf’)
Programmation de
base
Somme des décimales
Desc.circle(300,400,200)
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Desc.setFillColorRGB(0,255,0)
Desc.circle(400,400,100,fill=True)
Desc.setFillColorRGB(0,0,255)
Desc.circle(299,267,66.66,fill=True)
(...)
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Desc.save()
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Programmation dynamique
Vague contexte :
Le problème de la
machine à café
Stéphane Gonnord
Introduction
I
problèmes d’optimisation... mais pas uniquement !
I
sous-cas imbriqués ;
I
on ne veut pas recommencer les calculs en
permanence !
The name of the game
Project Euler
Complexité
I
en concurrence (souvent) avec la memoïzation
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Bottom-up vs Top-down
Nombres de Hamming
Une petite pause géométrique
Exemples classiques :
I
plus grande sous-suite croissante ;
I
problème du sac à dos ;
I
problème de rendu de monnaie ;
I
....
I
mais aussi Fibonacci !
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Comptons des chemins (1/2)
Problem 15
Starting in the top left corner of a 2 × 2 grid, and only being able to move to the right and
down, there are exactly 6 routes to the bottom right.
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
How many such routes are there through a 20 × 20 grid ?
ϕ(i , j ) : nombre de chemins pour une grille (i , j ).
But : ϕ(20, 20).
(
1
si i = 0 ou j = 0
ϕ(i , j ) =
ϕ(i − 1, j ) + ϕ(i , j − 1) sinon
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Comptons des chemins (2/2)
I
Python (programmation dynamique) :
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
def phi(i,j):
table=[[1]*(j+1) for k in range(i+1)]
Des cribles
for a in range(1,i+1):
for b in range(1,j+1):
Programmation de
table[a][b] = table[a][b-1]+table[a-1][b]
base
return table[i][j]
Project Euler
Complexité
Principe et complexité
D’autres applications
Le crible «cache friendly»
Somme des décimales
Fibonacci
I
Maple (memoïzation) :
> phi:=proc(i,j) option remember:
if i=0 or j=0
then return(1)
else return(phi(i-1,j)+phi(i,j-1)) fi
end:
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
I
Python (memoïzation) : désolé, je n’ai plus la place !
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Décomposition dynamique (1/2)
Problem 31 : Coin sums
In England the currency is made up of pound (£), and
pence (p), and there are eight coins in general circulation :
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
D’autres applications
Le crible «cache friendly»
It is possible to make £2 in the following way :
Programmation de
base
Somme des décimales
1×£1 + 1 × 50p + 2 × 20p + 1 × 5p + 1 × 2p + 3 × 1p
How many different ways can £2 be made using any number of coins ?
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
ϕ(n, k ) := décompositions de n avec des pièces de
«rang» ≤ k .
ϕ(n, k ) ' ϕ(n, k − 1) + ϕ(n − pk , k )
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Décomposition dynamique (2/2)
Le problème de la
machine à café
Stéphane Gonnord
Introduction
pieces=[1,2,5,10,20,50,100,200]
The name of the game
Project Euler
Complexité
Des cribles
def decompositions(n,r):
valeurs = [[0]*(r+1) for _ in range(n+1)]
Programmation de
for i in range(n+1):
base
valeurs[i][0] = 1
for k in range(1,r+1):
for i in range(n+1):
Programmation
dynamique
valeurs[i][k] = valeurs[i][k-1]
if pieces[k] <= i:
valeurs[i][k] += valeurs[i-pieces[k]][k]
Des probabilités
return valeurs[n][r]
Principe et complexité
D’autres applications
Le crible «cache friendly»
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Principes
Les chemins
Décomposition en somme
Mais encore...
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Décomposition memoïzée !
Le problème de la
machine à café
Stéphane Gonnord
Introduction
pieces=[1,2,5,10,20,50,100,200]
calculees={}
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
def decompositions(n,r):
Programmation de
if n<0: return 0
base
if (n,r) in calculees: return calculees[n,r]
if r == 0:
v = 1
Programmation
dynamique
else:
v = decompositions(n-pieces[r],r)\
+ decompositions(n,r-1)
Des probabilités
calculees[n,r] = v
return v
D’autres applications
Le crible «cache friendly»
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Principes
Les chemins
Décomposition en somme
Mais encore...
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Mais encore...
Problem 215 : Crack-free walls
Consider the problem of building a wall out of 2 × 1 and
3 × 1 bricks (blah blah blah)
For example, the following 9 × 3 wall is not acceptable due
to the running crack shown in red :
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
There are eight ways of forming a crack-free 9 × 3 wall,
written W (9, 3) = 8. Calculate W (32, 10).
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Retour sur les robots
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
I
Bien paramétrer le problème...
I
I
ϕ(n) := dictionnaire
{(theta,x1,x2,y1,y2):... , ...}
ϕ(n + 1) = · · · ou bien ϕ(2n) = · · · ?
But : ϕ(70)[0, 0, 0, 0, 0]
I
Si seulement c’était si simple !
I
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
Dice game
Stéphane Gonnord
Problem 205 - Dice game
Introduction
Peter has nine four-sided (pyramidal) dice, each with faces
numbered 1, 2, 3, 4. Colin has six six-sided (cubic) dice,
each with faces numbered 1, 2, 3, 4, 5, 6.
(blah blah blah)
What is the probability that Pyramidal Pete beats Cubic Colin ?
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
1
4
1
X +···+ X4
4
1
1
X +···+ X
6
6
6
Une petite pause géométrique
9
36
=
∑ pi X i
i =9
6
∑ ci X
i =6
Principes
Les chemins
Décomposition en somme
36
=
Programmation
dynamique
i
Mais encore...
Des probabilités
Dice game
The chase
i −1
36
∑
i =7
pi
∑ cj
j =6
!
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
The chase (1/3)
Problem 227 : The chase
"The Chase" is a game played with two dice and an even
number of players.
(blah blah blah)
In a game with 100 players, what is the expected number
of turns the game lasts ?
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
I
I
I
∆i ,j : probabilité que δ passe de i à j.


si |i − j | > 2
0
∆i ,j = 1/2 si i = j


...
k
(∆ )50,j : probabilité d’avoir δ = j après k étapes.
+∞
I
But : ∑ kL0 ∆k −1 C0 , avec L0 et C0 comme il faut !
k =1
I
C’est aussi L0 (I50 − ∆)−2 C0 !
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
The chase (2/3)
Le problème de la
machine à café
Stéphane Gonnord
Introduction
import numpy as np
The name of the game
Project Euler
Complexité
Des cribles
Delta = np.mat(np.zeros((50,50)))
for i in range(2,48):
Programmation de
Delta[i,i-2:i+3] = [1./36,2./9,1./2,2./9,1./36]
Principe et complexité
D’autres applications
Le crible «cache friendly»
base
Somme des décimales
Delta[0,:3] =
Delta[1,:4] =
Delta[48,46:]
Delta[49,47:]
[19./36,2./9,1./36]
[2./9,1./2,2./9,1./36]
= [1./36,2./9,19./36,2./9]
= [1./18,4./9,1./2]
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
somme = (np.identity(50)-Delta)**(-2)
Des probabilités
Dice game
The chase
Flea circus
res = (8*somme[49,0]+somme[49,1])/36
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
The chase (3/3)
Le problème de la
machine à café
Stéphane Gonnord
Introduction
Une autre attaque ?
The name of the game
Project Euler
Complexité
Notons Ek l’espérance du nombre de tours, partant
d’un écart δ = k ...
Des cribles
I
Écrivons 50 équations...
Programmation de
base
I
Et résolvons les !
I
Principe et complexité
D’autres applications
Le crible «cache friendly»
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Une simulation ? No way !
Programmation
dynamique
Principes
Give your answer rounded to ten significant digits.
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Flea circus (1/2)
Problem 213 : Flea circus
A 30 × 30 grid of squares contains 900 fleas, initially one
flea per square. When a bell is rung, each flea jumps to an
adjacent square at random (usually 4 possibilities, except
for fleas on the edge of the grid or at the corners).
What is the expected number of unoccupied squares after
50 rings of the bell ?
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
I
Encore une chaîne de Markov !
I
On crée la matrice de transition (900 × 900 quand
même !).
I
On calcule T 50 ...
I
Et on fait la somme des produits de gnagnagna
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Flea circus (2/2)
import numpy as np
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
lg,bells = 30,50
transitions = np.mat(\
np.zeros(lg*lg*lg*lg).reshape(lg*lg,lg*lg))
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
for i in range(lg):
for j in range(lg):
if i > 0 and i < lg-1:
Programmation
if j > 0 and j < lg-1: v = 4 # nb voisinsdynamique
else: v = 3
else: ...............
...... : remplissage de la matrice
Des probabilités
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Principes
Les chemins
Décomposition en somme
Mais encore...
Dice game
The chase
foo = transitions**bells
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
res = np.sum(np.prod(1-foo[:,p]) for p in range(lg*lg))
L’arbre de Stern-Brocot
Algorithme d’Euclide (1/4)
Problem 5 : Smallest multiple
2520 is the smallest number that can be divided by each of
the numbers from 1 to 10 without any remainder.
What is the smallest number that is evenly divisible by all
of the numbers from 1 to 20 ?
I
Il s’agit de calculer pgcd (2, 3, ..., 20).
I
Algorithme d’Euclide :
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
si a = bq + r , alors a ∧ b = b ∧ r .
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Algorithme d’Euclide (2/4) - code
I
Récursif :
def pgcd(a,b):
if a<b:
return pgcd(b,a)
if b==0:
return a
return pgcd(b,a%b)
I
Itératif :
def pgcd2(a,b):
x,y = min(a,b),max(a,b)
while y>0:
x,y = y,x%y
return x
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
I
Lequel est le meilleur ? Celui que vous préférez
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Algorithme d’Euclide (3/4) - complexité
I
Exercice : f100 ∧ f99 vaut combien ?
I
Classique : si a, b ≤ fn , il y aura au plus n divisions
euclidiennes.
I
I
Corollaire : calcul de a ∧ b en temps O (n3 ), si a et b
ont n bits.
En fait... c’est quadratique !
Preuve : compter le nombre de «transvections»
a ← a − αb pendant les divisions euclidiennes.
Chacune fait descendre de (au moins) 1 la somme
des longueurs...
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Algorithme d’Euclide (4/4) - Hors sujet
I
Notons un le ppcm de 1, 2, ..., n.
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
ln un ∼ n.
Project Euler
Complexité
I
Expérimentalement (avec temps de calcul) :
k
10
11
12
13
14
15
16
I
n = 2k
1024
2048
4096
8192
16384
32768
65536
Complexité ?
ln(un )/n
1.001
0,996
1,000
0,998
1,001
0,999
0,999
Récursif
0.0043
0.017
0.045
0.16
0.62
2.4
16
Itératif
0.0088
0.031
0.089
0.33
1.2
4.7
33
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
Counting fractions (1/2)
Stéphane Gonnord
Problem 72 : Counting fractions
Introduction
Consider the fraction, n/d, where n and d are positive integers.
If n < d and HCF (n, d ) = 1, it is called a reduced proper fraction.
If we list the set of reduced proper fractions for d ≤ 8 in ascending order of size, we get :
1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2,
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8
It can be seen that there are 21 elements in this set.
How many elements would be contained in the set of reduced
proper fractions for d ≤ 1, 000, 000 ?
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
106
Mais comment calculer ∑ ϕ(k ) ?
k =2
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Counting fractions (2/2)
Problem 73 : Counting fractions in a range
Consider the fraction, n/d, where n and d are positive integers.
If n < d and HCF (n, d ) = 1, it is called a reduced proper fraction.
If we list the set of reduced proper fractions for d ≤ 8 in ascending order of size, we get :
1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2,
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8
It can be seen that there are 3 fractions between 1/3 and 1/2.
How many fractions lie between 1/3 and 1/2 in the sorted set of
reduced proper fractions for d ≤ 12, 000 ?
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
12000 × 2000 calculs de pgcd : ça passe !
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
Lattice points
Stéphane Gonnord
Problem 233 : Lattice points
Introduction
Let f (N ) be the number of points with integer coordinates
that are on a circle passing through (0, 0), (N , 0), (0, N ),
and (N , N ).
It can be shown that f (10000) = 36.
What is the sum of all positive integers N ≤ 1011 such that
f (N ) = 420 ?
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
I
Une petite pause géométrique
If the prime factorization of n is
K
e
n=2
∏
i =1
L
piai
Programmation
dynamique
Principes
2b
× ∏ qj j ,
Les chemins
Décomposition en somme
j =1
Mais encore...
Des probabilités
K
where (pi , qj ) = (1, 3) [4], then f (n) = 4 ∏ (2ai + 1).
i =1
I
Yapluka : voir comment 420 peut être obtenu ainsi...
et cribler !
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Ambiguous Numbers (1/2)
Problem 198 : Ambiguous numbers
A best approximation to a real number x for the denominator bound d is a rational number r/s (in reduced form) with
s d, so that any rational number p/q which is closer to x
than r /s has q ≥ d.
Usually (blah blah) uniquely determined (blah blah)
9/40 has the two best approximations 1/4 and 1/5 for the
denominator bound 6.
How many ambiguous numbers x = p/q, 0 ≤ x ≤ 1/100,
are there whose denominator q does not exceed 108 ?
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Fractions continues ?
Décomposition en somme
Mais encore...
Des probabilités
Beurk
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot
Le problème de la
machine à café
L’arbre de Stern-Brocot
4
7
11
29
=
=
Introduction
1
1+
Project Euler
Complexité
1+ 13
Des cribles
Principe et complexité
= [2, 1, 1, 1, 3]
1
1+
The name of the game
= [1, 1, 3]
1
1
2+
Stéphane Gonnord
1
1+
D’autres applications
Le crible «cache friendly»
Programmation de
base
1
1+ 1
3
Somme des décimales
Fibonacci
1
2
Nombres de Hamming
Une petite pause géométrique
1
3
2
3
1
4
2
5
Programmation
dynamique
Principes
3
5
...
Les chemins
Décomposition en somme
...
3
8
...
3
7
Mais encore...
4
7
...
Des probabilités
5
13
...
...
Dice game
5
9
...
...
The chase
Flea circus
8
21
...
...
...
De l’arithmétique
Le pgcd
11
29
Plus musclé
...
L’arbre de Stern-Brocot
Pour conclure...
I
On peut faire de la «vraie» info en python.
I
Et aussi des maths !
I
Finalement, c’était pas si difficile :
Le problème de la
machine à café
Stéphane Gonnord
Introduction
The name of the game
Project Euler
Complexité
\documentclass[t,12pt]{beamer}
I
Retrouvez cette présentation, et surtout les énoncés
exacts sur www.mp933.fr/
Des cribles
Principe et complexité
D’autres applications
Le crible «cache friendly»
Programmation de
base
Somme des décimales
Fibonacci
Nombres de Hamming
Merci de votre attention !
Une petite pause géométrique
Programmation
dynamique
Principes
Les chemins
Décomposition en somme
Mais encore...
Des probabilités
Dice game
The chase
Flea circus
De l’arithmétique
Le pgcd
Plus musclé
L’arbre de Stern-Brocot