vendredi 27 février 2015

scrabble : simplifier la recherche des mots

Bon,

après l'article introductif visant à expliquer comment programmer un scrabble : http://sylvainspeh.blogspot.fr/2013/10/au-scrabble-citoyens.html
Voyons maintenant comment il est possible de se simplifier la vie en ne tenant pas compte des quelques 8 types de placements énoncés dans l'article précédent.

Règle unique de fonctionnement

Rechercher tous les mots possibles à mettre dans une rangée à partir d'une configuration donnée ( ligne ou colonne )
Règle unique, c'est vite dit : cela ne tient pas compte du 1° tour, ni de quelques particularités de rattachements que nous allons aborder en fin d'article.

Premier tour


Les traits en orange indiquent les recherches à faire à partir des pions déjà placés. Trouver tous les mots permettant de compléter une rangée non vide. Soit à compléter 7 rangées comportant les lettres ou les lots déjà placés dans leur position. Typiquement, avec un "S", "ombras" devient "sombras" par exemple, et "o" devient "non".

Deuxième tour

Vu les pions tirés, il a été possible de faire "banquai" à partir du "B" de la 5° colonne.
Et ainsi de suite jusqu'à épuisement des pions.

Fin de partie

La grille finale indique les mots posés, nous remarquons le nombre important de lettres utilisées dans les mêmes mots à l'horizontale et à la verticale.
Le temps moyen d'un coup est de moins de 3 minutes dans un fonctionnement monothreadé, où seul le coup donnant le dernier score maximal calculé est gardé.

Un peu plus de détail dans le fonctionnement


Le mot "rotation" de la première ligne peut donner lieu à 4 nouveaux mots par complétion.
Les mots "cedex" et "solings" ne donnent pas lieu à complétion.
53019 mots nouveaux peuvent être posés à partir de la rangée ".......E..ETE..", comme par exemple "...BETE..ETE.." ou ".......E.BETE.." voire ".......ENTETE..".
Les 4 possibilités basées sur "rotation" sont issues du parcours intégral du dictionnaire du scrabble, qui fournit 8 nouveaux mots basés sur "rotation", mais dont 4 seulement tiennent sur la grille, du fait de lettres qui dépassent de la grille.

Amélioration possible

Le mécanisme actuel ne tient pas compte des mots posables en appui sur une ou plusieurs lettres dans dans l'autre direction comme le mot "SU" posé en vertical à partir du "S" posé devant "OMBRAS".

 Ce qui n'empêche pas de déjà faire des parties à plus de 1000 points.


vendredi 6 février 2015

l'important, c'est la taille ... surtout si ça en vaut le coût ;)

Afin d'occuper ses loisirs, pourquoi ne pas un peu maquetter ?

Certes, je n'ai pas la dextérité et les outils qui vont bien pour faire des chefs d'oeuvre, alors :
  • choisissons un fournisseur de maquettes
  • choisissons les maquettes à faire
  • retrouvons la taille des objets à construire

Les critères retenus sont :

  • pas trop cher, évitons Tamiya et autres marques un peu chères, Italeri et Revell offrent un bon rapport quantités prix, pour des maquettes d'avions au 1/72, 1/48 et 1/32
  • quelle est la taille de ces objets ? La page wikipedia http://fr.wikipedia.org/wiki/Cat%C3%A9gorie:Avion_militaire_du_XXIe_si%C3%A8cle est un bon point d'entrée pour retrouver bon nombres d'avions, les données étant assez faciles à récupérer dans les pages liées.
  • graphons, jFreeChart permettra de faire des visualisations rapides.
  • Et pour acheter, Italeri a un site en ligne facilement utilisable pour récupérer des informations. Port gratuit à partir de 50 €, essayons de trouver les produits les plus intéressant à moindre prix.

La taille des avions

Les pages Wikipedia aspirées ont permis de définir noms et dimensions pour bon nombre d'avions.
On peut se rendre compte facilement que les tailles des Mirage III et Rafale sont comparables.

Le prix chez Italeri

 L'aspiration du site d'Italeri permet de récupérer les articles et leurs prix. Seuls les avions intéressant ont fait l'objet d'un traitement particulier pour rattacher les caractéristiques Wikipedia aux maquettes.

Taille en rapport à une feuille A4

Il faut maintenant voir quels sont les avions les plus grands aux échelles standard ( 1/72, 1/48 et 1/32 ). Et appliquer le gabarit de la page projetée en rapport à la taille des avions.

Comparatifs prix dimension

Exemple chez Revell au 1/32. La plus grande dimension d'un Hawker Hunter ( 14m de long pour 10m de large ) prouve que la maquette fait pas loin de 30 cm de long. ( 30 cm * 32 ~ 9.6m de large ).

Achats par prix pondérés

