OK, so basically I was doing the rank wrong.   Thanks.  I wish I understood
verb rank well enough to understand why I was doing it wrong.  I was trying
to make a list of pages.  Basically, I was trying to make a rank 3 list of
rank 2 page images.  I could have made a vector of boxed images but they
were all the same.  Through trial and error I ended up initializing with

recordtables =: 0 0 0 $ ''

and adding pages with

recordtables =: recordtables,,: ((tabprint table),"1 (tabprint xtable))

but I get the feeling that if I really understood verb ranks I could do it
with fewer operators.  Maybe what I am doing is optimum.

On Sat, Dec 23, 2017 at 12:52 PM, Henry Rich <henryhr...@gmail.com> wrote:

> To modify acolumn:
>
> 97 98 99 (2})"0 1 i. 3 3
>
> 0 1 97
>
> 3 4 98
>
> 6 7 99
>
>
> Henry Rich
>
>
>
>
> On 12/23/2017 12:48 PM, Nick S wrote:
>
>> I have a 3d array that is the formatted output of a table. I capture
>> snapshots of it at different points in my processing, in a rank 3 array. I
>> want to flip between pages to see how the processing progresses.  I
>> thought
>> I would clear the screen, then display the output, that being one of the
>> stacked sheets.  Can someone point me in the right direction?  I have
>> researched this for hours and just can't find the right manual or google.
>>
>> Now, I manipulate this table column by column and row by row, Somewhere I
>> read that amend would update anything that from would fetch.  But I find
>> that to be wrong.
>>
>> I was able to fetch a row of my table with
>>
>>   buildline =: (<: | y){table
>>
>>
>> and a column with
>>
>>
>> buildline =: (y){"1 table
>>
>>
>> but
>>
>>
>> table =: bitvector (y)}"1 table
>>
>>
>> would not work.
>>
>> I can update a row with
>>
>>    table =: (accumand)(<: | y) } table
>>
>>
>> but the column is more difficult.  I came up with two approaches.  One way
>> was to transpose the table, update what was now a row, and then transpose
>> the result.
>>
>>
>> table =: |: (accumand) (y) } |:table
>>
>>
>> What I settled on was to build a boxed set of coordinates
>>
>>
>> table =: (accumand) (<(i.tsize);y) } table
>>
>>
>>
>> it probably does not matter for my application, we are talking, at the
>> largest, 20x20 boolean arrays.  I am wondering if I need to throw around
>> more data.
>>
>>
>>
>> (The above is the limit of my questions.)
>>
>> (y can be a zero or positive scalar, indicating a column, or a scalar from
>> -tsize to _1 - (generated with }:i: tsize) which indicates a row.
>>
>>
>> For further information, the program solves one of those solitare games
>> where you have a series of numbers, and you get numbers for every row and
>> every column.  Suppose that the numbers for column 1 were 8,3,4, this
>> regular expression would have to match:
>>
>>
>>
>>
>> ^0*1{8,8}0+1{3,3}0+1{4,4}0*$
>>
>>
>> Table size is fixed based on the puzzle, but can vary between 5 and 20.
>>
>>
>> Anyway, I did a lot of if. then. else. stuff because my first simple
>> version of the program took over 700 seconds to do one round of
>> calculations on a single row or column and the most rounds I have seen a
>> puzzle take is 17 iterations before it could place all the marks, and with
>> aggressive early pruning, I was able to get about 2 orders of magnitude
>> improvement.   I process 400 rows+columns in under 2 seconds.  If you have
>> a line where the numbers are, say, 1 1 1 1 1 1, it would generate
>> thousands
>> of potential solutions, which would result in naught if there were no
>> other
>> constraints - so I prune those cases - I don't process those lines until I
>> detect a constraint on that line because without a constraint I will not
>> learn anything.
>>
>>
>> On a personal note, I find that I can get obsessed with solitare games to
>> the exclusion of everything else I want to do.  It helps to break the
>> obsession if I write a solver.
>>
>>
>>
>>
>
>
> ---
> This email has been checked for viruses by AVG.
> http://www.avg.com
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm




-- 
Of course I can ride in the carpool lane, officer.  Jesus is my constant
companion.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to