Annonce

Réduire
Aucune annonce.

Brainfuck, Ook!, Spoon et SegFaultProg

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Brainfuck, Ook!, Spoon et SegFaultProg

    Nous allons respectivement étudier les algos suivants :

    - Brainfuck
    - Ook!
    - Spoon
    - SegFaultProg

    Les trois derniers sont des dérivés du langage Brainfuck (BF).

    Qu'est-ce que le BrainFuck ? Le BrainFuck est un langage Turing-Complet minimaliste, assez complexe à première vue, car il diffère grandement, dans sa méthode de traitement, des autres langages connus. Cependant, sa manipulation est relativement simple car il ne possède que 8 instructions au total.

    Son schéma de fonctionnement est simple : au départ un tableau d'octets (30 000 cases) est initialisé à 0 pour tous ses octets. Ensuite, un pointeur (tête de lecture) est placé sur le premier octet du tableau puis se déplace ensuite dans le tableau. Enfin, deux files d'octets (in et out) gérant l'entrée et la sortie.


    Voici le tableau regroupant les 8 instructions :



    Ce langage utilise la correspondance caractère ↔ code ASCII afin d'afficher les-dits caractères.

    Voici un exemple de traitement de l'Hello World ! :



    On a donc :
    Code:
    ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
    L'on peut voir les incrémentations. Par exemple « >++. » qui incrémente de 2 l'octet sur lequel est le pointeur, ainsi 70 passe à 72 qui est la valeur correspondante au caractère « H ».

    Voici quelques exemples :

    input → Test
    output →
    Code:
    ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++++++++++++++.>+. ++++++++++++++. +.
    input → Vive le hacking !
    Output →
    Code:
    ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>--------------.+++++++++++++++++++. +++++++++++++. -----------------. <<++.>>+++++++. -------. <<. >>+++. -------. ++.++++++++. --. +++++. -------. <<. +.
    input → Happy new year 2012
    output →
    Code:
    ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>---. +++++++++++++++. . +++++++++. <<++. >>-----------.---------. ++++++++++++++++++. <<. >>++.--------------------. ----. +++++++++++++++++. <<.++++++++++++++++++. --. +. +.
    Je vous mets ici ce que pourrait donner le traitement de l'algorithme en Python :

    Code:
    def evaluate(code):
      code     = cleanup(list(code))
      bracemap = buildbracemap(code)
    
    
      cells, codeptr, cellptr = [0], 0, 0
    
    
      while codeptr < len(code):
        command = code[codeptr]
    
    
        if command == ">":
          cellptr += 1
          if cellptr == len(cells):cells.append(0)
    
    
        if command == "<":
          cellptr = 0 if cellptr <= 0else cellptr - 1
    
    
        if command == "+":
          cells[cellptr] = cells[cellptr] +1 if cells[cellptr] < 255 else 0
    
    
        if command == "-":
          cells[cellptr] = cells[cellptr] -1 if cells[cellptr] > 0 else 255
    
    
        if command == "[" andcells[cellptr] == 0: codeptr = bracemap[codeptr]
        if command == "]" andcells[cellptr] != 0: codeptr = bracemap[codeptr]
        if command == ".":sys.stdout.write(chr(cells[cellptr]))
        if command == ",":cells[cellptr] = ord(getch.getch())
          
        codeptr += 1
    Langage Ook! :

    C'est également un langage Turing-Complet minimaliste élaboré dans le but d'êtreparfaitement compris par un orang-outan. Il fonctionne exactement de la même manière que le BrainFuck, il n'y a que les instructions qui changent.

    Voici le tableau récapitulant les instructions et leur comparaison avec le BF :



    Quelques exemples :

    input → What's this ?

    output →
    Code:
    Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook.Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook. Ook?Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook.  Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook.  Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook!Ook.  Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.  Ook? Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook! Ook.  Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook.  Ook? Ook.Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook.  Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.  Ook?Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook.  Ook. Ook? Ook! Ook! Ook! Ook.  Ook? Ook. Ook?Ook. Ook! Ook.  Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.
    input → Hasta la vista

    output →
    Code:
    ok. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook.Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook. Ook?Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook.  Ook. Ook? Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook.  Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook! Ook.  Ook. Ook. Ook! Ook.  Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook.  Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook.Ook! Ook.  Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook! Ook.  Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook.  Ook. Ook? Ook. Ook? Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.  Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
    Notez les espaces.

    Mêmes input que pour le BrainFuck.

    Langage Spoon :

    Dérivé lui aussi du BrainFuck ; les instructions ici sont des séquences de 0 et 1.

    Voici le tableau récapitulant les instructions :



    Quelques exemples :

    input → Who's the master Leroy ?

    Output →
    Code:
    1 1 1 1 1 1 1 1 1 100100 010 1 010 1 1 1 010 1 1 1 1 1 1 1 010 1 1 1 1 1 1 1 1 1 1 011011 011 011 000 0011 010 010 010 010 000 000 000 000 000 000 000 000000 000 000 000 000 001010  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 001010 1 1 1 1 1 1 1 001010  000 000 000 000 000 000 000 000 000 000 000 000000 000 000 000 000 000 000 001010  011 011 1 1 1 1 1 1 1 1 1 001010 010 010 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 001010  011 011000 000 000 000 000 000 000 001010  010 010 1 001010  000 000 000 000000 000 000 000 000 000 000 000 001010  000 000 000 001010  011 011001010  010 010 1 1 1 1 1 1 1 1 001010  000 000 000 000 000 000 000000 000 000 000 000 001010  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1001010  1 001010  000 000 000 000 000 000 000 000 000 000 000 000 000000 000 001010  1 1 1 1 1 1 1 1 1 1 1 1 1 001010  011 011 001010  0101 1 1 1 1 1 001010  010 000 000 000 000 000 000 000 000 000 000 000000 000 001010  1 1 1 1 1 1 1 1 1 1 1 1 1 001010  000 000 000 001010 1 1 1 1 1 1 1 1 1 1 001010  011 000 000 000 000 000 000 000 000 000000 000 000 000 001010
    input → A mon commandement !
    Output →
    Code:
    1 1 1 1 1 1 1 1 1 100100 010 1 010 1 1 1 010 1 1 1 1 1 1 1 010 1 1 1 1 1 1 1 1 1 1 011011 011 011 000 0011 010 010 010 000 000 000 000 000 001010  011 1 1001010  010 010 1 1 1 1 1 1 1 1 1 001010  1 1 001010  000 001010  011011 001010  010 010 000 000 000 000 000 000 000 000 000 000 000001010  1 1 1 1 1 1 1 1 1 1 1 1 001010  000 000 001010  001010  000000 000 000 000 000 000 000 000 000 000 000 001010  1 1 1 1 1 1 1 1 11 1 1 1 001010  000 000 000 000 000 000 000 000 000 000 001010  1001010  1 1 1 1 1 1 1 1 001010  000 000 000 000 000 000 000 000001010  1 1 1 1 1 1 1 1 1 001010  1 1 1 1 1 1 001010  011 011 001010 1 001010
    Notez les espaces entre les séquences.

    SegFaultProg :

    Dérivé du BrainFuck également mais censé le simplifier.

    Voici la liste récapitulant les instructions :

    > (OPTIONS)
    : Incrémente le pointeur mémoire(de OPTION cases)

    < (OPTIONS)
    : Décrémente le pointeur mémoire(de OPTION cases)

    * [ARGUMENT]
    : Place le pointeur à l'adresseARGUMENT

    + (OPTIONS)
    : Incrémente la valeur de l'octet(de OPTION unités)

    - (OPTIONS)
    : Décrémente la valeur de l'octet(de OPTION unités)

    [
    : Commence une boucle

    ]
    : Retour au [ correspondant si lavaleur de l'octet courant est
    nulle

    .
    : Ecrit la valeur de l'octet courantsur la sortie.

    ,
    : Demande une saisie utilisateur

    Exemple :

    input → Hello world
    output →
    Code:
    *A+H.[-]+e.+7..+3.*B+32.*A+8.-8.+3.[-]+d.

    madhat
    sigpic

    Cyprium Download Link

    Plus j'étudie plus j'me rends compte que je n'sais rien.

    †|
Chargement...
X