dyadic ;. is your usual friend in these cases. Though Raul has often found
even more elegant approaches.
a: (-.@= <;.1 ] )'Hi';'';'';'Ho';'';'hee';'';'';'haw';'';'';'Yo';''
┌──────┬─────┬───────┬───────┬─────┐
│┌──┬┬┐│┌──┬┐│┌───┬┬┐│┌───┬┬┐│┌──┬┐│
││Hi│││││Ho││││hee│││││haw│││││Yo│││
│└──┴┴┘│└──┴┘│└───┴┴┘│└───┴┴┘│└──┴┘│
└──────┴─────┴───────┴───────┴─────┘
; (# # {. )each a: (-.@= <;.1 ]
)'Hi';'';'';'Ho';'';'hee';'';'';'haw';'';'';'Yo';''
┌──┬──┬──┬──┬──┬───┬───┬───┬───┬───┬───┬──┬──┐
│Hi│Hi│Hi│Ho│Ho│hee│hee│hee│haw│haw│haw│Yo│Yo│
└──┴──┴──┴──┴──┴───┴───┴───┴───┴───┴───┴──┴──┘
its a bit more complicated with possible leading blank: (this still works
without leading blank)
; (# # {. ) each a: (] <;.1~ 1 (0}) -.@=
)'';'Hi';'';'';'Ho';'';'hee';'';'';'haw';'';'';'Yo';''
┌┬──┬──┬──┬──┬──┬───┬───┬───┬───┬───┬───┬──┬──┐
││Hi│Hi│Hi│Ho│Ho│hee│hee│hee│haw│haw│haw│Yo│Yo│
└┴──┴──┴──┴──┴──┴───┴───┴───┴───┴───┴───┴──┴──┘
----- Original Message -----
From: Devon McCormick <[email protected]>
To: J-programming forum <[email protected]>
Cc:
Sent: Monday, January 5, 2015 11:06 AM
Subject: [Jprogramming] Forward fill w/o looping
I just threw together a short J solution that does what I want but it uses
a loop and a conditional. I'm thinking there's got to be some kind of
loopless prefix sort of solution but am at a loss to come up with it.
My code looks like this:
fillEmptyFwd=: 3 : 0
for_ix. i.<:#y do.
if. 0=#>y{~>:ix do. y=. (ix{y) (>:ix)}y end.
end.
y
)
An example usage would be this:
fillEmptyFwd '';'Hi';'';'';'Ho';'';'hee';'';'';'haw';'';'';'Yo';''
++--+--+--+--+--+---+---+---+---+---+---+--+--+
||Hi|Hi|Hi|Ho|Ho|hee|hee|hee|haw|haw|haw|Yo|Yo|
++--+--+--+--+--+---+---+---+---+---+---+--+--+
Any ideas on something less loopy/conditional?
--
Devon McCormick, CFA
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm