Interpréteur Brainfuck :)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Interpréteur Brainfuck :)

Message par JohnJohnsonSHERMAN »

Le Brainfuck, c'est cool :) C'est bien pour les tordus qui se font chier, pour ceux qui n'on rien d'autre à faire, ou se prennent pour des illuminatis confirmés :mrgreen: . Partant de ces constats simples, je me suis dit qu'en faire un interpréteur en PB serait un petit exercice sympa... Cool non? D'avoir ainsi perdu un quart d'heure sur quelquechose de trés peu utile ^^ :P M'enfin bref, voici un petit interpréteur de Brainf*ck pour PB :)

Code : Tout sélectionner

#MEMSIZE = 1024
#MAXLPLEVEL = 32

OpenConsole("Brain Not Found")
ConsoleColor(0,7)
PrintN("############################ Interpréteur Brainfuck ############################")
ConsoleColor(7,0)

Dim memory.a(#MEMSIZE)
Dim loops(#MAXLPLEVEL)
Define ptr, loopLevel, bfScript$, i, len, inpt$, errCount

Declare Error(Text.s)

ConsoleColor(10,0)
Print("$iBF$>")
ConsoleColor(14,0)

bfScript$ = Input()
len = Len(bfScript$)

ConsoleColor(2,0)
PrintN("Exécution en cours...")
ConsoleColor(7,0)

For i=1 To len
  
  Select Asc(Mid(bfScript$,i,1))
    Case '+'
      memory(ptr) +1
    Case '-'
      memory(ptr) -1
    Case '>'
      ptr +1
    Case '<' 
      ptr -1
      If ptr < 0
        Error("Segmentation error : pointer out of memory : "+Str(ptr)+" Must be [0~1024]")
        errCount +1
        Break
      EndIf 
      
    Case '.'
      Print(Chr(memory(ptr)))
    Case ':'
      Print(Str(memory(ptr)))
      
    Case ','
      ConsoleColor(10,0)
      Print("$>")
      ConsoleColor(7,0)
      inpt$ = Input()
      memory(ptr) = Val(inpt$)
      
    Case '['
      loopLevel +1
      loops(loopLevel) = i
    Case ']'
      If memory(ptr) = 0
        loopLevel -1
      Else
        i = loops(loopLevel)
      EndIf
      
  EndSelect
Next

ConsoleColor(2,0)
PrintN(~"\nExécution terminée, erreurs : "+Str(errCount))
ConsoleColor(10,0)
Print("Pressez Entrée pour quitter.")
Input()


Procedure Error(Text.s)
  ConsoleColor(12,0)
  PrintN(Text)
  ConsoleColor(7,0)
EndProcedure
Hello World a écrit :++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++.>+++++++++++++++.>.+++.------.--------.<<+.<.
Le chiffre illuminati a écrit :++++++++++:>++:>:
Le Brainfuck (à propos de lui-même) a écrit :-[------->+<]>+++.-[--->++++<]>+.--[--->+<]>-.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.-[++>---<]>+.+[->+++<]>.[->+++<]>--.-[--->+<]>+++.[--->+<]>----.+.[---->+<]>+++.+[->+++<]>.++++++++++++..---.[++>---<]>--.---[->++<]>.--[->++++++<]>.
Les instructions sont celles du Brainfuck traditionnel + le ":" qui permet d'afficher la valeur brute de l'octet pointé, ce qui est pratique quand on ne veut pas afficher le caractére ASCII correspondant, mais qui du coup repréente une légére digression au but du BF, qui est d'est chiant à coder ^^

Bonne destruction de neurones, adoptez le BF c'est simple et à fortiori pas compliqué, voire peux difficultueux ou même facile de type non difficile... Enfin presque :mrgreen:
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Interpréteur Brainfuck :)

Message par Fig »

Beau boulot...
Tu peux essayer de coder un interpréteur Malbolge ensuite... Brainfuck c'est du python à coté. :mrgreen:
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Interpréteur Brainfuck :)

Message par Zorro »

oui, c'est étonnant ce qu'on peut faire avec peut de signes....
c'est intéressant, je chercherai a comprendre, lorsque j'aurai retrouvé mon cerveau ... :)

merci pour ce code :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Interpréteur Brainfuck :)

Message par JohnJohnsonSHERMAN »

@Fig : je connais pas mais je vais aller jeter un oeil, ca a l'air bien :mrgreen:

@Zorro : Cerveau? Pas besoin ! Surtout pas, tu risquerais de te le cramer inutilement :mrgreen:

Je pense que je vais ajouter la possibilité de faire du f*ckf*ck, du Ook! et du Spoon avec, ce sera cool ^^ Et un pt'it convertisseur C comme on en voit sur Wiki :)
En tout cas pour l'instant certains gros codes font boucler l'interpréteur, je ne sais pas trop pourquoi, mais je vais jeter un oeil du coté de la mémoire (sans doute pas prévu assez)...

Edit : Fig, je viens d'aller voir l'article de Wiki sur le Mal, le :twisted: Malbolge :twisted: , ce langage satanique concu pour faire planter n'importe quel cerveau humain, quel que soit son OS, et à n'importe quel moment ^^ Tout compte fait je préfére rester vivant et garder mon âme et continuer mon BF :mrgreen: :mrgreen: ^^ De rien hein, c'était gentil de me proposer l'auto-destruction cérébrale, mais ca ne me tente pas ;) xD ^^
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Interpréteur Brainfuck :)

Message par Kwai chang caine »

