Well done!  Day 13 has been unlucky for me; still floundering around,  not even 
managing to solve the example.  

Anyway,  I also always try to solve the example first,  if I can.  One, perhaps 
two, of the earlier problems did have a feature that didn't appear in the 
example, though.  The knotted bridge-rope puzzle,  for example,  didn't 
explicitly mention how to move the tail if the head was two away diagonally,  
so I hadn't set that move up in a lookup table. Much bewilderment!

Sorry,  too chatty for programming...

Cheers,

Mike

Sent from my iPad

> On 14 Dec 2022, at 17:32, Raul Miller <rauldmil...@gmail.com> wrote:
> 
> On Wed, Dec 14, 2022 at 2:26 AM Jaume <greenni...@gmail.com> wrote:
>> Because somewhere in there something broke and on the phone I have the
>> wrong answer for part 1.
> 
> Yes... generally it's easier to debug if you have a much smaller 
> implementation.
> 
> It's also a *lot* easier if you write your code so that you can test
> against the sample data posted in the puzzle description.
> 
> (I always set up two values, one represents the input.txt dataset, the
> other represents the sample data. If the puzzle has several sets of
> sample data, I add additional variables holding each of those values.
> This way, I can test my code, and see that it generates the right
> result for the test case(s) they provide.)
> 
> So in my puzzle implementation, I have something like this:
> 
> input=: fread '~/Downloads/input.txt'
> 
> sample=: {{)n
> [1,1,3,1,1]
> [1,1,5,1,1]
> 
> [[1],[2,3,4]]
> [[1],4]
> }}
> 
> Of course, my sample value is longer than that -- 23 lines instead of
> five lines, but this should give you an idea.
> 
> Also... for what it's worth, here's an example of how you might parse
> the data set for that puzzle:
> 
> with=: ,&boxxopen&.>
> rpl=: rplc <@rplc&('\n';LF;'\$';EAV);._2
> xlate=: rpl&'with )/)/'@rpl&'[/(<a:with /]/)/,/ with /\n\n/\n\$/'
> parse=: {{".;._2;._2 xlate y,LF }}
> 
> Here, with the above definition of sample, the phrase parse sample
> would give me a 2 row 2 column matrix. With the full sample dataset
> from the website, it would give me an 8 row matrix (still 2 columns
> wide).
> 
> You can get an idea of what's happening here using xlate on the text
> of the sample. Here's a short form:
> 
>   xlate '[1,1,3,1,1]'
> (<a:with 1 with 1 with 3 with 1 with 1)
> 
> That's a sentence which can be executed:
>   (<a:with 1 with 1 with 3 with 1 with 1)
> +-------------+
> |+-----------+|
> ||+-+-+-+-+-+||
> |||1|1|3|1|1|||
> ||+-+-+-+-+-+||
> |+-----------+|
> +-------------+
> 
> 
> In other words, each bracket pair in the original becomes a
> parenthesis pair, with the text in between changed so that it will
> give a J representation of the described data structure. There's an
> extra unnecessary level of nesting in the result, but that's not
> really a problem.
> 
> For part A, my solution looks like
> 
> A=: {{+/1+I.1=,compare/"1 parse y}}
> 
> And, with the full sample from the web site:
> 
>   A sample
> 13
> 
> So, in my implementation I have down at the bottom
> 
> assert 13=A sample
> 
> So I can immediately confirm, when loading the script, whether I've
> made any major mistakes. (And I frequently make mistakes, so that's a
> great time saver.)
> 
> (Also... my compare is rather small., though hypothetically speaking
> it could be much smaller if I used a different parser. In my compare,
> I used nested if statements and recursion to compare. However,
> conceptually, if I had parsed the text of the problem differently --
> forcing each number to be nested to the same depth, for example, I
> might be able to use J's built-in sort instead -- see
> https://www.jsoftware.com/papers/TAOaxioms.htm for more details on why
> it might be possible to use, for example, the lt and gt from
> https://code.jsoftware.com/wiki/Essays/The_TAO_of_J to define
> compare=: lt - gt)
> 
> FYI,
> 
> -- 
> Raul
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to