Elliott Hird on Sun, 16 Nov 2008 14:39:48 -0700 (MST)

 [s-b] Brainfuck via Platonic Automation of Contract Obligation

```I create and join the following contract:
{{{
For each positive integer N, Cell N is a Thing. These may be
collectively
referred to as "Cells".

There is an Attribute with the Name of "Contents", a Scope of Cells,
a Range of
all integers from 0 to 255 and a Default Value of 0.

There is an Attribute with the Name of "Step", a Scope of parties to
this
contract, a Range of all positive integers (including 0) and a
Default Value of
0.

There is an Attribute with the Name of "Pointer", a Scope of parties
to this
contract, a Range of all positive integers (including 0), and a
Default Value of
0.

There is an Attribute with the Name of "Output", a Scope of parties
to this
contract, a Range of all ASCII strings and a Default Value of "".

There is an Attribute with the Name of "Input", a Scope of parties to
this
contract, a Range of all ASCII strings and a Default Value of "".

Parties to this contract can change the value of the Contents
attribute of any
Cell as a Game Action.

Parties to this contract can change the value of their Step attribute
as a Game
Action.

Parties to this contract can change the value of their Pointer
attribute as a
Game Action.

Parties to this contract can change the value of their Input
attribute as a
Game Action.

Parties to this contract can change the value of their Output
attribute as a
Game Action.

Nobody apart from ehird can join this contract.

A party's "Current Cell" means "Cell N, where N is the Contents of
the party's
Pointer attribute".

"BF-Incrementing" a Cell means "if the Contents of the cell is 255,
then set the
Contents of the cell to 0; otherwise, increment the Contents of the
cell by 1".

"BF-Decrementing" a Cell means "if the Contents of the cell is 0,
then set the
Contents of the cell to 255; otherwise, decrement the Contents of the
cell by
1".

A party "BF-Outputting" a Cell means "appending the Contents of the cell
treated as an ASCII character number to the party's Output attribute".

A party "BF-Inputting" to a Cell means "setting the Contents of the
cell to the
ASCII character number of the first character in the value of the
party's Input
attribute and removing the first character from the party's Input
attribute".

When a party's Step is 0, they must increase the value of their Pointer
attribute by 1 and set their Step to 1. When a party's Step is 1,
they must
BF-Increment their Current Cell and set their Step to 2. When a
party's Step is
2, they must BF-Increment their Current Cell and set their Step to 3.
When a
party's Step is 3, they must BF-Increment their Current Cell and set
their Step
to 4. When a party's Step is 4, they must BF-Increment their Current
Cell and
set their Step to 5. When a party's Step is 5, they must BF-Increment
their
Current Cell and set their Step to 6. When a party's Step is 6, they
must
BF-Increment their Current Cell and set their Step to 7. When a
party's Step is
7, they must BF-Increment their Current Cell and set their Step to 8.
When a
party's Step is 8, they must BF-Increment their Current Cell and set
their Step
to 9. When a party's Step is 9, they must BF-Increment their Current
Cell and
set their Step to 10. When a party's Step is 10 and the Contents of
their
Current Cell is 0, they must set their Step to 23. When a party's
Step is 10 and
the Contents of their Current Cell is not 0, they must set their Step
to 11.
When a party's Step is 11, they must decrease the value of their Pointer
attribute by 1 and set their Step to 12. When a party's Step is 12,
they must
BF-Increment their Current Cell and set their Step to 13. When a
party's Step is
13, they must BF-Increment their Current Cell and set their Step to
14. When a
party's Step is 14, they must BF-Increment their Current Cell and set
their Step
to 15. When a party's Step is 15, they must BF-Increment their
Current Cell and
set their Step to 16. When a party's Step is 16, they must BF-
Increment their
Current Cell and set their Step to 17. When a party's Step is 17,
they must
BF-Increment their Current Cell and set their Step to 18. When a
party's Step is
18, they must BF-Increment their Current Cell and set their Step to
19. When a
party's Step is 19, they must BF-Increment their Current Cell and set
their Step
to 20. When a party's Step is 20, they must increase the value of
their Pointer
attribute by 1 and set their Step to 21. When a party's Step is 21,
they must
BF-Decrement their Current Cell and set their Step to 22. When a
party's Step is
22 and the Contents of their Current Cell is 0, they must set their
Step to 10.
When a party's Step is 22 and the Contents of their Current Cell is
not 0, they
must set their Step to 23. When a party's Step is 23, they must BF-
Increment
their Current Cell and set their Step to 24. When a party's Step is
24, they
must BF-Increment their Current Cell and set their Step to 25. When a
party's
Step is 25, they must BF-Increment their Current Cell and set their
Step to 26.
When a party's Step is 26, they must BF-Increment their Current Cell
and set
their Step to 27. When a party's Step is 27, they must BF-Increment
their
Current Cell and set their Step to 28. When a party's Step is 28,
they must
BF-Increment their Current Cell and set their Step to 29. When a
party's Step is
29, they must BF-Increment their Current Cell and set their Step to
30. When a
party's Step is 30, they must increase the value of their Pointer
attribute by 1
and set their Step to 31. When a party's Step is 31, they must BF-
Decrement
their Current Cell and set their Step to 32.
}}}
_______________________________________________