Use Rectangle class and intersect: method?



On Tue, Dec 4, 2018 at 5:07 PM Roelof Wobben <r.wob...@home.nl> wrote:

> Hello,
>
> For adventofCode I had to write some code that calculates the overlap that
> multiple rectangles have.
>
> Fo far I have it working for 1 rectangle but I do not like the code
> because of the nested loops.
>
> Can I make this more the pharo way
>
> Code so far :
>
> | item coordinates area overlap regexp line beginX endX beginY endY|
> area := OrderedCollection new.
> overlap := OrderedCollection new.
> regexp := '\#(\d+) @ (\d+),(\d+)\: (\d+)x(\d+)' asRegex.
> line := '#1 @ 1,3: 4x4'.
> (regexp matches: line)
>         ifTrue: [
>              beginX := (regexp subexpression: 2) asInteger + 1.
>              endX := (regexp subexpression: 5) asInteger + beginX  .
>              beginY := (regexp subexpression: 4) asInteger + 1.
>              endY := (regexp subexpression: 6) asInteger + beginY.
>              beginX  to: (endX - 1) do: [:a |
>                   beginY to: (endY -1)  do: [:b |
>                       item := a asString , '*' , b  asString .
>                    (area includes: item)
>                       ifTrue: [ overlap add: item ]
>                       ifFalse: [ area add: item ]]]] .
>  ^ area.
>
> Thanks,
>
> Roelof
>
>
>

Reply via email to