logoalt Hacker News

1123581321345512/09/20241 replyview on HN

  things.every(thing => thing.type == 'hat' && thing.color == 'green')
now negating this gives:

  things.some(things => thing.type != 'hat' || thing.color != 'green')
So liar has something that is not a hat OR has something that is not green

So only "E) The liar has no green hats" is true


Replies

brianush112/09/2024

Your initial translation into JavaScript is a representation of the statement "All my things are green hats", which is not the same as "All my hats are green."

The statement "All my hats are green" would map to

    things.every(thing => thing.type != 'hat' || thing.color == 'green')
i.e., everything the person owns must either be green or, if it isn't green, it must not be a hat since all hats are green.

The negated form would then be

    things.some(thing => thing.type == 'hat' && thing.color != 'green')
i.e., there are some hats that are not green.