Cosa c'è di nuovo?
HWReload

Registrati e partecipa alle attività del forum

Brainf**k

Tesla

Community Italiana
Iscritto dal:
12 Giugno 2021
Messaggi
69
Brainf**k o anche solamente BF è un linguaggio esoterico Turing-complete. Si basa su 7 operatori soltanto, nonostante ciò se usato bene può svolgere operazioni complesse mantenendo una certa intuitività per chi è abituato al linguaggio.

In Brainf**k la memoria è divisa in indirizzi, si può navigare in memoria attraverso il puntatore che va mosso manualmente.
Con > si può incrementare la posizione del puntatore (dall'indirizzo 0 andiamo a 1) mentre con < la possiamo decrementare (da 1 a 0).
Con + potremmo incrementare il valore della cella mentre con - lo decrementeremo.
Con [ apriremo un loop e con ] lo chiuderemo, il loop terminerà quando iniziando di nuovo il valore della cella dov'è posizionato il puntatore è 0.
Con . stamperemo nell'output come ASCII il valore della nostra cella e con , potremmo leggere l'input.
Possiamo incrementare il valore della cella fino a 255 poiché può tenere solo interi non-segnati ad 8 bit.

In Brainf**k non è possibile utilizzare valori fissi nel codice, bisogna sempre "arrivarci a mano", infatti il programma per fare "Hello World" non è per niente snello:
++++++++++
[
>+++++++>++++++++++>+++>+<<<<-
]
>++. Loop iniziale (dopo viene stampata una H)
>+. e
+++++++. l
. l
+++. o
>++.
<<+++++++++++++++.
>.
+++.
------.
--------.
>+.
>.
Ogni carattere che non sia .,<>[]-+ viene ignorato dall'interprete e trattato come commento.

Ecco un altro esempio: (fonte: https://gist.github.com/CristianoBarone/c3b0776968c53131e045b8c8608b892e)
+. Stampa 1
>+. Stampa 1
[<->>+<+<]
>.[>>+>+<<<-] Stampa 2
>[->+<]
>.[-<<+>>] Stampa 3
<<[<+>>+<-]
>[->>+<<<]>
>>[-<<+>>]
<<. Stampa 5
[>+>+<<-]
<<
[->>>+<<<]
>>>. Stampa 8
>[-<<+>>]
<[<<+<+>>>-]<<<
[
[->>+<<]
>>. Stampa da 13 in poi
[-<<+>>]
<<[>+>+<<-]>
]
 
Top