Archives mensuelles : avril 2008

Chico qui fait tomber la pluie : Nostalgie !

A chaque fois (ou presque) que je me retrouve en soirée avec de jeunes quadragénaires comme moi (Hein Pascal?) on évoque avec nostalgie les trésors des années 80, tant en séries télé qu’en chansons.

On évoque les samedi après-midi animés par Denise Fabre, les numero 1, et la chaleur de ses années là nous emplit…

En cherchant un peu,je viens de dénicher une perle, je vous laisse la (re)découvrir :

Lire aussi:

Et pourquoi pas IE8?

Beaucoup d’usagés d’internet sont prisonniers de leurs propres choix. J’ai aussi fait cette erreur, maudissant tout ce qui n’avait pas ma préférence.

Windows, Linux, Mac Os sont des mondes qui s’excluent les uns des autres. Et pourtant…

Utilisateur de plusieurs navigateurs (Firefox, Opera, Safari, Flockr… ) sur plusieurs systèmes d’exploitation, je viens de prendre une claque (virtuelle) en découvrant la beta d’internet explorer 8, sous windows XP : C’est (et je pèse mes mots ) un vrai régal.

Oh, non pas pour ses fonctionnalités, les navigateurs ont toutes les même, à peu de choses près. Mais pour sa vitesse de fonctionnement, et sa … (hé oui !) stabilité.

Ce n’est en aucun cas un article sponsorisé par ces messieurs de Redmond, et je suis plutôt défenseur des produits libres comme le magnifique open office, mais cette version du navigateur mérite d’être testée !

A noter que cette beta peut même être utilisée sur des versions du système d’exploitation non validées par Microsoft. (Logiciel piraté, pour parler simplement)

http://www.microsoft.com

Lire aussi:

Anatoly Karpov

With Anatoly Karpov
Creative Commons License photo credit: desdetasmania.blogspot.com

Anatoly Karpov est l’un de mes joueurs d’échecs préférés.
Sa longévité au plus haut niveau, son nombre impressionnant de victoires en tournoi, et son style de jeu, précis, mathématique et implacable continuent de me passionner.
Je n’ai jamais eu l’occasion de l’approcher…

Comme elle a de la chance cette jeune débutante ! Mais en a-t-elle conscience ?

Comment battre Papa aux échecs

Lire aussi:

Êtes-vous victime de discrimination ?

Voici les 18 critères de discriminations reconnus par la loi:

  1. âge,
  2. sexe,
  3. origine,
  4. situation de famille,
  5. orientation sexuelle,
  6. mœurs,
  7. caractéristiques génétiques,
  8. appartenance vraie ou supposée à une ethnie,
  9. appartenance vraie ou supposée à une nation,
  10. appartenance vraie ou supposée à une race,
  11. apparence physique,
  12. handicap,
  13. état de santé,
  14. état de grossesse,
  15. patronyme,
  16. opinions politiques,
  17. convictions religieuses,
  18. activités syndicale

Si vous êtes victimes de l’une de ses inégalités dans l’un des 5 domaines suivants :

  • emploi,
  • logement,
  • éducation,
  • services publics,
  • biens et services

Vous pouvez saisir La Halde :

Scoopeo :

Lire aussi:

Mathématiques pour les nuls, nombre de mains au poker

I Win
Creative Commons License photo credit: Kevin Labianco

Poker Hand, Aces over Eights, originally uploaded by halfstop.

Le terme main désigne un ensemble de 5 cartes :

Par exemple:
As de trèfle, As de carreau, 8 de trèfle, 8 de pique et 6 de carreaux.

L’ordre des cartes n’a pas d’importance.

Pour bien comprendre ce billet, il peut être bon de relire:

Il y a 52 cartes dans le jeu.
Nous avons donc 52 possibilités pour la première carte. Celle-ci disparaît du jeu et il ne reste que 51 pour la deuxième, puis 50 pour la troisième, 49 pour la quatrième et enfin 48 pour la dernière.

52x51x50x49x48=311 875 200

Ce qui ne donne pas 311 875 200 mains! En effet nous avons spécifié plus haut que l’ordre n’avait pas d’importance !

A Six and a King
Creative Commons License photo credit: Wade From Oklahoma

Or nous avons dénombré plus de mains qu’il en a, puisqu’on a dénombré toutes les permutations possible des 5 cartes.
or il y a 5!=120 permutations dans un ensemble à 5 éléments.

