• nickwitha_k (he/him)@lemmy.sdf.org
      link
      fedilink
      arrow-up
      10
      ·
      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
        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.