• expatriado@lemmy.world
    link
    fedilink
    arrow-up
    48
    ·
    2 days ago

    wouldn’t 0 be 0 and -1 underflow to 255 if 8 bit container? intentional error to enhance engagement?

    • Khanzarate@lemmy.world
      link
      fedilink
      arrow-up
      70
      ·
      edit-2
      2 days ago

      You’re correct but you have an off by 1 error.

      First, the genie grants the wish.

      NumWishes=0;

      Then, having completed the wish, the genie deducts that wish from the remaining wishes.

      NumWishes–;

      And to complete the thought,

      Lastly, the genie checks if the lampholder is out of wishes

      If(NumWishes==0) {…}

      (255==0) evaluates to False, so we fall past that check.

          • expatriado@lemmy.world
            link
            fedilink
            arrow-up
            4
            ·
            1 day ago

            i think both solutions are valid, since sometimes you pay before and sometimes after receiving the service

        • Khanzarate@lemmy.world
          link
          fedilink
          arrow-up
          4
          ·
          1 day ago

          Genie in the OP image would’ve said “OK you now have 0 wishes”.

          Since he said 255, my interpretation is a valid solution.

          Of course, if we’re talking hypothetical wish gaining prevention methods, I’d just have a check before,

          previous_wishes = wishes;

          {Do all the wish things. wishes ends up with a 255 because of our shenanigans}

          If(wishes>=previous_wishes) wishes = previous_wishes-1;

          ;If the current number of wishes isnt less than the old number of wishes, set it to the old number and subtract 1

          If(wishes==0) {/*TODO: write function to end wish giving sequence*/}

        • mohab@piefed.social
          link
          fedilink
          English
          arrow-up
          1
          arrow-down
          1
          ·
          1 day ago

          I would assume this to be the case since you cannot un-utter a wish—once you say it, it is counted as a wish before it’s fulfilled.

          If the counter is decremented only after the wish is fulfilled, then this means you can go back on wishes because they don’t count until they’re fulfilled, which goes against the lore.

          • wheezy@lemmy.ml
            link
            fedilink
            arrow-up
            4
            ·
            edit-2
            1 day ago

            Well, not entirely. There are cases for which a person utters the wish and it is not counted. “I wish for a million wishes!”

            The standard is for the genie to explain the exceptions but not count that as a wish.

            Now, it could decrement the count after this check. But just decrementing the count before verification would be sloppy.

            But, then again, basic verification would also include checking that wishes_remaining <= MAX_WISHES.

            Which, I think is a pretty standard check for genie’s. Given that that constant has remained at 3 since their beta days and exceptions are thrown for violations of this rule.

          • Khanzarate@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            1 day ago

            Nah theres just no process for undoing your submission.

            It doesn’t matter when it’s decremented if you can’t interrupt the process, anyway.

            In a code sense we pause for input, feed it to the wishmaker function, and pause until the thread returns, then decrement.

            We could decrement first, also, but neither violates the rules.