Glancing at the thread, I think that there may be some confusion between 
what JfC calls 'verb fills' and 'framing fills'.

{.!.n   produces fills with value m whenever it does an overtake.  these 
are verb fills.

Framing fills are fills that the interpreter has to add to make results 
conform in size.  These are always 0 for numeric results and are not 
affected by !.n  .

There is no way to change the framing fill.

Henry Rich



On 9/25/2011 3:06 AM, bill lam wrote:
> No idea on the problem or forgotten.
>
> conjunction binds to the left so that you need brackets, eg.
>     5&({.!.1) /. (5 5 $i. 25)
>
> or if you are only interested in the product, it might be
>
>         *//. (5 5 $i. 25)
>
> Вск, 25 Сен 2011, Nick Simicich писал(а):
>> I'm working on euler 11 from projecteuler.org.  I got the answer by doing
>> something really crummy, and I decided to go back and do proper code for the
>> diagonals.  The problem is to take the greatest product of four consecutive
>> numbers in a 20 by 20 array where the possibilities are rows, columns and
>> diagonals.
>>
>> Rows and columns are trivial, and now that I understand that /. does not
>> only take the longest diagonal the diagonals are not much harder.
>>
>> Because this is a product, I wanted to use a 1 fill.
>>
>> a is a 20 by 20 array of small numbers.
>>
>> My first attempt was to box the diagonals, and then fill them, the unbox
>> them and then do my product on the crosswise bits, and then take the max,
>> so
>>
>>> ./(,4 */\ a) ,(,4 */\ |:a) ,(,4*/\"1>  20{.!.1 L:_1</.a),(,4*/\"1>
>> 20{.!.1 L:_1</.|:a)
>>
>> I transpose the array to get the other diagonals, and do it again so that I
>> can do the horizontals and verticals.
>>
>> I used a box for the diagonals because my thought was that they were all
>> different lengths, so they needed to be boxed. Once I fixed them to be
>> conformant, I could unbox them.
>>
>> Then I looked and determined that I could get an array with the diagonals on
>> the lines as:
>>
>> 20&{. /.aa
>>
>> And this gives (the small, forum appropriate version):
>>    5&{. /. (5 5 $i. 25)
>>   0  0  0  0  0
>>   1  5  0  0  0
>>   2  6 10  0  0
>>   3  7 11 15  0
>>   4  8 12 16 20
>>   9 13 17 21  0
>> 14 18 22  0  0
>> 19 23  0  0  0
>> 24  0  0  0  0
>>
>> But because it is a product, I need a 1 fill.  I am using a 1 fill with take
>> above, when I am taking from the lines individually.
>>
>>    5&{.!.1 /. (5 5 $i. 25)
>> |domain error
>> |       5&{.!.1/.(5 5$i.25)
>>
>> I could not, at first, figure out why the domain error was occuring.  Take
>> should fix the length of the line no matter what the length of the incoming
>> line.
>>
>> Then I thought, suppose it is calculating a number of things to add to the
>> vector, and the second vector it tries to finesse the calculation, using the
>> same value to produce a line, and then having a domain error when that value
>> of pad produces an unsquare array.  What if I change the rank of the verb to
>> try and get it, say, not to run on all of the lines produced by /. at the
>> same time, but instead to run on each line?  So I tried a few different
>> values for the rank.
>>
>>    (5&{.!.1)"_1 /. (5 5 $i. 25)
>> |domain error
>>
>> I won't bore you by repeating this, but that theory simply didn't work. I
>> could not get the verb to stop reporting an error.
>>
>> 0+/. a builds me a zero filled array that looks exactly like 20{. .  Can't
>> use 1+ or a verb with a test assuming I could get it to work (usually can't,
>> I'm new to this) because there are zeros in the array that I think I have to
>> leave alone.
>>
>> Maybe the real problem is that the fill is not coming from where I expect it
>> to come from. But I think they come from the take verb when I do 20{.
>> /. aand well, this is interesting:
>>
>>   (#,5&{.) /. (5 5 $i. 25)
>> 1  0  0  0  0  0
>> 2  1  5  0  0  0
>> 3  2  6 10  0  0
>> 4  3  7 11 15  0
>> 5  4  8 12 16 20
>> 4  9 13 17 21  0
>> 3 14 18 22  0  0
>> 2 19 23  0  0  0
>> 1 24  0  0  0  0
>>
>>
>> so the lines are clearly not being padded before the verb is called.
>>
>> and, um-- well, I think I just don't understand things more complex, it
>> implies that if I can derive the length I should be able to prepend
>> (5-#L$1), instead of hash but I always get hung in anything complex.
>>
>> Is this a bug or a feecher?  Other than boxing it, is there a way to code
>> it?  Am I just missing how to do it?
>>
>>
>>
>>
>>
>> --
>> 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
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to