La réponse au problème est donc
52x51x50x49x48/120=2598960Il y a exactement 2 598 960 mains au poker.
(On peut retenir, ça impressionne toujours en société qu’il y a environ 2,6 millions de mains au poker et que la probabilité d’avoir le plus gros jeu, soit la quinte flush royale à pique servie, est d’environ une chance sur 2,6 millions. Nous reparlerons de probabilité plus tard ! )

Qu’avons nous, mathématiquement, calculer ?

Combinaison, une définition simple :

On appelle combinaison de p élément d’un ensemble à n éléments une partie de cet ensemble ayant p éléments.

On note C(n,p) le nombre de ces combinaisons et on a:

cnp

Le script Python, avec la fonction cnp(n,p) qui permet de calculer le nombres de combinaisons :

def fact (n):« retourne la factorielle de n »if n==0  :return 1else:

return n*fact(n-1) #fonction récursive

def cnp (n,p):

« retourne le nombre de combinaisons, p parmis n »

if p>n:

return « erreur »

exit

result=1

# Pour éviter de gérer de trop gros nombres

# On utilises une boucle.

for i in range(n,n-p,-1):

result *= i

return result/fact(p)

et un screenshot de l’IDLE:

cnp2

Le Poker pour les nuls
Apprenez les principes fondamentaux du jeu de poker.

Small Blind (Scoopeo)

Lire aussi:

Aventure sur l’échiquier

Il y a plus d’aventure sur un échiquier que sur toutes les mers du monde

écrivait Mac Orlan.

Si une preuve était nécessaire à cette assertion (Tous les joueurs d’Echecs en sont déjà convaincus) l’étude suivante pourrait en faire partie :

diag

Dans cette position, les blancs jouent et gagnent.

Mais non! ils ne feront jamais de Dame!!!

La solution (mais en avez-vous vraiment besoin ?):

site2wouf.fr

L'héritage de Philidor
L’héritage de Philidor


Lire aussi:

Python, généalogie et SOSA

Je ne suis pas passionné de généalogie, mais je m’intéresse à la façon de numéroter ses ancêtres (Le côté mathématique de la chose).

Ainsi à la trentième génération vous avez plus de cinq cents millions d’aïeuls !

Les généalogistes utilisent pour leur associer un code différents à chacun, la méthode SOSA :

La personne dont on dresse l’ascendance porte le numéro 1.
Son père porte le numéro 2 et sa mère le numéro 3.
Ainsi on associe toujours au père le double du code de l’enfant, et à la mère le code du père augmenté de 1.

Diagramme1

Ainsi à part la première personne qui peut-être un homme ou une femme, chaque individu de code pair est un homme et chaque individu de code impair est une femme.

Le problème c’est qu’un nombre est peu parlant. Qui est l’ancêtre numéro 54 ?

J’ai développé une petite application en Python qui nous en dit plus :

sosa

Cette application vous permet de trouver également le code SOSA du père de la mère du grand-père d’un individu :

sosa2

Ce programme vous intéresse ? Voici le code :


# -*- coding: UTF-8 -*-
digit=('m','p','M','P')
nombre="0123456789"

def retourne (chaine):
 "retourne une chaine de caractère"
 envers=""
 for i in chaine:
 envers =i + envers
 return envers

def sosa(chaine):
 "Donne le sosa, d'une chaine (exemple PMP)"
 valeur=1
 generation=0
 for lettre in retourne(chaine):
 if lettre in ('p','P'):
 valeur=valeur*2
 generation +=1
 elif lettre in ('m','M'):
 generation +=1
 valeur=valeur*2+1
 return valeur, generation

def chaine(sosa):
 "Donne le chaine correspondant au code sosa"
 chaine=""
 generation=0
 while sosa<>1:
 if sosa%2 ==0 :
 chaine += "P"
 generation += 1
 else :
 chaine +=  "M"
 generation +=1
 sosa=sosa/2
 if chaine<>"":
 if chaine[0] in ('p','P'):
 francais=u" Le père "

 elif chaine[0] in ('m','M'):
 francais=u" La mère "

 for i in chaine[1:]:
 if i in ('p','P') : francais = francais + u"du père "
 elif i in ("m",'M') : francais = francais + u"de la mère "
 francais += u"de l'individu"
 else:
 francais=u"L'individu lui même"

 return francais, chaine, generation

