Boardician

24 mars 2015

Boardician est un framework de jeux (board games, i.e. échiquier, grille de sudoku, damier, etc).  L’annonce du projet se trouve ici.

P.S. J’adore la photo, pour la simple raison je possède un échiquier identique!

Publicités

Smalltalk en vrac (10)

20 février 2015

Bon! Je rattrape (encore direz-vous!) le retard accumulé en raison de la St-Valentin et mon anniversaire!  Ce que je remarque encore, c’est le nombre effarant de nouvelles portant sur Pharo!  C’est à croire que VisualAge, VisualWorks, ObjectStudio, Smalltalk/X, GNU Smalltalk, Squeak et tous les autres sont disparus de la carte pour laisser toute la place à Pharo!  Ça bouillonne d’idées et de code dans l’univers de Monsieur Ducasse!

Smalltalk

Un intéressant article au sujet de l’importance d’avoir des versions de Smalltalk commerciales.

Smalltalk et la productivité.

L’annonce de Camp Smalltalk Ottawa 2015, en juin.

Text2 pour VW et OS : un aperçu et une vidéo.

ESUG 2015 en Italie : c’est le Call for Papers les amis!

Pharo

Les jeux sont de retour dans Pharo!

PharoDays 2015 : la liste de tous les vidéos.

Maîtriser et apprendre Spec : tout est ici!

Comment faire fonctionner Pharo sous Ubuntu 64-bit.

GSOC 2015 : Pharo y sera!  Appel à tous!

Calculer le profit du bijoutier avec GoldRush.

Présentation de Pharo à Prague le 25 février.

Amber

Philippe Back interviewe Herby sur Amber 0.14.

Seaside

Roassal dans votre application Seaside?  C’est maintenant possible grâce à RoassalSeaside.  Une vidéo le montrant ici.

Squeak

Comment démarrer Squeak sur le Raspberry Pi? Quelques trucs!

 

 

 


En préparation

17 décembre 2014

Je suis en train d’éplucher mes notes éparses et les brouillons d’articles qui traînent ici et là pour les finaliser un à un.  Voici donc un aperçu des sujets des billets qui s’en viennent…

Des astuces MySQL, la génération de données aléatoires réalistes (Lerxst), les queues de messages, la distance de Levenshtein, la loi de Bendford, les nombres de Lychrel, les tries, ma bucket list, des benchmarks pour Smalltalk, le dilemme itéré du prisonnier, trouver les indexes inutiles de MySQL, la sélectivité des indexes,  les jeux de Ruzzle et Boggle, mon tour du Québec, mon futur tour du Canada, les blocs en Smalltalk, la loi de Pareto, les mocks en Smalltalk, les bit operations, le référencement sur le web, les outils de log, les outils de pasties, les versions de Smalltalk gratuites, les séries de télé de ma jeunesse, les URL reducers, les médias sociaux et la programmation Smalltalk (Facebook, Twitter, Pinterest, Instagram, LinkedIn, Flickr, Yahoo, Google, etc), Roassal, Pharo et les packages à connaître, les algorithmes génétiques, les outils gratuits et utiles sur le web et bien d’autres sujets encore (principalement liés à Pharo).


Pacman

4 mai 2014

Si jamais une envie subite vous prenait, vous pouvez jouer à Pacman ici.


Comment presser un citron (préambule).

4 janvier 2012

« La simplicité est la sophistication suprême » (Léonard de Vinci).

Problème : vous avez à trouver, en seulement quelques secondes, un enregistrement unique parmi des milliards de milliards de possibilité et les seules informations dont vous disposez pour faire votre recherche sont de 17 à 35 attributs sur les 81 que contiennent la donnée tant convoitée… Est-ce possible ? Comment faire? De prime abord, ça semble impossible!

« Impossible n’est pas français » comme le dit le dicton (faussement attribué à Napoléon Bonaparte, vexé par le pessimisme de Jean Léonard, comte le Marois).

