Skip to content

Instantly share code, notes, and snippets.

@lenaschoenburg
Created February 10, 2013 12:40
Show Gist options
  • Save lenaschoenburg/4749471 to your computer and use it in GitHub Desktop.
Save lenaschoenburg/4749471 to your computer and use it in GitHub Desktop.
package main
import "fmt"
var data [100]byte
func main() {
input := "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>."
i := 0
p := 0
for i < len(input) {
switch input[i] {
case '+':
data[p]++
i++
case '-':
data[p]--
i++
case '>':
p++
i++
case '<':
p--
i++
case '[':
if data[p] != 0 {
i++
} else {
for input[i] != ']' {
i++
}
}
case ']':
if data[p] == 0 {
i++
} else {
for input[i] != '[' {
i--
}
}
case '.':
fmt.Printf("%c", data[p])
i++
default:
i++
}
}
fmt.Println()
fmt.Println("pointer ==", p)
fmt.Println("data ==", data)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment