Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B
brainfucker
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Taddeüs Kroes
brainfucker
Commits
7b66f091
Commit
7b66f091
authored
10 years ago
by
Taddeüs Kroes
Browse files
Options
Downloads
Patches
Plain Diff
Removed undocumented Hello World program and added rot13 program
parent
ed29d7fd
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
hello-verbose.b
+0
-41
0 additions, 41 deletions
hello-verbose.b
hello.b
+41
-1
41 additions, 1 deletion
hello.b
rot13.b
+28
-0
28 additions, 0 deletions
rot13.b
with
69 additions
and
42 deletions
hello-verbose.b
deleted
100644 → 0
+
0
−
41
View file @
ed29d7fd
[ This program prints "Hello World!" and a newline to the screen, its
length is 106 active command characters [it is not the shortest.]
This loop is a "comment loop", it's a simple way of adding a comment
to a BF program such that you don't have to worry about any command
characters. Any ".", ",", "+", "-", "<" and ">" characters are simply
ignored, the "[" and "]" characters just have to be balanced.
]
+++++
+++
Set Cell #0 to 8
[
>
++++
Add 4 to Cell #1; this will always set Cell #1 to 4
[
as the cell will be cleared by the loop
>
++
Add 2 to Cell #2
>
+++
Add 3 to Cell #3
>
+++
Add 3 to Cell #4
>
+
Add 1 to Cell #5
<<<<
-
Decrement the loop counter in Cell #1
]
Loop till Cell #1 is zero; number of iterations is 4
>
+
Add 1 to Cell #2
>
+
Add 1 to Cell #3
>
-
Subtract 1 from Cell #4
>>
+
Add 1 to Cell #6
[
<
]
Move back to the first zero cell you find; this will
be Cell #1 which was cleared by the previous loop
<
-
Decrement the loop Counter in Cell #0
]
Loop till Cell #0 is zero; number of iterations is 8
The result of this is:
Cell No : 0 1 2 3 4 5 6
Contents: 0 0 72 104 88 32 8
Pointer : ^
>>
.
Cell #2 has value 72 which is 'H'
>
---.
Subtract 3 from Cell #3 to get 101 which is 'e'
+++++++..+++.
Likewise for 'llo' from Cell #3
>>
.
Cell #5 is 32 for the space
<
-.
Subtract 1 from Cell #4 for 87 to give a 'W'
<
.
Cell #3 was set to 'o' from the end of 'Hello'
+++.------.--------.
Cell #3 for 'rl' and 'd'
>>
+.
Add 1 to Cell #5 gives us an exclamation point
>
++.
And finally a newline from Cell #6
This diff is collapsed.
Click to expand it.
hello.b
+
41
−
1
View file @
7b66f091
++++++++
[
>
++++
[
>
++
>
+++
>
+++
>
+
<<<<
-
]
>
+
>
+
>
-
>>
+
[
<
]
<
-
]
>>
.
>
---.+++++++..+++.
>>
.
<
-.
<
.+++.------.--------.
>>
+.
>
++.
[ This program prints "Hello World!" and a newline to the screen, its
length is 106 active command characters [it is not the shortest.]
This loop is a "comment loop", it's a simple way of adding a comment
to a BF program such that you don't have to worry about any command
characters. Any ".", ",", "+", "-", "<" and ">" characters are simply
ignored, the "[" and "]" characters just have to be balanced.
]
+++++
+++
Set Cell #0 to 8
[
>
++++
Add 4 to Cell #1; this will always set Cell #1 to 4
[
as the cell will be cleared by the loop
>
++
Add 2 to Cell #2
>
+++
Add 3 to Cell #3
>
+++
Add 3 to Cell #4
>
+
Add 1 to Cell #5
<<<<
-
Decrement the loop counter in Cell #1
]
Loop till Cell #1 is zero; number of iterations is 4
>
+
Add 1 to Cell #2
>
+
Add 1 to Cell #3
>
-
Subtract 1 from Cell #4
>>
+
Add 1 to Cell #6
[
<
]
Move back to the first zero cell you find; this will
be Cell #1 which was cleared by the previous loop
<
-
Decrement the loop Counter in Cell #0
]
Loop till Cell #0 is zero; number of iterations is 8
The result of this is:
Cell No : 0 1 2 3 4 5 6
Contents: 0 0 72 104 88 32 8
Pointer : ^
>>
.
Cell #2 has value 72 which is 'H'
>
---.
Subtract 3 from Cell #3 to get 101 which is 'e'
+++++++..+++.
Likewise for 'llo' from Cell #3
>>
.
Cell #5 is 32 for the space
<
-.
Subtract 1 from Cell #4 for 87 to give a 'W'
<
.
Cell #3 was set to 'o' from the end of 'Hello'
+++.------.--------.
Cell #3 for 'rl' and 'd'
>>
+.
Add 1 to Cell #5 gives us an exclamation point
>
++.
And finally a newline from Cell #6
This diff is collapsed.
Click to expand it.
rot13.b
0 → 100644
+
28
−
0
View file @
7b66f091
-,+
[
Read first character and start outer character reading loop
-
[
Skip forward if character is 0
>>
++++
[
>
++++++++
<
-
]
Set up divisor (32) for division loop
(MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero)
<
+
<
-
[
Set up dividend (x minus 1) and enter division loop
>
+
>
+
>
-
[
>>>
]
Increase copy and remainder / reduce divisor / Normal case: skip forward
<
[[
>
+
<
-
]
>>
+
>
]
Special case: move remainder back to divisor and increase quotient
<<<<<
-
Decrement dividend
]
End division loop
]
>>>
[
-
]
+
End skip loop; zero former divisor and reuse space for a flag
>
--
[
-
[
<
-
>
+++
[
-
]]]
<
[
Zero that flag unless quotient was 2 or 3; zero quotient; check flag
++++++++++++
<
[
If flag then set up divisor (13) for second division loop
(MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero)
>
-
[
>
+
>>
]
Reduce divisor; Normal case: increase remainder
>
[
+
[
<
+
>
-
]
>
+
>>
]
Special case: increase remainder / move it back to divisor / increase quotient
<<<<<
-
Decrease dividend
]
End division loop
>>
[
<
+
>
-
]
Add remainder back to divisor to get a useful 13
>
[
Skip forward if quotient was 0
-
[
Decrement quotient and skip forward if quotient was 1
-
<<
[
-
]
>>
Zero quotient and divisor if quotient was 2
]
<<
[
<<
-
>>
-
]
>>
Zero divisor and subtract 13 from copy if quotient was 1
]
<<
[
<<
+
>>
-
]
Zero divisor and add 13 to copy if quotient was 0
]
End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3)
<
[
-
]
Clear remainder from first division if second division was skipped
<
.
[
-
]
Output ROT13ed character from copy and clear it
<
-,+
Read next character
]
End character reading loop
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment