Page de Bastien pour la Prep'ISIMA

Bastien TABORDET

PREP'ISIMA
2024-2025

What the Brainfuck !

Introduction

Brainfuck est un langage de programmation minimaliste composé de 8 commandes.
C’est tout. Cependant il est Turing complet et permet de faire ce que l’on veut, à condition d’être très patient et motivé.
Votre objectif est de créer un interprète Brainfuck entièrement fonctionnel.
Le modèle Brainfuck est composé de trois éléments :

- Un tableau de S cellules d’un octet initialisé à 0 et indexé à partir de 0.
- Un pointeur initialisé pour pointer sur la première cellule (index 0) du tableau.
- Un programme composé des 8 instructions valides.

Voici les instructions :

> incrémente la position du pointeur.
< décrémente la position du pointeur.
+ incrémente la valeur de la cellule vers laquelle pointe le pointeur.
- décrémente la valeur de la cellule vers laquelle pointe le pointeur.
. afficher la valeur de la cellule pointée, en l’interprétant comme une valeur ASCII.
, acceptez un entier positif d’un octet en entrée et stockez-le dans la cellule pointée.
[ passer à l’instruction après le correspondant] si la valeur de la cellule pointée est 0.
] revenir à l’instruction après le [ correspondant si la valeur de la cellule pointée est différente de 0.

Description et détail algorithmique

On peut résoudre cet exercice en utilisant une sorte de pointeur,
un tableau mem ainsi qu'un tableau qui va nous servir de sauvegarde des commandes.

Résolution du Brainfuck

Résolution du Brainfuck Résolution du Brainfuck Résolution du Brainfuck

Analyse des résultats

L'algorithme à bien su résoudre et passer tous les tests efficacement.

Description d'une solution différente

Cette solution provient du profil de "MJZ".
Elle est bien rédigée, compréhensible visuellement tout en gardant une belle structure.
D'autres solutions disponibles sont aussi intéréssantes comme une où la personne a réussi à transformer son programme BF en un code assembleur et a réussi à l'éxécuter.

Autre solution du Brainfuck

Bilan de mes apprentissages (REX)

Cet exercice m'a permis de découvrir le language Brainfuck ainsi que la gestion d'erreurs notamment.
Il m'a aussi fait retravailler sur les tableaux et la sauvegarde de données dedans.