Status channel in Grow()
This commit is contained in:
@@ -6,6 +6,7 @@ import "math/rand"
|
||||
import "os"
|
||||
import "time"
|
||||
|
||||
import "github.com/firestuff/subcoding/asm"
|
||||
import "github.com/firestuff/subcoding/grow"
|
||||
|
||||
func main() {
|
||||
@@ -28,8 +29,31 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
_, err = def.Grow()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
statusChan := make(chan grow.Status)
|
||||
|
||||
go func() {
|
||||
_, err = def.Grow(statusChan)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
for {
|
||||
status, ok := <-statusChan
|
||||
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
|
||||
if status.BestProgram == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
src, err := asm.Disassemble(status.BestProgram)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
log.Printf("New best score %d / %d (after %d attempts):\n%s", status.BestScore, status.TargetScore, status.Attempts, src)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user