go/brainfuck

log tags | changeset raw browse | bz2 | zip | gz

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 }