var LogicGate = map[string]string{
"OR": "OR",
"AND": "AND",
"NOT": "NOT",
"NOR": "NOR",
"NAND": "NOR",
"XOR": "XOR",
}
func isLogicGate(inString string) (bool) {
_, ok := LogicGate[strings.ToUpper(inString)]
if ok {
return true
} else {
return false
}
}
func stringAsGateLogic(inString string) (bool, error) {
inSplit := strings.Split(inString, " ")
var phrase1 strings.Builder
var phrase2 stringa.Builder
var gateString string
for word := range inSplit {
if isLogicGate(word) {
if len(gateString) < 1{
gateString = word
} else {
phrase2.WriteString(word)
}
} else {
if len(gateString) < 1{
phrase1.WriteString(word)
} else {
phrase2.WriteString(word)
}
}
}
boolPhrase1 := bool(phrase1.String())
boolPhrase2 := bool(phrase2.String())
switch strings.ToUpper(gateString) {
case "OR":
return (boolPhrase1 || boolPhrase2), nil
case "AND":
return (boolPhrase1 && boolPhrase2), nil
case "NOT":
return (!boolPhrase2), nil
case "NOR":
return (!(boolPhrase1 || boolPhrase2)), nil
case "NAND":
return (!(boolPhrase1 && boolPhrase2)
case "XOR":
orRes := (boolPhrase1 || boolPhrase2)
nandRes := (!(boolPhrase1 && boolPhrase2))
return (orRes && nandRes), nil
default:
return false, fmt.Errorf("Why you do dis?: %v", inString)
}
}
func main(){
answer, err := stringAsGateLogic ("This person misunderstands a beautiful function code can be very sexy or maybe I'm a odd girl.")
if err != nil {
fmt.Println(err)
}
fmt.Println(answer)
}
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
replies: