Petits programmes en OCaml

The Caml Language

Jean-Baptiste
Rouquier

Work

Présentation

Programmation

Prépas

LaTeX


Quelques petits programmes sans prétention écrits en OCaml. Rien de transcendant, mais c'était amusant à écrire.

Storing Colours in 31 bits

An answer to this blog post. Here it is.

Horloge d'échecs et autres

Connaissez-vous Trichess ? Version commerciale de l'échiquier de Machiavel, cela consiste "tout simplement" à jouer aux échecs à trois sur un plateau hexagonal, avec une petite adaptation des règles. Connaissez-vous une horloge adaptée ? L'horloge que voici permet de jouer aux échecs en double (aussi appelé blitz à quatre, siamois, bughouse, tandem...), c'est-à-dire qu'il permet d'avoir deux horloges en parallèle. Et de façon générale, il permet d'avoir b plateaux de p joueurs chacun, avec le temps restant du joueur dont c'est le tour qui diminue sur chaque plateau... pourvu que vous vous y retrouviez dans la touche de chacun (c'est configurable).

Permet aussi de faire un sablier.

Exécutable Linux, exécutable windows, code source.

Take it Easy

Un petit jeu original, dont vous trouverez une description sur l'incontournable site jeuxsoc.free.fr. Règles du jeu proposées par ludism. Il vous faudra une boîte pour jouer contre l'ordinateur : vous lui indiquez les pièces tirées au sort, il les place à l'écran et indique son score à la fin de la manche.

La stratégie implémentées ici est simple : on ne casse pas de ligne tant que c'est possible, si on y est forcé on en casse le moins possible. En cas d'égalité, on casse les lignes de valeur minimale. On essaye ensuite de prolonger les lignes. Et en dernier lieu, on tente de placer les gros chiffres sur les longues lignes. On obtient ainsi un score moyen de 132,8 points (et un écart type assez mauvais, 35,4). Je n'ai pas cherché à faire mieux.

Exécutable Linux, exécutable windows, exécutable mac, code source.

Sleon

"Sleon une édtue de l'Uvinertisé de Cmabrigde, l'odrre des ltteers dnas un mtos n'a pas d'ipmrotncae, la suele coshe ipmrotnate est que la pmeirère et la drenèire soit à la bnnoe pclae. Le rsete peut êrte dnas un dsérorde ttoal et vuos puoevz tujoruos lrie snas porlblème. C'est prace que le creaveu hmauin ne lit pas chuaqe ltetre elle-mmêe, mias le mot cmome un tuot."

Ça vous dit quelque chose ? J'ai voulu tester sur d'autres textes, d'où ce petit programme qui mélange les lettres des mots sans toucher ni à la première ni à la dernière. À vous de voir si c'est vrai que l'on arrive toujours à lire... et de vous entraîner en anglais ou autre...

Exécutable et code source : Linux, windows, mac.

Puissance 4

Exercice de style. Un petit jeu classique où il faut aligner quatre pions. Jeu contre l'ordinateur uniquement (c'est la partie qui m'intéressait).

Avec automate fini au milieu et algo génétique pour l'optimisation des paramètres :-). Le tout fait pendant mes débuts, en prépa : j'ai uniquement traduit le code en OCaml, et désolé pour l'interface graphique.

Exécutable Linux, exécutable windows, exécutable mac, explications et code source.

Force 3

Le petit frère du précédent. Cette fois il faut aligner trois pions, mais on ne peut poser un pion que sur un socle et les socles sont mobiles... Moins connu, intéressant un moment. Fait en prépa également : je n'ai fait qu'adapter le code (sans corriger les bugs...) pour le compiler avec OCaml.

Exécutable Linux, exécutable windows, exécutable mac , explications et code source.

Quine

Un autre exercice de style : un programme qui écrit son code source, que l'on appelle traditionnellement Quine. Trois pour le prix d'un, en fait (mais sur la même idée).

Vous avez besoin d'OCaml installé pour faire marcher ce programme. Dans l'un j'utilise la librairie Str, on peut donc exécuter par :
ocaml str.cma test.ml
ou bien le compiler.

source caml.

Autres

Pas assez propre pour être publié, mais si ça vous intéresse je le nettoie et le mets en ligne.

Pentaminos
Combien de façon y-a-t-il de ranger les douze pentaminos dans une boîte ? Un casse-tête nommé « Fractal » sur le site de Défi-jeu est un problème similaire :

Voici les solutions .
Algorithmique
Code de gray, PGCD rapide, entiers de Hamming, sous ensembles à p éléments de {1,2,...,n}. Voir aussi les travaux pratiques dans la rubrique "enseignement".

Cette rubrique a déjà été demandée , voici donc le code.

Dessins
spirale d'Ulam, compresseur à spirales, courbe de Peano, triangle de Sierpinsky, fractale par aggrégation de poussières, ...