Les références ont été rentrées dans une base de données donnant une pondération ( un intérêt ) aux différents produits. Pour 50 €, on peut avoir une peinture ( poids 1 ) et 2 maquettes au 1/48 de pondération 100, pour un poids total de 201. Pour 1€ de plus, le Mirage F1C remplace la peinture et le Mig 23.
Ces fonctionnements sont tout à fait transposables pour d'autres activités comme l'optimisation des places de cinéma pour le printemps du cinéma, par exemple, couplé à de l'analyse multi-critères.

mardi 10 décembre 2013

ammonites : chronologie et taux de croissances

Résumé


Ammonites liasiques : temps géologiques correspondant et calcul de taux de croissance de Pleuroceras spinatum et Harpoceras falciferum
  • Cheminement de l'esprit
  • Carte géologique retrouvée
  • Ammonites retrouvées
  • Temps géologiques
  • Quid de wikipedia ?
  • Marqueur stratigraphique
  • Taxonomie de quelques ammonites
  • Echelle des temps géologiques
  • Modélisation de quelques ammonites

Carte géologiqe

Tout a commencé ce week-end d'hiver où j'ai retrouvé une vieille et poussièreuse carte géologique Thionville-Waldwisse et sa notice explicative ( http://ficheinfoterre.brgm.fr/Notices/0114N.pdf ) et où plein de vieux besoins ou de vieilles envies sont maintenant devenues possibles du fait de la technologie.
Ah, chère collection de fossiles, surtout des ammonites du Carixien et de l'Hettangien ( http://fr.wikipedia.org/wiki/Pliensbachien ), après tout, c'est un peu normal, Thionville est à côté d'Hettange-Grande, lieu de référence du niveau, mais je m'avance un peu sur les conclusions stratigraphiques.

Temps géologiques

Mais de quand datent tous ces fossiles issus de strates notées I3a-2 à I5d ? Et à quoi correspondent ces strates ?
On peut lire : l5 : Carixien l3-4 : Sinémurien (calcaires en dalles, calcaires à silex) l1-2 : Hettangien (roches carbonatées vacuolaires : dolomies, marnes et calcaires).
Les fossiles datent donc du jurassique inférieur ( lias ), plus particulièrement du carixien.

Wikipedia: du choix dans les dates

Bon, mais qu'en est-il des dates ?
Vu ici : http://fr.wikipedia.org/wiki/Pliensbachien le Plienbaschien dura de -190 à -182 millions d'années
Et pour cette période, les écarts ne sont que d'un seul million d'années.
Un petit tour sur tous les étages géologiques vous confortera qu'il y a un delta de quelques millions ( d'années ) entre les versions anglaises et françaises de Wikipedia, et ce n'est pas pour une question de taux de change. Espérons que les couleurs des différents ages sont bien ceux reconnus par les conventions internationales, elles sont reprises plus loin.

Ammonite : marqueur stratigraphique

Oui, oui, c'est bien connu, les ammonites sont de bons marqueurs stratigraphiques, mais qu'en est-il exactement ici ? Que dit la notice associée à la carte géologique ?
Le I, premier caractère des strates veut dire Lias ( jurassique inférieur ), les niveaux en 5 sont récents, ceux en 3 voire 2, plus anciens.
Du plus récent au plus ancien :
I5d ( Toarcien supérieur )
  • Grammoceras fallaciatum
  • Harpoceras insigne et dispansum
  • Lytoceras jurense
I5c
  • Harpoceras striatulum
  • Lytoceras jurense ( encore )
  • Hildoceras bifrons ( une grande classique )
  • Coeloceras crassum
I5b
  • Hildoceras bifrons ( encore ) et boreale
  • Coeloceras commune
