Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
217
Task/Caesar-cipher/Brainf---/caesar-cipher-1.bf
Normal file
217
Task/Caesar-cipher/Brainf---/caesar-cipher-1.bf
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
Author: Ettore Forigo | Hexwell
|
||||
|
||||
+ start the key input loop
|
||||
[
|
||||
memory: | c | 0 | cc | key |
|
||||
^
|
||||
|
||||
, take one character of the key
|
||||
|
||||
:c : condition for further ifs
|
||||
!= ' ' (subtract 32 (ascii for ' '))
|
||||
--------------------------------
|
||||
|
||||
(testing for the condition deletes it so duplication is needed)
|
||||
[>>+<+<-] duplicate
|
||||
> |
|
||||
[<+>-] |
|
||||
> | :cc : copy of :c
|
||||
|
||||
[ if :cc
|
||||
|
|
||||
> | :key : already converted digits
|
||||
|
|
||||
[>++++++++++<-] | multiply by 10
|
||||
> | |
|
||||
[<+>-] | |
|
||||
< | |
|
||||
|
|
||||
< | :cc
|
||||
[-] | clear (making the loop an if)
|
||||
] |
|
||||
|
||||
<< :c
|
||||
|
||||
[>>+<+<-] duplicate
|
||||
> |
|
||||
[<+>-] |
|
||||
> | :cc
|
||||
|
||||
[ if :cc
|
||||
---------------- | subtract 16 (difference between ascii for ' ' (already subtracted before) and ascii for '0'
|
||||
| making '0' 0; '1' 1; etc to transform ascii to integer)
|
||||
|
|
||||
[>+<-] | move/add :cc to :key
|
||||
] |
|
||||
|
||||
<< :c
|
||||
]
|
||||
|
||||
memory: | 0 | 0 | 0 | key |
|
||||
^
|
||||
|
||||
>>> :key
|
||||
|
||||
[<<<+>>>-] move key
|
||||
|
||||
memory: | key | 0 | 0 | 0 |
|
||||
^
|
||||
< ^
|
||||
+ start the word input loop
|
||||
[
|
||||
memory: | key | 0 | c | 0 | cc |
|
||||
^
|
||||
|
||||
, take one character of the word
|
||||
|
||||
:c : condition for further if
|
||||
!= ' ' (subtract 32 (ascii for ' '))
|
||||
--------------------------------
|
||||
|
||||
[>>+<+<-] duplicate
|
||||
> |
|
||||
[<+>-] |
|
||||
> | :cc : copy of :c
|
||||
|
||||
[ if :cc
|
||||
| subtract 65 (difference between ascii for ' ' (already subtracted before) and ascii for 'a'; making a 0; b 1; etc)
|
||||
-----------------------------------------------------------------
|
||||
|
|
||||
<<<< | :key
|
||||
|
|
||||
[>>>>+<<<+<-] | add :key to :cc := :shifted
|
||||
> | |
|
||||
[<+>-] | |
|
||||
|
|
||||
| memory: | key | 0 | c | 0 | cc/shifted | 0 | 0 | 0 | 0 | 0 | divisor |
|
||||
| ^
|
||||
|
|
||||
>>>>>>>>> | :divisor
|
||||
++++++++++++++++++++++++++ | = 26
|
||||
|
|
||||
<<<<<< | :shifted
|
||||
|
|
||||
| memory: | shifted/remainder | 0 | 0 | 0 | 0 | 0 | divisor |
|
||||
| ^
|
||||
|
|
||||
| shifted % divisor
|
||||
[ | | while :remainder
|
||||
| | |
|
||||
| | | memory: | shifted | 0 | 0 | 0 | 0 | 0 | divisor | 0 |
|
||||
| | | ^
|
||||
| | |
|
||||
[>>>>>>>+<<<<+<<<-] | | | duplicate :cshifted : copy of shifted
|
||||
| | |
|
||||
| | | memory: | 0 | 0 | 0 | shifted | 0 | 0 | divisor | cshifted |
|
||||
| | | ^
|
||||
>>>>>> | | | :divisor ^
|
||||
| | |
|
||||
[<<+>+>-] | | | duplicate
|
||||
< | | | |
|
||||
[>+<-] | | | |
|
||||
< | | | | :cdiv : copy of divisor
|
||||
| | |
|
||||
| | | memory: | 0 | 0 | 0 | shifted | cdiv | 0 | divisor | cshifted |
|
||||
| | | ^
|
||||
| | |
|
||||
| | | subtract :cdiv from :shifted until :shifted is 0
|
||||
[ | | | | while :cdiv
|
||||
< | | | | | :shifted
|
||||
| | | | |
|
||||
[<<+>+>-] | | | | | duplicate
|
||||
< | | | | | |
|
||||
[>+<-] | | | | | |
|
||||
< | | | | | | :csh
|
||||
| | | | |
|
||||
| | | | | memory: | 0 | csh | 0 | shifted/remainder | cdiv | 0 | divisor | cshifted |
|
||||
| | | | | ^
|
||||
| | | | |
|
||||
| | | | | subtract 1 from :shifted if not 0
|
||||
[ | | | | | | if :csh
|
||||
>>-<< | | | | | | | subtract 1 from :shifted
|
||||
[-] | | | | | | | clear
|
||||
] | | | | | | |
|
||||
| | | | |
|
||||
>>> | | | | | :cdiv
|
||||
- | | | | | subtract 1
|
||||
] | | | | |
|
||||
| | |
|
||||
| | |
|
||||
| | | memory: | 0 | 0 | 0 | remainder | 0 | 0 | divisor | cshifted |
|
||||
| | | ^
|
||||
< | | | :remainder ^
|
||||
| | |
|
||||
[>+<<<<+>>>-] | | | duplicate
|
||||
| | |
|
||||
| | | memory: | remainder | 0 | 0 | 0 | crem | 0 | divisor | shifted/modulus |
|
||||
| | | ^
|
||||
> | | | :crem ^
|
||||
| | |
|
||||
| | | clean up modulus if a remainder is left
|
||||
[ | | | if :crem
|
||||
>>>[-]<<< | | | | clear :modulus
|
||||
[-] | | | | clear
|
||||
] | | | |
|
||||
| | |
|
||||
| | | if subtracting :cdiv from :shifted left a remainder we need to do continue subtracting;
|
||||
| | | otherwise modulus is the modulus between :divisor and :shifted
|
||||
| | |
|
||||
<<<< | | | :remainder
|
||||
] | | |
|
||||
|
|
||||
| memory: | 0 | 0 | 0 | 0 | 0 | 0 | divisor | modulus | 0 | cmod | eq26 |
|
||||
| ^
|
||||
|
|
||||
>>>>>>> | :modulus
|
||||
|
|
||||
[>>+<+<-] | duplicate
|
||||
> | |
|
||||
[<+>-] | |
|
||||
> | | :cmod : copy of :modulus
|
||||
|
|
||||
| memory: | 0 | 0 | 0 | 0 | 0 | 0 | divisor | modulus | 0 | cmod | eq26 |
|
||||
| ^
|
||||
|
|
||||
-------------------------- | subtract 26
|
||||
|
|
||||
> | :eq26 : condition equal to 26
|
||||
+ | add 1 (set true)
|
||||
|
|
||||
< | :cmod
|
||||
[ | if :cmod not equal 26
|
||||
>-< | | subtract 1 from :eq26 (set false)
|
||||
[-] | | clear
|
||||
] | |
|
||||
|
|
||||
> | :eq26
|
||||
|
|
||||
[ | if :eq26
|
||||
<<<[-]>>> | | clear :modulus
|
||||
[-] | | clear
|
||||
] | |
|
||||
|
|
||||
| the modulus operation above gives 26 as a valid modulus; so this is a workaround for setting a
|
||||
| modulus value of 26 to 0
|
||||
|
|
||||
<<<< |
|
||||
[-] | clear :divisor
|
||||
|
|
||||
| memory: | c | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | modulus |
|
||||
| ^
|
||||
> | :modulus ^
|
||||
[<<<<<<<+>>>>>>>-] | move :modulus
|
||||
|
|
||||
| memory: | c | 0 | modulus/cc | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
| ^
|
||||
<<<<<<< | :modulus/cc ^
|
||||
|
|
||||
| add 97 (ascii for 'a'; making 0 a; 1 b; etc)
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
. | print
|
||||
[-] | clear
|
||||
] |
|
||||
|
||||
memory: | c | 0 | modulus/cc |
|
||||
^
|
||||
<< :c ^
|
||||
]
|
||||
1
Task/Caesar-cipher/Brainf---/caesar-cipher-2.bf
Normal file
1
Task/Caesar-cipher/Brainf---/caesar-cipher-2.bf
Normal file
|
|
@ -0,0 +1 @@
|
|||
10 abc
|
||||
1
Task/Caesar-cipher/Brainf---/caesar-cipher-3.bf
Normal file
1
Task/Caesar-cipher/Brainf---/caesar-cipher-3.bf
Normal file
|
|
@ -0,0 +1 @@
|
|||
16 klm
|
||||
Loading…
Add table
Add a link
Reference in a new issue