• nickwitha_k (he/him)@lemmy.sdf.org
    link
    fedilink
    arrow-up
    10
    arrow-down
    1
    ·
    edit-2
    1 year ago
    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)
    }
    
    • wallmenis@lemmy.one
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      isLogicGate is not used. Maybe you mean to place it in “isGate” in the stringAsGateLogic for loop’s if statement?

      • nickwitha_k (he/him)@lemmy.sdf.org
        link
        fedilink
        arrow-up
        6
        ·
        1 year ago

        Thank you. That’s what I get for writing a drawn-out shitpost program on my phone over several hours while away from home, instead of in a few minutes in vim.

        • AVincentInSpace@pawb.social
          link
          fedilink
          arrow-up
          3
          ·
          1 year ago

          Speaking of, Vim is actually quite easy to set up on Android. Simply download Termux from F-Droid (the version of Termux on Google Play is severely out of date) and pkg install vim (or nvim if you prefer). (Also, full aarch64 linux terminal on non-rooted Android, woo!) Using Vim with an onscreen keyboard is agonizing, of course, but it does work (Termux provides the Ctrl and Esc keys). The F-Droid app Unexpected Keyboard is a recommended addition – it’s an alternative on-screen keyboard with no predictive text and swiping to the corners of each key for alternate symbols. It makes using Vim on a touchscreen at least moderately less painful.