I5a ( toarcien inférieur )
  • Harpoceras falciferum et serpentinum ( voir modélisation en fin d'article )
  • Coeloceras commune ( encore )
I4c ( domérien )
  • Pleuroceras spinatum ( voir modélisation en fin d'article )
I4b ( domérien )
  • Amaltheus margaritatus ( un grande classique )
  • Lytoceras fimbriatum
I4-3 ( veut dire que la strate contient du I4 et du I3 )
  • Echioceras raricostatum
  • Promicroceras planicosta
  • Lytoceras fimbriatum
  • Prodactylioceras davoei
  • Nautilus intermedius ( celui-là a survécu jusqu'à nos jours )
  • Uptonia jamesoni
  • Oxynoticeras oxynatum
I3b
I3a-2 ( de I3a à I2 : Sinémurien + Héttangien supérieur, premier étage du jurassique )
  • Arietites bisulcatus ( plutôt pauvre en diversification d'ammonites pour du I3a-2 … )

Bref,
Cherchons des informations sur les étages ,niveaux et ammonites :
Si les informations sont fiables, c'est vraiment du bonheur.
Sur le dernier lien, on lit que Harpoceras falciferum se situe dans la zone Serpentinum du toarcien moyen. La notice indique I5a et wikipedia « l5 : Carixien » ( donc Plienbaschien ) c'est pas gagné. Cependant, Hildoceras est bien du Toarcien moyen, c'est bon. La stratification est peut être imprécise à Thionville, mais c'est pas sûr du tout ...

Mais combien de temps ont vécu les Prodactylioceras ( voir la couche I4-3 ci-avant ) ?
Un bout de réponse ici : http://fossilworks.org/bridge.pl?a=taxonInfo&taxon_no=15454# soit de 186.7 à 184.1 Millions d'années.
Cela ne colle pas avec cette échelle géologique pour wikipedia FR ( Plienbaschien « moyen » ) et http://en.wikipedia.org/wiki/Jurassic ( bonne grosse partie du Plienbaschien )
De même, les ages géologiques différent tous. Après une recherche méticuleuse, afin de retrouver les ages effectifs de bon nombre d'ammonites, le site fossilworks et wikipedia GB sont coordonnées ensemble. Ce qui es quelque peu gênant quand on a un référentiel français.
Qu'à cela ne tienne, faisons avec.

Echelle des temps géologiques

Après avoir récupéré les ages géologiques ( temps issus de wikipedia GB et couleurs internationales associées ) et quelques fossiles, un petit programme java va permettre de construire une échelle à partir de quelques données dont celles-ci :
Le groupe des scaphites a été indiqué ici comme référence au groupe qui a eu une grande extension temporelle, du Trias au Crétacé.

Taxonomie de ces quelques genres, espèces ou familles

Par extraction d'informations issues de la page http://en.wikipedia.org/wiki/List_of_ammonites et de ses genres, les quelques ammonites ( hors Acanthoceras, je ne sais pas encore pourquoi, et d'autres n'ayant pas de pages dans Wikipedia ) sont affichées ci-après à partir du grapheur "dot" de Graphviz ( http://www.graphviz.org/ ) :
La représentation automatique vaut ce qu'elle vaut : Echioceras fait partie de la famille des Echioceratidae et cela n'est pas indiqué sur la page http://en.wikipedia.org/wiki/Echioceras ...
Si vous trouvez une classification complète, merci de me contacter ;)

Temps géologiques en java :

Les bornes sont lié à une double incertitude, celle de la référence de la langues ( wikipedia anglo-saxon ) et celle des deltas associés aux incertitudes géologiques. Pour information, les ages et les zones ne sont pas les mêmes aux Amériques et en Europe depuis la séparation de la Pangée vu qu'ils ont connu une spécialisation de la faune différentielle. La mondialisation des phénomènes géologique n'est pas bonne pour ne donner qu'un seul référentiel.
Moment mToarcien = new Moment( Moment.etage , "Toarcien" , mAalenien.ageMaxi , 183 , new Color(116,209,240)) ;
Moment mPlienbaschien = new Moment( Moment.etage , "Plienbaschien" , mToarcien.ageMaxi , 189.6f , new Color(60,201,239)) ;
Moment mDomerien = new Moment( Moment.sous_etage , "Domerien" , mToarcien.ageMaxi , 185.7f ) ;
Moment mCarixien = new Moment( Moment.sous_etage , "Carixien" , mDomerien.ageMaxi , mPlienbaschien.ageMaxi ) ;
Moment mSinemurien = new Moment( Moment.etage , "Sinemurien" , mPlienbaschien.ageMaxi , 196.5f , new Color(7,193,237)) ;
Moment mHettangien = new Moment( Moment.etage , "Hettangien" , mSinemurien.ageMaxi , 201.3f , new Color(0,187,235)) ;
Moment mJurassiqueInf = new Moment( Moment.serie , "JurassiqueInf" , mToarcien.ageMini , mHettangien.ageMaxi , new Color(0,183,234) ) ;
Moment mJurassique = new Moment( Moment.periode , "Jurassique" , mTithonian.ageMini , mHettangien.ageMaxi , new Color(0,187,231) ) ;

Ammonites :

On notera par exemple que les Pleuroceras n'auront vécu qu'au Plienbaschien
Famille fAcanthoceras = new Famille( "Acanthoceras" , mTuronian.ageMini , mAlbian.ageMaxi ) ;
//Aegoceras 186.7 to 185.7 Ma
Famille fAlsatites = new Famille( "Alsatites" , mHettangien.ageMini , mHettangien.ageMaxi ) ;
Famille fAmaltheus = new Famille( "Amaltheus" , mDomerien.ageMini , mDomerien.ageMaxi ) ;
//aegoceras sinemurien.0
Famille fArietites = new Famille( "Arietites" , mSinemurien.ageMini , mSinemurien.ageMaxi ) ;
// Arnioceras 205.6 to 183.0 Ma
// Ceratites 251.3 to 221.5 Ma
Famille fCoeloceras = new Famille( "Coeloceras" , mPlienbaschien.ageMini , mSinemurien.ageMaxi ) ;
Famille fDactylioceras = new Famille( "Dactylioceras" , mToarcien.ageMini , mPlienbaschien.ageMaxi ) ;
Famille fEchioceras = new Famille( "Echioceras" , mSinemurien.ageMini , mSinemurien.ageMaxi ) ;
// Goniatites 409.1 to 205.6 Ma
Famille fGrammoceras = new Famille( "Grammoceras" , mAalenien.ageMini , mToarcien.ageMaxi ) ;
Famille fGraphoceras = new Famille( "Graphoceras" , mBajocian.ageMini , mAalenien.ageMaxi ) ;
// Haploceras 155.7 to 130.0 Ma
Famille fHarpoceras = new Famille( "Harpoceras" , mTithonian.ageMini , mToarcien.ageMaxi ) ;
Famille fHildoceras = new Famille( "Hildoceras" , mToarcien.ageMini , mToarcien.ageMaxi ) ;
//Hoplites 155.7 to 99.7 Ma
//lytoceras 196.5 to 99.7 Ma
Famille fMacroscaphites = new Famille( "Macroscaphites" , mAptian.ageMini , mBarremian.ageMaxi ) ;
Famille fOxynaticeras = new Famille( "Oxynaticeras" , mPlienbaschien.ageMini , mSinemurien.ageMaxi ) ;
Famille fParkinsonia = new Famille( "Parkinsonia" , mCallovian.ageMini , mBajocian.ageMaxi ) ;
Famille fPerisphinctes = new Famille( "Perisphinctes" , mTithonian.ageMini , mBathonian.ageMaxi ) ;
// Phylloceras 235.0 to 66.043 Ma
Famille fPleuroceras = new Famille( "Pleuroceras" , mPlienbaschien.ageMini , mPlienbaschien.ageMaxi ) ;
Famille fProdactylioceras = new Famille( "Prodactylioceras" , mPlienbaschien.ageMini , mPlienbaschien.ageMaxi ) ;
Famille fPromicroceras = new Famille( "Promicroceras" , mPlienbaschien.ageMini , mSinemurien.ageMaxi ) ;
Famille fScaphites = new Famille( "Scaphites" , mMaastrichtian.ageMini , mCarnian.ageMaxi ) ;
Famille fSchlotheimia = new Famille( "Schlotheimia" , mSinemurien.ageMini , mHettangien.ageMaxi ) ;
Famille fUptonia = new Famille( "Uptonia" , mPlienbaschien.ageMini , mSinemurien.ageMaxi ) ;

La carte géologique adaptée à ces ammonites devient donc :

Modélisation de quelques ammonites

Vu sur le net, plusieurs familles d'Ammonites ont une structure « mathématique » en spirale logarithmique ( http://fr.wikipedia.org/wiki/Spirale_logarithmique , http://rouxjeanbernard.ch/AM/html/amch65.html , http://www.spirasolaris.ca/sbb4d2c.html ) ou basées sur d'autres modèles.
Sur le très intéressant site ammonites.fr, cette page est même bien ludique: http://www.ammonites.fr/Articles/draw.htm
Certains sites donnent quelques informations statistiques sur les proportions et taux de croissance des ammonites comme par exemple http://paleopolis.rediris.es/cg/CG2008_M04/ et http://www.ville-ge.ch/mhng/paleo/paleo-pdf/27-1/pal-27-1-14.pdf
Et pour voir la variabilité morphologique des ammonites :http://members.home.nl/paflo/keysheets/Determination%20key%20ammonites.pdf
Après une étude de la page http://www.spirasolaris.ca/sbb4d2c.html ( plusieurs pages web intéressantes ), essayons de déterminer le taux de croissance ( rapport entre 2 tours successifs ) concernant Pleuroceras spinatum.
La description de la bête ici : http://www.ammonites.fr/Fiches/0427.htm

Procédé

  • Récupération d'une photo ( la plus en face possible, ici http://www.fossilmuseum.net/Fossil_Galleries/Ammonites/Pleuroceras/Pleuroceras-orig.jpg )
  • Trouver le centre du fossile ( naissance de l'animal )
  • Trouver un repère cohérent sur 2 spires consécutives
  • Calculer le taux de croissance par tour ( celui-ci ne caractérise pas forcément la rapidité de croissance de l'animal )
  • reste à automatiser le procédé pour quelques autres ammonites ... ou regarder ce qui existe déjà sur quelques sites.
  • Avec un peu d'astuce, on peut ainsi retrouver les coefficients pour des ammonites quelque peu involutes.
Ce qui donne en image : 
  • L'image originelle
  • avec un repère ( calcul sur l'axe Ox )
  • test avec différents taux de croissances et coefficients homothétiques ( agrandissement ) en jaune
  • la formule théorique appliquée ( en rouge )

Conclusions

  • Le taux de croissance entre 2 spires concentriques est très voisin de 2.
  • Les puissances de phi donnant phi^ratio = 2 donnent un ratio voisin 3/2,
  • Le taux de croissance de cette Pleuroceras spinatum est donc de k=phi^(3/2), ce qui est somme toute tout à fait possible.

Dans les valeurs de k voisines de 2 :

5/4 1.82
9/7 1.86
4/3 1.9
7/5 1.96
10/7 1.99
3/2 2.06
8/5 2.16
Le ratio 3/2 est vraiment le plus simple, plus simple que 10/7 voire même 7/5, il lui sera préféré.

Logiciel dédié pour Pleuroceras spinatum et Harpoceras falciferum

Afin de calculer plus facilement les coefficients, un petit logiciel à façon s'impose : 
Celui-ci, à partir de la localisation de 3 spires consécutives, calcule une quatrième ( afin de vérifier les coefficients et affiche la spirale en fonction à partir du centre localisé.
Pour l'ergonomie, quelques curseurs :
  • bleu clair et foncé : pour trouver le point de naissance de l'ammonite, l'origine de la spirale donc.
  • jaune, orange et rouge : 3 spires consécutives, de la plus externe vers la plus interne
  • vert : deux choses
  1. une quatrième spire interne calculée à partir des 3 autres ( il y a moins d'incertitudes de calcul en se rapprochant du centre )
  2. la spirale calculée à partir du coefficient calculé, avec un curseur pour gérer un coefficient d'enroulement.
Les résultats sont sans appel : les mathématiques se retrouvent bien dans la nature
Pleuroceras spinatum ( k ~ phi^(3/2) )
Harpoceras falciferum ( k ~ phi^(5/6) )
Concernant Lytoceras juilleti, le taux est proche de k ~ phi^2

Plus d'informations

Et pour les germanophones ( avec des genres du Jura suisse )


ammonites : stratigraphie et taux de croissance

Résumé

Ammonites liasiques : temps géologiques correspondant et calcul de taux de croissance de Pleuroceras spinatum

Cheminement des faits :

  • Carte géologique retrouvée
  • Ammonites retrouvées
  • Temps géologiques : variabilité de durée des genres
  • Quid de wikipedia ? de l'ivraie et du bon grain
  • Marqueur stratigraphique : confirmé ( depuis longtemps )
  • Echelle des temps géologiques made pour l'occasion
  • Modélisation de quelques ammonites, enfin, une ici : Pleuroceras spinatum
Tout a commencé ce week-end où j'ai retrouvé une vieille carte géologique Thionville-Waldwisse et sa notice explicative ( http://ficheinfoterre.brgm.fr/Notices/0114N.pdf ).
Ah, chère collection de fossiles, surtout des ammonites du Plienbaschien, Sinémurien et de l'Hettangien ( http://fr.wikipedia.org/wiki/Pliensbachien ), après tout, c'est un peu normal pour Hettange, Thionville est à côté d'Hetange-Grande, lieu de référence du niveau, mais je m'avance un peu sur les conclusions.

Temps géologiques

Mais de quand datent tous ces fossiles issus de strates notées I3a-2 à I5d ? Et à quoi correspondent ces strates ?
On peut lire : l5 : Carixien l3-4 : Sinémurien (calcaires en dalles, calcaires à silex) l1-2 : Hettangien (roches carbonatées vacuolaires : dolomies, marnes et calcaires)
Quid de wikipedia ?
Bon, mais qu'en est-il des dates ?
Vu ici : http://fr.wikipedia.org/wiki/Pliensbachien le Plienbaschien dura de -190 à -182 millions d'années
Un petit tour sur tous les étages géologiques vous confortera qu'il y a un delta de quelques millions ( d'années ) entre les versions anglaises et françaises de Wikipedia, et ce n'est pas pour une question de taux de change.

Marqueur stratigraphique

Oui, oui, les ammonites sont de bons marqueurs stratigraphiques, mais qu'en est-il exactement ? Que dit la notice associée à la carte géologique ?
Le I, premier caractère des strates veut dire Lias ( jurassique inférieur ), les niveaux en 5 sont récents, ceux en 3 voire 2, plus anciens.
Du plus récent au plus ancien :

I5d

  • Grammoceras fallaciatum
  • Harpoceras insigne et dispansum
  • Lytoceras jurense

I5c

  • Harpoceras striatulum
  • Lytoceras jurense ( encore )
  • Hildoceras bifrons ( une grande classique )
  • Coeloceras crassum

I5b

  • Hildoceras bifrons ( encore ) et boreale
  • Coeloceras commune

I5a

  • Harpoceras falcifarum et serpentinum
  • Coeloceras commune ( encore )

I4c

  • Pleuroceras spinatum

I4b

  • Amaltheus margaritatus ( un grande classique )
  • Lytoceras fimbriatum

I4-3 ( veut dire que la strate contient du I4 et du I3 )

  • Echioceras raricostatum
  • Promicroceras planicosta
  • Lytoceras fimbriatum
  • Prodactylioceras davoei
  • Nautilus intermedius ( celui-là a survécu jusqu'à nos jours )
  • Uptonia jamesoni
  • Oxynaticeras oxynatum

I3b

  • Aegoceras dudressieri

I3a-2 ( de I3a à I2 : Sinémurien + Héttangien )

  • Arietites bisulcatus ( plutôt pauvre en diversification d'ammonites pour I3a-2 … )

Bref,
Cherchons des informations sur les étages ,niveaux et ammonites :
Si les informations sont fiables, c'est vraiment du bonheur.
Sur le dernier lien, on lit que Harpoceras falcifarum se situe dans la zone Serpentinum du toarcien moyen. La notice indique I5a et wikipedia « l5 : Carixien » ( donc Plienbaschien ) c'est pas gagné. Cependant, Hildoceras est bien du Toarcien moyen, c'est bon. La stratification est peut être imprécise à Thionville, mais c'est pas sûr du tout ...

Mais combien de temps ont vécu les Prodactylioceras ( voir I4-3 ) ?
Un bout de réponse ici : http://fossilworks.org/bridge.pl?a=taxonInfo&taxon_no=15454# soit de 186.7 à 184.1 Millions d'années.
Cela ne colle pas avec cette échelle géologique pour wikipedia FR ( Plienbaschien « moyen » ) et http://en.wikipedia.org/wiki/Jurassic ( bonne grosse partie du Plienbaschien )
De même, les ages géologiques différent tous. Après une recherche méticuleuse, afin de retrouver les ages effectifs de bon nombre d'ammonites, le site fossilworks et wikipedia GB sont coordonnées ensemble. Ce qui es quelque peu gênant quand on a un référentiel français.
Qu'à cela ne tienne, faisons avec.

Echelle des temps géologiques

Après avoir récupéré les ages géologiques ( temps GB et couleurs internationales associées ) et quelques fossiles, un petit programme java va permettre de construire une échelle à partir de quelques données dont celles-ci :

Temps géologiques :
Les bornes sont dues à une double incertitude, celle de la langue ( fr ou gb ) et celle des deltas associés aux incertitudes géologiques, Pour information, les ages et les zones ne sont pas les mêmes aux amériques et en Europe depuis la séparation de la Pangée vu qu'ils ont connu une spécialisation de la faune différentielle.
Moment mToarcien = new Moment( Moment.etage , "Toarcien" , mAalenien.ageMaxi , 183 , new Color(116,209,240)) ;
Moment mPlienbaschien = new Moment( Moment.etage , "Plienbaschien" , mToarcien.ageMaxi , 189.6f , new Color(60,201,239)) ;
Moment mDomerien = new Moment( Moment.sous_etage , "Domerien" , mToarcien.ageMaxi , 185.7f ) ;
Moment mCarixien = new Moment( Moment.sous_etage , "Carixien" , mDomerien.ageMaxi , mPlienbaschien.ageMaxi ) ;
Moment mSinemurien = new Moment( Moment.etage , "Sinemurien" , mPlienbaschien.ageMaxi , 196.5f , new Color(7,193,237)) ;
Moment mHettangien = new Moment( Moment.etage , "Hettangien" , mSinemurien.ageMaxi , 201.3f , new Color(0,187,235)) ;
Moment mJurassiqueInf = new Moment( Moment.serie , "JurassiqueInf" , mToarcien.ageMini , mHettangien.ageMaxi , new Color(0,183,234) ) ;
Moment mJurassique = new Moment( Moment.periode , "Jurassique" , mTithonian.ageMini , mHettangien.ageMaxi , new Color(0,187,231) ) ;

Ammonites :
On notera par exemple que les Pleuroceras n'auront vécu qu'au Plienbaschien
Famille fAcanthoceras = new Famille( "Acanthoceras" , mTuronian.ageMini , mAlbian.ageMaxi ) ;
//Aegoceras 186.7 to 185.7 Ma
Famille fAlsatites = new Famille( "Alsatites" , mHettangien.ageMini , mHettangien.ageMaxi ) ;
Famille fAmaltheus = new Famille( "Amaltheus" , mDomerien.ageMini , mDomerien.ageMaxi ) ;
//aegoceras sinemurien.0
Famille fArietites = new Famille( "Arietites" , mSinemurien.ageMini , mSinemurien.ageMaxi ) ;
// Arnioceras 205.6 to 183.0 Ma
// Ceratites 251.3 to 221.5 Ma
Famille fCoeloceras = new Famille( "Coeloceras" , mPlienbaschien.ageMini , mSinemurien.ageMaxi ) ;
Famille fDactylioceras = new Famille( "Dactylioceras" , mToarcien.ageMini , mPlienbaschien.ageMaxi ) ;
Famille fEchioceras = new Famille( "Echioceras" , mSinemurien.ageMini , mSinemurien.ageMaxi ) ;
// Goniatites 409.1 to 205.6 Ma
Famille fGrammoceras = new Famille( "Grammoceras" , mAalenien.ageMini , mToarcien.ageMaxi ) ;
Famille fGraphoceras = new Famille( "Graphoceras" , mBajocian.ageMini , mAalenien.ageMaxi ) ;
// Haploceras 155.7 to 130.0 Ma
Famille fHarpoceras = new Famille( "Harpoceras" , mTithonian.ageMini , mToarcien.ageMaxi ) ;
Famille fHildoceras = new Famille( "Hildoceras" , mToarcien.ageMini , mToarcien.ageMaxi ) ;
//Hoplites 155.7 to 99.7 Ma
//lytoceras 196.5 to 99.7 Ma
Famille fMacroscaphites = new Famille( "Macroscaphites" , mAptian.ageMini , mBarremian.ageMaxi ) ;
Famille fOxynaticeras = new Famille( "Oxynaticeras" , mPlienbaschien.ageMini , mSinemurien.ageMaxi ) ;
Famille fParkinsonia = new Famille( "Parkinsonia" , mCallovian.ageMini , mBajocian.ageMaxi ) ;
Famille fPerisphinctes = new Famille( "Perisphinctes" , mTithonian.ageMini , mBathonian.ageMaxi ) ;
// Phylloceras 235.0 to 66.043 Ma
Famille fPleuroceras = new Famille( "Pleuroceras" , mPlienbaschien.ageMini , mPlienbaschien.ageMaxi ) ;
Famille fProdactylioceras = new Famille( "Prodactylioceras" , mPlienbaschien.ageMini , mPlienbaschien.ageMaxi ) ;
Famille fPromicroceras = new Famille( "Promicroceras" , mPlienbaschien.ageMini , mSinemurien.ageMaxi ) ;
Famille fScaphites = new Famille( "Scaphites" , mMaastrichtian.ageMini , mCarnian.ageMaxi ) ;
Famille fSchlotheimia = new Famille( "Schlotheimia" , mSinemurien.ageMini , mHettangien.ageMaxi ) ;
Famille fUptonia = new Famille( "Uptonia" , mPlienbaschien.ageMini , mSinemurien.ageMaxi ) ;

La carte géologique adaptée à ces ammonites devient donc :

Modélisation de quelques ammonites

Vu sur le net, plusieurs familles d'Ammonites ont une structure « mathématique » en spirale logarithmique ( http://fr.wikipedia.org/wiki/Spirale_logarithmique , http://rouxjeanbernard.ch/AM/html/amch65.html , http://www.spirasolaris.ca/sbb4d2c.html ) ou basées sur d'autres modèles.
Sur le très intéressant site ammonites.fr, cette page est caractéristique : http://www.ammonites.fr/Articles/draw.htm
Certains sites donnent quelques informations statistiques sur les proportions et taux de croissance des ammonites comme par exemple http://paleopolis.rediris.es/cg/CG2008_M04/ et http://www.ville-ge.ch/mhng/paleo/paleo-pdf/27-1/pal-27-1-14.pdf
Et pour voir la variabilité morphologique des ammonites :http://members.home.nl/paflo/keysheets/Determination%20key%20ammonites.pdf
Après une étude de la page http://www.spirasolaris.ca/sbb4d2c.html,
Essayons de déterminer le taux de croissance ( rapport entre 2 tours successifs ) concernant Pleuroceras spinatum.

Procédé

avec repère
 avec calage de divers coefficients

calage final

Conclusions

  • Le taux de croissance entre 2 spires concentriques est très voisin de 2.
  • Les puissances de phi donnant phi^ratio = 2 donnent un ratio voisin 3/2,
  • Le taux de croissance de cette Pleuroceras spinatum est donc de k=phi^(3/2).
Dans les valeurs de k voisines de 2 :
5/4 1.82
9/7 1.86
4/3 1.9
7/5 1.96
10/7 1.99
3/2 2.06
8/5 2.16
Le ratio 3/2 est vraiment le plus simple, plus simple que 10/7 voire même 7/5, il lui sera préféré.

Plus d'informations



jeudi 5 décembre 2013

petit à petit, les pions sont posés

Scrabble, la suite

Mazette ( 16 points ), le scrabble avance de temps en temps,
de quoi occuper les longues soirées d'hiver en famille ( entre nous soit dit : l'optimisation tue le plaisir du jeu, de la réunion et le temps ).
Le plaisir est dans la recherche donc, et ses oublis, pas l'automatisation, même si parfois le programme donne quelques surprises comme ces 4 scrabble d'affilé, pour un total de 5 pour cette partie de 982 points.


Quelques statistiques

  • 2 à 3 scrabble en moyenne par partie
  • 27 coups
  • 100 secondes pour les 20 premiers coups ( 5 s par coup donc )
  • moins de 140 secondes par partie

Reste à faire

  • choisir les pions à tirer
  • choisir le mot à poser
  • gérer les joker

lundi 28 octobre 2013

au Scrabble citoyens

Scrabblélipopette,

il fallait s'en douter. à force de faire des programmes pour jouer et/ou résoudre des problèmes d'Othello, Sudoku, compte et bon et mot le plus log, le Scrabble s'inscrit tout à fait dans cette continuité.
Mine de rien, il existe déjà pas mal d'adaptations de Scrabble pour ordinateurs, avec notamment des portages sur PlayStation et Android. Cela n'en fera qu'une de plus.

Et pourtant, le Scrabble, ce n'est pas Trivial ...

Un peu comme Othello, facile à jouer, difficile à maitriser.
Il faut :
  • disposer d'un dictionnaire ( ok, celui déjà utilisé regroupe plus de 360.000 mots )
  • avoir du temps ( ça tombe bien, tout comme pour les autres jeux, l'objectif est aussi de gagner du temps sur les parfois très longues et monotones parties. Il s'agit donc bien d'un investissement sur le futur)
  • un ordinateur un peu puissant ( à quand les jeux sur Raspberry ? )
  • savoir jouer avec les mots et marquer des points ( au propre comme au figuré ) et optimiser ses choix.

Le prototype : l'origine de tous les mots

L'objectif était de faire en 2 jours - bien remplis - un jeu capable de faire un minimum de choses essentielles, à savoir :
  • gérer des lettres, le modèle est là : http://fr.wikipedia.org/wiki/Lettres_du_Scrabble#Fran.C3.A7ais
  • créer des pions et les mélanger ( pour simplifier, les joker ne sont pas utilisés )
  • gérer une partie avec un seul joueur
  • avoir toujours 7 pions sur son chevalet, du moins jusqu'à la fin de partie
  • remettre ses pions dans le chevalet si pas de mots trouvés
  • pouvoir jouer 2 tours ( les cas 1 et cas 7 décrits ci-après )
  • ne pas faire sauter le compteur ( surveiller sa mémoire vive )
  • gérer les cases multiplicatrices des points et de mots
  • maitre mot : faire à chaque tour le maximum de points possibles
Il reste encore pas mal de travail, notamment afficher le déroulement de la partie et la comptabilisation, jouer à plusieurs, étendre  tous les cas possibles et étudier des coups à jouer. Ce genre de choses.

La schématisation du problème

Sur une feuille A4, cela aurait pu ressembler à ceci :

Le scrabblier après 2 tours

Le sac contient les 100 pions lettrés mélangés 100 fois.
BAGNE fait (3*2+1+2+1+1)*2 = 22 points au 1° tour
TAXOLS fait (1+1+10+1+1+1)*2 = 30 points au 2° tour, soit 52 points sur les 2 premiers tours.

Gestion de la mémoire

avant la barre bleue, la création des dictionnaires ( dont anagrammes ) en mémoire à partir d'un simple fichier texte. Une dizaine de secondes pour préparer les données.
après la barre bleue, les 2 coups joués et la copie d'écran. Les deux coups du début sont ( quasiment ) instantanés.

Sur l'image un bug répértorié, l'ordinateur a placé "QUE" au milieu parce que le "mot compte double" de la case du milieu n'a pas été annulé après avoir été utilisé.

les 7 plaies des glyphes, je les prends aux mots

Le scrabble, ce n'est pas trivial, parce qu'il y a pas mal de façons de rajouter un mot à un autre. Voici listés les 7 types de base, passons-les en revue.

Imageons la scène

Comment poser les mots "DE" ( ou "DES" ) en relation avec "UN" ? Les 7 cas sont indiqués sur fond bleu.
Pour le fun, quelques exemples de placement avec le mot "TROIS".

Type 1

Il s'agit du cas le plus simple,trouver à placer le mot faisant le plus de points. Valable uniquement pour le 1° tour.

Type 2

à partir du chevalet, compléter un mot existant ( par exemple UN + DES = DUNES ).

Type 3

Le nouveau mot est un mot à part entière et ne modifie pas le mot existant, parallèle à celui-ci, joint par une lettre formant un troisième nouveau mot de 2 lettres.

Type 4

Les cas général de la rencontre du 3° type. Avec recouvrements multiples.

Type 5

pendant du type 3, mais en orthogonalité

Type 6

Le contraire du type  5. Le mot précédent ne change pas, mais le nouveau mot n'existe pas sans lui.

Type 7

Les mots croisés, le 2° mot traversant le 1°

Type 8

le contraire du type 7, mais je n'en parlerai pas pour ne pas créer un 8° cas à traiter.

Généralisation du problème

Si le type 3 est un cas particulier du type 4, il faut bien voir que l'on a 2 fonctionnements radicalement différents, dont le 2° est bien plus difficile à gérer.

cas général 1

Le cas le plus simple, on cherche à poser sur le chevalet un mot complet ( cas 1, 2, 3 , 4 et 5 - et 8 - ). nous pouvons utiliser le dictionnaire de mots pour

cas général 2

des pions sont à placer pour créer un mot existant. Dans le pire des cas, le nouveau mot peut s'appuyer sur plusieurs mots posés séparés ( cas 6 et 7, et l'exemple complexe AVANT + AVANT + ESUIE = 2 * AVANT + ENSUITE )