go/brainfuck
changeset 2:ddcf4bca3fd6 tip
Capitalized
| author | yiyus@1936 |
|---|---|
| date | Tue Nov 24 20:31:30 2009 +0100 (2009-11-24 ago) |
| parents | fb4dee2a5872 |
| children | |
| files | bf.go bf_test.go |
line diff
1.1 --- a/bf.go Mon Nov 23 19:22:31 2009 +0100
1.2 +++ b/bf.go Tue Nov 24 20:31:30 2009 +0100
1.3 @@ -28,8 +28,8 @@
1.4
1.5 // BrainFuckVM represents the input and output of the virtual machine
1.6 type BrainFuckVM struct {
1.7 - in chan byte;
1.8 - out chan byte;
1.9 + In chan byte;
1.10 + Out chan byte;
1.11 }
1.12
1.13 func (bf BrainFuckVM) core(prog []byte, size int) {
1.14 @@ -50,10 +50,10 @@
1.15 case '-':
1.16 a[p]--
1.17 case '.':
1.18 - bf.out <- a[p]
1.19 + bf.Out<- a[p]
1.20 case ',':
1.21 // test/turing.go cannot do this!
1.22 - a[p] = <-bf.in
1.23 + a[p] = <-bf.In
1.24 case '[':
1.25 if a[p] == 0 {
1.26 for nest := 1; nest > 0; pc++ {
1.27 @@ -89,8 +89,8 @@
1.28 // access to its I/O ports
1.29 func BrainFucker(prog []byte, size int) *BrainFuckVM {
1.30 bf := new(BrainFuckVM);
1.31 - bf.in = make(chan byte);
1.32 - bf.out = make(chan byte);
1.33 + bf.In = make(chan byte);
1.34 + bf.Out= make(chan byte);
1.35 go bf.core(prog, size);
1.36 return bf;
1.37 }
2.1 --- a/bf_test.go Mon Nov 23 19:22:31 2009 +0100
2.2 +++ b/bf_test.go Tue Nov 24 20:31:30 2009 +0100
2.3 @@ -17,7 +17,7 @@
2.4 >.+++.------.--------.>+.>.!");
2.5 bf := BrainFucker(prog, 30000);
2.6 for {
2.7 - b, ok := <-bf.out;
2.8 + b, ok := <-bf.Out;
2.9 if !ok {
2.10 return;
2.11 }
2.12 @@ -31,15 +31,15 @@
2.13 bi := "43";
2.14 i := 0;
2.15 for {
2.16 - b, oki := <-bf.out;
2.17 + oki := i<len(bi);
2.18 if oki {
2.19 + bf.In <- bi[i];
2.20 + i++;
2.21 + }
2.22 + b, oko := <-bf.Out;
2.23 + if oko {
2.24 fmt.Print(string(b));
2.25 }
2.26 - oko := i<len(bi);
2.27 - if oko {
2.28 - bf.in <- bi[i];
2.29 - i++;
2.30 - }
2.31 if !oki && !oko {
2.32 break;
2.33 }