mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-01-29 11:20:21 +01:00
[brainfuck/es] created
This commit is contained in:
parent
9680347c90
commit
e6df8f849a
87
es-es/brainfuck-es.html.markdown
Normal file
87
es-es/brainfuck-es.html.markdown
Normal file
@ -0,0 +1,87 @@
|
||||
---
|
||||
language: brainfuck
|
||||
contributors:
|
||||
- ["Prajit Ramachandran", "http://prajitr.github.io/"]
|
||||
- ["Mathias Bynens", "http://mathiasbynens.be/"]
|
||||
translators:
|
||||
- ["Daniel Zendejas", "https://github.com/DanielZendejas"]
|
||||
lang: es-es
|
||||
---
|
||||
|
||||
Brainfuck (con mayúscula sólo al inicio de una oración) es un
|
||||
lenguaje de programación mínimo, computacionalmente universal
|
||||
en tamaño con sólo 8 comandos.
|
||||
|
||||
```
|
||||
|
||||
Cualquier caracter que no sea "><+-.,[]" (sin incluir las comillas)
|
||||
será ignorado.
|
||||
|
||||
Brainfuck es representado por un arreglo de 30,000 celdas inicializadas
|
||||
en cero y un apuntador en la celda actual.
|
||||
|
||||
Existen ocho comandos:
|
||||
|
||||
+ : Incrementa 1 al valor de la celda actual.
|
||||
- : Decrementa 1 al valor de la celda actual.
|
||||
> : Mueve el apuntador a la siguiente celda. (a la derecha)
|
||||
< : Mueve el apuntador a la celda anterior. (a la izquierda)
|
||||
. : Imprime el valor en ASCII de la celda actual (i.e. 65 = 'A')
|
||||
, : Lee un caracter como input y lo escribe en la celda actual.
|
||||
[ : Si el valor en la celda actual es cero mueve el apuntador
|
||||
hasta el primer ']' que encuentre. Si no es cero sigue a la
|
||||
siguiente instrucción.
|
||||
] : Si el valor en la celda actual es cero, entonces sigue con
|
||||
la siguiente instrucción. Si no entonces mueve el apuntador
|
||||
hacia atrás hasta encontrar el primer '['.
|
||||
|
||||
[ y ] forman un while. Obviamente, deben estar balanceados.
|
||||
|
||||
Ahora unos ejemplos de programas escritos con brainfuck.
|
||||
|
||||
++++++ [ > ++++++++++ < - ] > +++++ .
|
||||
|
||||
Este programa imprime la letra 'A'. Primero, incrementa la celda #1 a
|
||||
6. La celda #1 será usada para hacer los ciclos. Después entra al ciclo
|
||||
([) y se mueve a la celda #2 (>). Después incrementa la celda #2 10 veces,
|
||||
y se regresa a la celda #1 (<), para después decrementarla en 1 (-).
|
||||
Este ciclo ocurre 6 veces (le toma 6 decrementos a la celda #1 volverse 0),
|
||||
cuando esto pasa se salta a (]) y continúa.
|
||||
|
||||
En este punto estamos en la celda #1, que tiene un valor de 0, mientras
|
||||
que la celda #2 tiene un valor de 60. Nos movemos a la celda #2 (>),
|
||||
la incrementamos 5 veces para tener un valor de 65 y luego imprimimos
|
||||
el valor de la celda #2 (.). 65 es 'A' en ASCII así que la letra 'A'
|
||||
se imprime.
|
||||
|
||||
, [ > + < - ] > .
|
||||
|
||||
Este programa lee un caracter del input y lo copia en la celda #2 (,).
|
||||
Después empieza un ciclo. Nos movemos a la celda #2 (>) e incrementamos su
|
||||
valor (+). Regresamos a la celda #1 y decrementamos su valor en 1 (-).
|
||||
Esto continúa hasta que la celda #1 contenga un cero. Cuando #1 contenga un
|
||||
cero la celda #2 tendrá el valor inicial de #1. Como este ciclo siempre
|
||||
terminara en la celda #1 nos movemos a la celda #2 e imprimimos (.).
|
||||
|
||||
Ten en mente que los espacios son sólo para fines de legibilidad.
|
||||
Es lo mismo escribir el ejemplo de arriba que esto:
|
||||
,[>+<-]>.
|
||||
|
||||
Intenta descrifrar lo que hace este programa:
|
||||
|
||||
,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >>
|
||||
|
||||
Este programa toma dos números como input y los multiplica.
|
||||
|
||||
Primero recibe dos números del usuario. Luego empieza el ciclo externo,
|
||||
condicionado en la celda #1. Luego se mueve a la celda #2, comenzando
|
||||
el ciclo interno condicionado en la celda #2 incrementando la celda #3.
|
||||
Sin embargo viene un problema: El ciclo interior no funcionará nuevamente
|
||||
hasta la próxima vez. Para resolver este problema también incrementamos la
|
||||
celda #4 y luego copiamos la celda #4 a la celda #2. La celda #3 contiene
|
||||
el resultado.
|
||||
```
|
||||
Y eso es brainfuck. ¿No tan difícil o sí? Como diversión, puedes escribir
|
||||
tu propio intérprete de brainfuck o tu propio programa en brainfuck. El
|
||||
intérprete es relativamente sencillo de hacer, pero si eres masoquista,
|
||||
intenta construir tu proprio intérprete de brainfuck... en brainfuck.
|
Loading…
x
Reference in New Issue
Block a user