• silasmariner@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    3 months ago

    They missed out the context code:

    trait DoW { def length: FiniteDuration }
    object Monday extends DoW { override def length = 24.hours }
    ...
    implicit def toDoW(s: String): DoW = s match {
     case "Monday" => Monday
    ...
    }
    var day: DoW = _
    

    (Duration formatting and language identification are left as an exercise for the reader)

  • treechicken@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    It’s obviously:

    Traceback (most recent call last): File “./main.py”, line 2, in <module> AttributeError: ‘str’ object has no attribute ‘length’

  • lthlnkso@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    I think this is a good question and answer in the sense that it reveals a fundamental misunderstanding on the part of the student - exactly what you hope an exam would do! (Except for how this seems to combine javascript’s .length and python’s print statement - maybe there is a language like this though - or ‘print’ was a javascript function defined elsewhere).

    This reminds me once of when I was a TA in a computer science course in the computer lab. Students were working on a “connect 4” game - drop a token in a column, try to connect 4. A student asked me, while writing the drop function, if he would have to write code to ensure that the token “fell” to bottom of the board, or if the computer would understand what it was trying to do. Excellent question! Because the question connects to a huge misunderstanding that the answer has a chance to correct.

    • potustheplant@feddit.nl
      link
      fedilink
      arrow-up
      0
      ·
      3 months ago

      Not really, no. That would be the answer if x= len(day). The code in the image would just throw an error.

  • stoly@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    I wonder if day length is given separately in a table prior to the question? I’m not sure what they wanted except maybe seconds?

      • r00ty@kbin.life
        link
        fedilink
        arrow-up
        0
        ·
        3 months ago

        I’m not really a fan of this kind of question. Especially if there’s enough questions that time will be an issue for most. Because at first glance it’s easy to think the answer might be the length of a day.

        There shouldn’t be a need to try to trick people into the wrong answer on an open question. Maybe with multiple choice but not an open answer question.

        • RagingRobot@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          3 months ago

          I get your point about it being a trick question but I think in this case it’s pretty reasonable that you would see code like this in real life. Where the programming metaphor and your understanding of the real world clash. It’s a very important skill to be able to spot the difference.

          • onlinepersona@programming.dev
            link
            fedilink
            English
            arrow-up
            0
            ·
            3 months ago

            The compiler or interpreter does that for you. There’s no point in these “gotcha’s”. They are cute brain teasers that belong on those useless “are you a programmer” quizzes you find on random meme websites, not an exam.

            CC BY-NC-SA 4.0

            • RagingRobot@lemmy.world
              link
              fedilink
              arrow-up
              0
              ·
              edit-2
              3 months ago

              In the error shown a compiler would be just fine and run as usual but the person programming it would be expecting a different result so a compiler wouldn’t do this for you since it’s a logical error and not a syntax error.

              • onlinepersona@programming.dev
                link
                fedilink
                English
                arrow-up
                0
                ·
                3 months ago

                If it’s a statically typed language and x is of type Date, it’s for sure throw a type error when trying to assign a string to it. If it had autoboxing / auto type conversion from String to Date, length could return a number or a string.

                If this were Javascript on NodeJS, it would fail at print(x) because that doesn’t exist in JS. If it were Python it would fail at x.length because that has to be len(x). And so on.

                If this were all to pass, at the latest at runtime, when the programmer sees the output “6”, they would know something’s up.

                As I said, cute, but worthless test.

                CC BY-NC-SA 4.0