a=""
while a<>"q" :
 print u" Entrez au clavier un code SOSA"
 print u" une chaîne de caractère de la forme PPM,"
 print u" pour le père du père de la mère par exemple... )"
 print u"(Q pour quitter)"
 a= raw_input("------------------------> ")
 if a not in ("q","Q",""):
 est_nombre=True
 est_digit=True
 for i in a:
 if i not in digit : est_digit=False
 if i not in nombre :est_nombre=False
 if est_digit :
 x,y=sosa(a)
 print "Code SOSA : " ,x
 print 20*"_"
 print u"Génération : ",y
 print 50*"_"
 if est_nombre and long(a)>0:
 x,y,z= chaine(long(a))
 print u"Décodage SOSA : "
 print x," (",y,")"
 print 20*"_"
 print
 print u"Génération :",z
 print 50*"_"
 print 3*"\n"

Lire aussi:

Sculpture sur sable : Safari au Touquet

IMG_1576

Cet été, Le Touquet Paris-Plage est à nouveau le théâtre d’une magnifique exposition :
Du 5 avril au 31 août 2008 vous pourrez découvrir sur les traces des Massaï, l’Afrique centrale, en sculpture de sable.

J’en reviens, réveur et encore ébloui du talent de ces artistes. Je vous offre ce reportage photographique:

free music

Lire en musique ?


Ces images se marient bien avec Deep Forest (Marta song) Non?

Un ‘tit clic ? (Scoopeo)

Lire aussi:

Free, obéir ou mourir .

Le site de Wouf (http://laurent.petitprez.free.fr ) sera inaccessible aujourd’hui.

En guise d’avertissement, Free l’a désactivé, et la réactivation prend 24 heures…

Je suis désolé pour les élèves francophones qui viennent y chercher un peu d’aide en Mathématiques. Je n’y peux rien…

La cause ?

Une table Mysql est spammée, (Sur le forum, on peut poster sans être inscrit, et des robots peu scrupuleux laisse des traces illicites, malgré les précautions anti-spam que j’ai prise)

Il faut que je trouve une solution, sinon ce site sera fermé.

Le spam est criminel, il m’oblige à être présent sur le forum, pour effacer les billets pourris et il fait planer sur ma tête la menace d’une fermeture de site…

J’envisage de déporter le forum, vers un hébergeur payant…

Tout ça à cause de ses enfoirés de spammeurs…

Lire aussi:

Python, exemple d’utilisation de yield

Les statistiques de fréquentation d’un blog peuvent être surprenantes. Ainsi vous êtes nombreux à arriver ici en faisant une recherche sur la fonction yield de Python.

Pour la comprendre, il faut d’abord savoir ce qu’est un générateur. Pour simplifier un générateur est une fonction qui retourne successivement plusieurs valeurs. Non pas en utilisant le mot réservé RETURN, mais en utilisant YIELD.

L’ambiguïté qu’il faut signaler est que dans le langage courant, on confond souvent la fonction et l’objet généré.

Dans l’exemple suivant, la fonction CouleurIterateur (), qui émule un feu tricolore, renvoie à chaque fois que l’on rencontre YIELD, successivement :
Vert, Orange et Rouge

# Exemple d’utilisation de yield

# Wouf 2008

def CouleurIterateur ():

    while 1: #Une boucle infinie

        for i in (‘Vert’,‘Orange’,‘Rouge’):

            yield i

            # A chaque instruction yield

            # rencontrée l’execution

            # s’arrête, la fonction

            # renvoie i.

            # L’execution reprendra

            # Au prochain next()

couleur=CouleurIterateur()

for i in range(10) :

    print couleur.next()

    

    

Dans le corps du programme l’instruction couleur=CouleurIterateur() crée un objet itérateur qui bénéficie, et c’est là l’intérêt de YIELD de la popriété next():

La première fois que le programme rencontre couleur.next(), il va exécuter la fonction CouleurIterateur () jusqu’à rencontrer YIELD, il va à ce moment là geler l’exécution de la fonction et retourner la valeur de i (Soit : Vert)

La seconde fois, et les fois suivante où le programme rencontrera couleur.next() (Il y a dix itérations dans cet exemple) , c’est pareil, il exécutera le code jusqu’à YIELD, gèlera l’exécution, et renverra la valeur de i.

yield

Lire aussi: