У меня есть примерный рекурсивный код на игровой площадке go, есть 2 "?", Цель - сгенерировать замену всех двоичных строк?с 0 или 1 предполагается отображение 4 результатов, но только отображение 3. т.е. отсутствует 1100101
package main
import (
"fmt"
//"strings"
//"strconv"
)
func main() {
str := "1?0?101"
mstr := []byte(str)
q := []byte("?")[0]
a := []byte("0")[0]
b := []byte("1")[0]
fmt.Println(mstr)
allstr(mstr, 0, len(mstr), q, a, b)
}
func allstr(mstr []byte, index int, size int, q, a, b byte) {
if index >= size {
fmt.Println(string(mstr))
return
}
if mstr[index] == q {
mstr[index] = a
allstr(mstr, index+1, size, q, a, b)
mstr[index] = b
allstr(mstr, index+1, size, q, a, b)
} else {
allstr(mstr, index+1, size, q, a, b)
}
}
Перейти на игровую площадку: https://play.golang.org/p/4e5NIOS9fG4
Вывод:
[49 63 48 63 49 48 49]
1000101
1001101
1101101