Rigolo ton truc :lol:
Je connaissais pas, ou avait oublié...on parle de tellement de choses ici :oops:
C'est sûr qu'au niveau de l'alphabet c'est ...comment dirais-je ????? heuuu !!! succint :mrgreen:
D'un autre coté..le MORSE fait encore plus fort avec seulement deux caracteres...
Sont fort ces "barrés" qui roulent dans des caisses à chenilles, tout habillés de vert et qui nous font ramper dans la boue quant on est tout jeunot :wink:

Merci pour cette récréation et son partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Interpréteur Brainfuck :)

Message par JohnJohnsonSHERMAN »

KCC a écrit :D'un autre coté..le MORSE fait encore plus fort avec seulement deux caracteres...
Sont fort ces "barrés" qui roulent dans des caisses à chenilles, tout habillés de vert et qui nous font ramper dans la boue quant on est tout jeunot :wink:
La différence entre le Brainfuck et le Morse est que le Morse est un code ou chiffrement, c'est à dire qu'il remplace une lettre par une succession de symboles, toujours les mêmes, là ou le Brainfuck est un véritable langage de programmation, certes n'ayant que 8 instructions trés explicites et claires :mrgreen: , mais qui est quand même Turing-complet, en gros on peut faire avec tout ce qu'on veut et qu'on peut faire en d'autres langages, a condition d'avoir des cerveaux de rechange et des années ^^ :P
Tiens ca me donne l'idée de faire du −··· ·−· ·− ·· −· ··−· ··− −·−· −·− (lBrainfuck en Morse... ;) )

Et les caisses à chenilles c'est cool :mrgreen: 8)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Interpréteur Brainfuck :)

Message par Zorro »

JohnJohnsonSHERMAN a écrit :Et les caisses à chenilles c'est cool :mrgreen: 8)
je viens de recup le M4 histoire de voir
puissant l'animal, mais pas assez rapide ....
on se traine ... j'ai equipé d'un fouloir de canon
mais je me fait trop vite reperer (pas d'expe camo ...et exp a 84% )

vais etre patient ... mais c'est long ... ;)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Interpréteur Brainfuck :)

Message par JohnJohnsonSHERMAN »

Si tu est sur Wot Blitz, je confirme qu'il est vraiement nul comparé au M4 sur le Wot PC, qui est un dieu de maniabilité et d'agilité, certes assez peu blindé, mais avec un gun OP, qui fait trés souvent du oneshot 8) Sur Blitz, l'xp vient plus vite et les crédits a peu prés aussi vite que sur Wot PC, donc ton camo devrait pas être trop long normalement... Aprés je me rapelle plus combien ca coute... Ca ne sert pas à grand chose n'empêche, la diff est assez minime, vu que le sherman est rapide et maniable, son but (en tant que moyen) est de flanquer et de contourner, et non de sniper (sauf mm défavorisant ou peu de vie) :P Par contre les boosts, assistances/stabilisateurs de visée sont trés utile pour le Sherman dont le défaut de son 105mm est la lenteur :( Sa maniabilité compense heureusement :)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Demivec
Messages : 90
Inscription : sam. 18/sept./2010 18:13

Re: Interpréteur Brainfuck :)

Message par Demivec »

Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Interpréteur Brainfuck :)

Message par JohnJohnsonSHERMAN »

Pas mal du tout, peut-être légérement plus complexe que le mien :) C'est toi qui l'as fait?
(J'aime bien cette idée de réalloc la mémoire quand il y en a besoin :) , je pense que je vais l'implémenter )
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Interpréteur Brainfuck :)

Message par Zorro »

@Sherman
si tu lis ma signature, tu aurai pu voir que j'ai recuperé un Ordinateur recent (Msi GT72Vr Dominator Tobii)
et que donc, je suis retourné sur WOT Pc ;)

mais apres un peut plus d'un an de non pratique, j'ai perdu beaucoup de dextérité (mais ça reviens doucement)
heureusement, mon E25 me permet de refaire la cagnote assez rapidement :)

ps: j'ai laissé tombé le WOT Blitz Tablette ... j'arrive pas a utiliser le tactile pour manoeuvrer
ps2: j'ajoute a propos de mon utilisation du TouchPad , que j'utilise l'option "Vitesse" sur mon Trackpad
c'est a dire qu'un leger glissement vers une direction, et le pointeur continue tout seul ....
ça permet d'un seul geste de faire tourner la tourelle ... c'est moins rapide qu'une souris (encore que...)
mais j'y suis habitué :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Interpréteur Brainfuck :)

Message par JohnJohnsonSHERMAN »

Ah oui c'est vrai :) C'est bien ca :) Eh bien bon jeu en Sherman (dont je maintiens la maniabilité, tu verras quand t'auras le T29, ce que c'est de se sentir louuuurd ^^ :mrgreen: ) ;) Bon aprés pour ce qui est du fric, c'est vrai qu'en E25 ca va trés vite... Plus vite qu'en T29 (qui ne rapporte presque rien a cause du cout des munitions).... bon faut dire aussi qu'en ce moment je suis "en pause" et que je joue trés peu et trés mal à Wot ;) Allez, bon jeu :)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Demivec
Messages : 90
Inscription : sam. 18/sept./2010 18:13

Re: Interpréteur Brainfuck :)

Message par Demivec »

JohnJohnsonSHERMAN a écrit :Pas mal du tout, peut-être légérement plus complexe que le mien :) C'est toi qui l'as fait?
Oui, Je l'ai codé mais c'était surtout une traduction de l'une des autres entrées (en juin 2010).
Répondre