Je suis monté en ligue Bronze tôt ce matin, après deux échecs en ligue Bois 1 (à la 13ème, puis à la 4ème place).

A présent, je vais implémenter les dernières règles.

Bon, ça a été plus difficile que prévu, mais je suis parvenu à monter en ligue "Bois 1" en début d'après-midi.

Je vais maintenant devoir battre le terrible "Gorboss Ramsay" pour passer en ligue Bronze. 😏

On assiste ici en direct au plus beau suicide de l'histoire de l'informatique.

Vu comme Mozilla se fait descendre dans les commentaires, je pense qu'ils n'en ont plus pour très longtemps.

twitter.com/mozilla/status/134

Je suis passé sans difficulté en ligue "Bois 2", mon bot ayant gagné presque toutes ses parties contre le boss (sauf une... de 1 point !).

Quelques modifications sur la machine à états et sur l'IA devraient me permettre de monter en ligue "Bois 1".

Mon IA est maintenant prête, et les tests contre le Boss sont concluants.

Je devrais passer en ligue "Bois 2" sans difficulté d'ici quelques heures.

J'ai fini le code pour l'IA simplifiée, il reste maintenant à le tester et à le debugger.

Ensuite, je pourrai faire une première soumission sur Codingame.

Ma fonction de calcul de distances marche, et elle s'exécute en 20 µs sur ma machine (avec un petit i3-330M en guise de CPU).

La fonction de définition de la machines à états, elle, prend 10 µs.

C'est plutôt un bon départ. Je vais à présent finir mon IA "simplifiée".

J'ai fini la définition des machines à états pour les chefs et pour les tables (d'après la documentation ici) : github.com/csj/code-a-la-mode/).

Je vais à présent rajouter une fonction pour le calcul de distances.

Je suis en train de finir l'implémentation du protocole de communication entre l'arène et les bots.

Quand j'aurai terminé, je pourrai rentrer dans le vif du sujet : coder une IA "simple" pour monter au moins en ligue Bronze.

Première tâche, pas la plus facile : recoder une arène complète en Rust, avec toutes les règles du jeu, pour pouvoir tester "localement" ma future IA.

Une bonne occasion d'apprendre comment fonctionne la communication inter-processus (par pipes) en Rust.

Nouvelle année et nouveau défi pour moi :

Je vais essayer d'atteindre la ligue Légende dans le jeu "Code à la Mode" sur Codingame. Encore une fois, je vais utiliser le langage Rust.

Le code complet et mis à jour est disponible ici :

redmine.jpages.eu/projects/adv

Et le crate (package Rust) est disponible ici : redmine.jpages.eu/projects/adv

ou sur mon serveur FTP : ftp://ftp.jpages.eu/projects/adventofcode/aoc2020-1.0.0.crate

La cour suprême autrichienne juge illégaux le port du masque obligatoire à l'école et les cours en alternance.

C'est une immense victoire pour les libertés publiques, et l'éducation.

20minutes.fr/monde/2938679-202

Jour 25 : J'ai fini au bout de 24 minutes 26 secondes pour la partie 1. Record battu de 15 secondes, et ma meilleure place cette année (1868ème).

La partie 2 était évidemment une formalité, à condition d'avoir également les 48 étoiles des précédents problèmes.

Jour 24 : un problème assez facile cette fois, et j'ai pu valider la partie 2 avant 9 heures du matin, ce qui ne m'était plus arrivé depuis le jour 13

Il s'agissait encore une fois d'un automate cellulaire, sur un pavage hexagonal.

Jour 23 (suite) : après avoir écrit mon programme, je n'étais pas encore satisfait, car il s'exécutait en 21 secondes.

Utiliser un tuple au lieu d'un vecteur dans une méthode m'aura permis de faire descendre ce temps d'exécution à 6 secondes.

Jour 23 : Comme dit par beaucoup, le problème 23 illustrait bien l'importance d'utiliser des structures de données efficaces.

Ici, un vecteur ne permet pas de finir la partie 2, il faut utiliser une liste chaînée pour insérer ou supprimer des éléments en O(1).

Jour 22 (suite) : pour cela, il m'a suffi de trouver un algorithme très simple pour déterminer le vainqueur d'une partie de bataille, en fonction du nombre total de cartes, et du joueur possédant la carte la plus forte.

Jour 22 : le problème du jour était une simulation d'une partie de "bataille" (le jeu de cartes), puis d'une variante "récursive".

J'ai eu le bonheur de faire passer le temps d'exécution de mon programme, pour la partie 2, de 50 secondes à 150 millisecondes.

Show more
Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!