[HN Gopher] Split the States (2021)
___________________________________________________________________
Split the States (2021)
Author : tosh
Score : 50 points
Date : 2022-03-03 17:05 UTC (5 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| anonymous_they wrote:
| Not sure if it's just me, but I'm getting really weird rendering
| bugs when I visit this link.
|
| Maybe GitHub's rendering of ipynb files?
| jayspell wrote:
| Is this just an exercise?
| hirundo wrote:
| It's a puzzle:
|
| "Welcome to The Riddler. Every week, I offer up problems
| related to the things we hold dear around here: math, logic and
| probability."
| onychomys wrote:
| The accepted answer from 538 can be found here:
| https://fivethirtyeight.com/features/can-you-bowl-three-stri...
| biorach wrote:
| I've read a lot of code. Peter Norvig's code operates at a
| different level to anything else I've ever read.
|
| And he's been doing this a long time. I've read part of the way
| through "Paradigms of Artificial Intelligence Programming" which
| is from 1991, and uses much the same approach as in the OP, but
| with Common Lisp.
| wodenokoto wrote:
| I'm not sure I understand how the `border` variable works.
|
| Sets in Python are really cool when you can master them, but I do
| sometimes wonder if they are too clever, or just not evangelized
| enough.
| dec0dedab0de wrote:
| when you pipe a set it's the same thing as calling union on
| each one, it creates a new set and puts all the variables in
| them:
|
| so this: border = north | south | west | east
|
| is the same thing as: border =
| north.union(south, west, east)
|
| which is also: border = set() for
| border_set in [north, south, west, east]: for state in
| border_set: border.add(state)
|
| it's just a new set with all the previous items in it. Since
| it's a set there is no doubles. for example, WA is in north and
| east, but only in border once, because there is no duplicates
| in a set.
|
| to do it with lists you would need to make sure there was no
| doubles yourself. plus you wouldn't get the set operations
| later on, and would need similar loops to check things.
| border = [] for state in north + south + west + east:
| if state not in border: border.append(state)
|
| Sets are great any time you need to work with groups of unique
| things and see how they relate to each other. Since there is
| only one of each state, this is perfect use for them.
|
| edits throughout as I thought of other things.
| wodenokoto wrote:
| I've never thought of that operation as shell pipes, but
| always as an "or" operator.
| dec0dedab0de wrote:
| I just call the character a pipe, It's actually a "bitwise
| or". i think the reasoning is that it looks at each item in
| the two sets being compared and returns it if it is in
| either or both of the sets. Which functionally is the same
| thing as creating a union.
|
| I usually avoid using bitwise operators because they get
| confusing, and the kind of stuff my team does rarely needs
| them. In this case I would have used union.
|
| edit: here are some of the docs
|
| Bitwise operators:
| https://wiki.python.org/moin/BitwiseOperators
|
| and how they work with sets: https://docs.python.org/3.10/t
| utorial/datastructures.html#se...
|
| Plus the set docs have the methods with their corresponding
| operator:
| https://docs.python.org/3.10/library/stdtypes.html#set
|
| I can see how it would be nice and concise, but I think the
| methods are easier to understand.
| williamdclt wrote:
| If sets were a Python-only thing I'd say that it's too clever,
| but it's a concept that appears in many other environments:
| Typescript (unions), Datalog and other declarative logic
| languages, Haskell (I think) and other functional languages...
|
| So python is implementing an existing paradigm, not trying to
| be clever inventing something new. I'm happy with that
| dec0dedab0de wrote:
| it's actually much older than that.
|
| https://en.wikipedia.org/wiki/Set_theory
| charleskinbote wrote:
| This reminds me of balanced graph partitioning, where the graph
| is planar and its the nodes that have weights instead of the
| edges.
| harperlee wrote:
| I quite like the chirurgical, strategic feel of the exposition.
| Denotes clear thinking, and/or multiple revisions.
|
| When I work in some code I often spend too much time on reviewing
| and enhancing code in this way, but mine being a side project all
| that work (I'm not the best programmer by far) is either for
| future me or for no one, and often I end up feeling that I lost
| time for nothing.
|
| But I like to spend time in making this kind of clean code
| {shrug}.
| adolph wrote:
| chirurgical [ ki-rur'ji-k@l ] adj. Surgical. No longer in
| technical use.
| avnigo wrote:
| It's from the Greek kheirourgia, compound word for hand-work,
| which nowadays is synonymous to surgery.
|
| https://en.wiktionary.org/wiki/%CF%87%CE%B5%CE%B9%CF%81%CE%B.
| ..
| rsrsrs86 wrote:
| In Portuguese: Cirurgico
| harperlee wrote:
| Yeah, sorry, still used in spanish, my mother tongue. My bad!
| jwkane wrote:
| don't apologize for using a great word. :)
| tosh wrote:
| in German also "chirurgisch"
|
| https://en.wiktionary.org/wiki/chirurgisch
| govg wrote:
| It's also used (at the very least) by the Indian Medical
| education system to denote a higher degree in surgery,
| called the M. Ch.
| codetrotter wrote:
| The Norwegian name for it is very similar. Kirurgisk :)
| serverlessmom wrote:
| wow nice solution, saw this on 538 and couldn't think of any
| clever solution.
| d_burfoot wrote:
| I was really hoping this was a political manifesto, not a
| programming puzzle
| karolsputo wrote:
| Me too! I was surprised at the title, fully expecting Norvig to
| channel Michael Malice and talk about splitting the US.
| [deleted]
| [deleted]
| jmclnx wrote:
| The image cannot be dispalied. I wish github only allowed Open
| Image Formats, but too late now since Microsoft owns them.
|
| Lately I have been running into image/video files people at work
| create on their MACs that cannot be viewed in Linux. I wonder if
| that crap is carrying ofer into github.
| enobrev wrote:
| In this case, it's not a matter of image formats, but simply a
| 404.
|
| https://github.com/norvig/pytudes/raw/5e745c392772d150b41462...
|
| Here's map4.png:
| https://github.com/norvig/pytudes/blob/main/ipynb/map4.png
|
| There doesn't seem to be a 5 or 6.
___________________________________________________________________
(page generated 2022-03-03 23:00 UTC)