For more than 3, then every missed second should be filled with the last number.

t=: 1 2 7 8
v=: 10 20 90 100

newv: 10 20 [20 20 20 20] 90 10

On Thu, Nov 22, 2012 at 12:34 AM, Raul Miller <[email protected]> wrote:
> Yes?
>
> I was asking what the behavior should be for cases when <: 2 -~/\ t
> contained values other than 0, 1, 2 or 3.
>
> Thanks,
>
> --
> Raul
>
> On Tue, Nov 20, 2012 at 4:07 PM, Alexander Epifanov <[email protected]> wrote:
>>    t,:v
>> 1.26 3.78 6.3 10.08 11.34 12.6 13.86 15.12 16.38 17.64
>>    0   20  40    60    80  100   525   321   248   259
>>
>>    wat
>> 4 : 0
>>   ctl=. 0,~ _1+(}.-}:) x
>>   avg=. 0,~ 0.5 * (}.+}:) y
>>   ins=. ctl #&.> (2 < ctl) {"_1 avg,.y
>>   ;}:,y;"0 ins
>> )
>>    t wat v
>> |domain error: wat
>> |   ins=.ctl    #&.>(2<ctl){"_1 avg,.y
>>
>> On Tue, Nov 20, 2012 at 9:06 PM, Raul Miller <[email protected]> wrote:
>>> On Mon, Nov 19, 2012 at 5:38 PM, Alexander Epifanov <[email protected]> 
>>> wrote:
>>>> Unfortunately cannot resolve problem, which could be easy resolved with 
>>>> loop:
>>>> t=: 1 3 6 10 11 12
>>>> v=: 0 20 40 60 80 100
>>>>
>>>> i=:   _1+(}.-}:) t
>>>> i NB. its just distance between numbers
>>>> 1 2 3 0 0 0
>>>>
>>>> And now the main problem for me, because I have to modify v array:
>>>> if i = 0 then nothing
>>>> if i = 1 or i = 2 then insert average value (for 1) and two values for 2
>>>> if i = 3 then insert previous value
>>>
>>> This specification seems odd.  What if i contains some other value?  I
>>> am going to assume that values greater than 3 will be given the same
>>> treatment as values where you need 3 copies, and that negative values
>>> will not appear in i
>>>
>>>> so, we have to fill missed values in t and v:
>>>> t=: 1   3   6 10 11  12
>>>> v=: 0 20 40 60 80 100
>>>>
>>>> should be:
>>>> t2: 1   2   3   4  5   6   7  8   9 10 11 12 (ok, its just full index now)
>>>> v2: 0 10 20 30 30 40 40 40 40 60 80 100
>>>> ^ inserted by condition: 10; 30 30; 40 40 40
>>>>
>>>> Could you please help how to resolve it better? I suppose I can rotate
>>>> |:t,:v and then fold it one-by-one, but I think it is not good
>>>> solution.
>>>
>>> I am not sure if this is better, but it meets the specifications you
>>> have provided:
>>>
>>> wat=:  4 :0
>>>   ctl=. 0,~ _1+(}.-}:) x
>>>   avg=. 0,~ 0.5 * (}.+}:) y
>>>   ins=. ctl #&.> (2 < ctl) {"_1 avg,.y
>>>   ;}:,y;"0 ins
>>> )
>>>
>>>    t wat v
>>> 0 10 20 30 30 40 40 40 40 60 80 100
>>>
>>> --
>>> Raul
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>>
>>
>> --
>> Regards,
>>   Alexander.
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm



-- 
Regards,
  Alexander.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to