I had a very short look at Roger's Sudoku solver

http://www.jsoftware.com/jwiki/Essays/Sudoku


I made a sudoku solver some years ago, in Pascal, before I knew J. The sudoku 
was represented by an array of shape 3 3 3 3 rather than of shape 9 9. This has 
the advantage that not only rows and columns, but also the boxes, are 
represented as sub-arrays.



>________________________________
> Fra: Graham Parkhouse <graham.parkho...@ntlworld.com>
>Til: programm...@jsoftware.com 
>Sendt: 0:49 torsdag den 31. januar 2013
>Emne: [Jprogramming] Explicit v tacit
> 
>Kip Murray wrote:
>
>Message: 6
>Date: Fri, 25 Jan 2013 20:31:56 -0600
>From: km <k...@math.uh.edu>
>To: "programm...@jsoftware.com" <programm...@jsoftware.com>
>Subject: Re: [Jprogramming] applying >1 gerunds to a set of items
>Message-ID: <eb35aa7d-a7d9-4f51-b885-624b78c52...@math.uh.edu>
>Content-Type: text/plain;    charset=utf-8
>
>Dan, most of the code in the z locale is explicit.  What is the fundamental
>value of explicit code?
>
>-------------------------------
>
>I have been studying Roger's Sudoku solver
>
>http://www.jsoftware.com/jwiki/Essays/Sudoku
>
>after attempting my own solver. Mine was going OK, on the very easy
>problems, but, even with guessing, it ground to a standstill on a supposedly
>not very difficult one. So, rather than soldier on I studied Roger's code,
>and learned a lot. His use of nub sieve (~:) to check the uniqueness of
>numbers within regions was beautiful. Now that I'm impressed by the
>usefulness of this primitive, I hope I shall use it appropriately in the
>future.
>
>It seems to me that Roger used tacit code where practicable. He used the
>rank conjunction judiciously. The 'main' function, sudoku, is a one-liner of
>immense beauty, embodying two mighty loops and comprehensive stack
>management in 11 words. By adding @ , to the end of the sentence he blocks
>the possibility of solving any number of Sudoku puzzles at once! Had he left
>them off, the right argument could have been a matrix of n problems, with
>shape n by 81.
>
>I have gleaned from this forum that it is generally better, efficiency-wise,
>for explicit verbs to have large rank. If the arguments have much higher
>rank than the verb, the frame is big, and the verb has to be interpreted
>many times each single time it is called. Am I right in thinking that this
>is not the case for tacit code? Doesn't the tacit code get interpreted once,
>when the script is loaded? If this is so there are many situations where
>tacit code is considerably quicker in execution than the equivalent explicit
>code.
>
>I was severely challenged by tacit code when I first moved to J from APL. I
>used to think in terms of nouns, visualising the characteristics of the data
>as it was transformed by each step of the calculation. I was happy to
>'write' functions and give them names, but to have one-liner assignments to
>verbs instead of nouns as my preferred way of thinking, has taken years.
>Roger has a one-liner for the verb ok. My old mindset would reserve ok as
>the name for a noun, and it would be either 0 or 1! Notice how much more
>content there is in a verb ok that returns 0 or 1, content that doesn't vary
>with the data.
>
>Thank you, all, for the experience.
>
>Graham
>
>
>----------------------------------------------------------------------
>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