Il y a bientôt quelques années de cela, un de mes confrères de travail, Claude, m’introduisait au Sudoku. Au tout début, je ne comprenais pas la fascination de celui-ci pour un problème aussi trivial jusqu’à ce que j’essaie de résoudre une de ces grilles par moi-même… Les règles étant si peu nombreuses et si simples, j’ai rapidement été surpris par la complexité demandée pour résoudre ces puzzles. Et j’en suis devenu accroc!

Binary Sudoku

Binary Sudoku

Non, aucun autre puzzle ne semble, en apparence, aussi simple que le Sudoku! Mais derrière ce petit jeu aux règles minimales se cache un univers de complexité qui englobe une branche complète des mathématiques.

Ce n’est que lorsque je me suis buté à un problème difficile (sans arriver à le résoudre) que je me suis intéressé à l’aspect algorithmique de la résolution d’un Sudoku. Évidemment, j’aurais pu télécharger des « sudoku solver » écrits en Java, en Python, en Ruby, en Smalltalk, en BASIC, en T-SQL, en macros Excel, en n’importe quoi et trouver la solution mais le défi était d’écrire moi-même un de ces « sudoku solver ».

Malheureusement, après réflexion, la tâche m’apparaissait trop simple pour être intéressante. Coder un tel outil avec les méthodes de résolution de base et y ajouter une pile de recherche pour y faire du « backtracking » était, en soi, trop facile (du moins, en Smalltalk) pour valoir la peine. Mais à cette époque, étant plongé dans des requêtes SQL dignes des pires labyrinthes pour régler une foule de problèmes au niveau de la base de donnée d’un de nos clients, l’idée m’est venue de trouver une solution « 100% SQL », sans procédures stockées, sans fonctions, seulement UNE requête SQL. Le défi était lancé!

Il est maintenant établi qu’il existe 6670903752021072936960 grilles différentes pour un Sudoku standard de 9×9. Avec les années, plusieurs raffinements et subtilités ont pris en compte les symétries ainsi que diverses particularités des autres variantes du Sudoku pour mieux comprendre et étudier tous les aspects du Sudoku standard. Diverses techniques de résolution, de plus en plus complexes et élaborées, ont vu le jour puis ont été étudiées et améliorées de fond en comble. Les grilles de Sudoku et les carrés latins ont depuis longtemps tenu les mathématiciens occupés et, encore aujourd’hui, de nombreux trésors et concepts mathématiques encore cachés ne demandent qu’à être découverts. Ce petit jeu représente une mine intarissable de surprises pour les mathématiciens et les développeurs : il ne reste qu’à creuser encore plus creux et plus longtemps!

Cet article, divisé en trois parties, s’attaquera aux grilles de Sudoku standard de 9×9, question de garder les choses simples. Nous examinerons une manière de résoudre ces grilles à l’aide d’une solution n’impliquant que du SQL, sans procédure stockée ni script ni fonction : seulement du SQL bête et méchant!

En première partie nous verrons comment créer les données et tout ce dont nous avons besoin pour poursuivre. En seconde partie, nous tenterons d’optimiser notre approche. En troisième partie, nous mesurerons l’impact des différentes optimisations en les comparant.

Mais avant de débuter, vous devez à tout le moins être familier avec les règles du Sudoku standard, les méthodes de résolution et connaître le jargon du métier!  Tout ce dont vous avez besoin savoir se trouve ici.

Matériel nécessaire : une base de données MySQL (bien qu’avec un peu de débrouillardise, vous pouvez adapter les scripts SQL pour un autre SGBD).

Matériel facultatif: si vous désirez expérimenter vous-même et peut-être pousser l’aventure plus loin, un langage de programmation vous permettant de générer des données et/ou des requêtes SQL pourrait s’avérer utile.  Pour vous aider à apprendre Smalltalk (avec Pharo), je vous conseille fortement Pharo par l’exemple.

Dans cette série d’articles, j’utiliserai MySQL 5.1.53 ainsi que Pharo 1.2a.