Hi Daniel, there is a primer article on cut (using cut2) which may help you;
http://www.jsoftware.com/help/primer/cut.htm
The last example shows fixed width cuts using a boolean mask, so your same
example could be generated as so;
NB. This generates the fret as a boolean list
(i.42) e. +/\0,20 10 12
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0
NB. Now apply the fret to the data using the ‘cut’ conjunction and argument is
< (enclose)
((i.42) e. +/\0,20 10 12) <;.1 'John Smith WA 418-Y11-4111’
┌────────────────────┬──────────┬────────────┐
│John Smith │WA │418-Y11-4111│
└────────────────────┴──────────┴────────────┘
NB. Now use rank “1 to apply the function on vectors of the table argument (as
in your example)
((i.42) e. +/\0,20 10 12) <;.1"(1) 1 42$'John Smith WA 418-Y11-4111’ NB.
┌────────────────────┬──────────┬────────────┐
│John Smith │WA │418-Y11-4111│
└────────────────────┴──────────┴────────────┘
Hope this helps, Regards Rob
> On 17 Nov 2017, at 3:36 pm, Daniel Lyons <[email protected]> wrote:
>
> My problem is essentially to give an input file and the column widths and get
> it split up properly. I asked about it on the code review stack exchange
> site, but there doesn't seem to be much traffic there, so I figured maybe I
> could get a few eyes without annoying too many people reposting here.
>
> https://codereview.stackexchange.com/questions/180633/parsing-fixed-width-format-with-j
>
> <https://codereview.stackexchange.com/questions/180633/parsing-fixed-width-format-with-j>
>
> The solution I hacked up is this:
>
> parseFW =: dyad def '(+/ (0,+/\x) ="(0 1) i. (+/x)) <;.1 y'"(_ _1)
>
> Usage then looks like this:
>
> (20 10 12) parseFW 1 42 $ 'John Smith WA 418-Y11-4111'
>
> I find this works, at least for the simple cases I have thrown at it so far,
> but I can't help but feel there's too much happening here for something
> fairly simple. I know where the frets are the rest is just encoding them. In
> particular it felt like the inverse of I. should be helpful but I didn't get
> that working.
>
> If there's a library that does this, I'd probably rather use that, but I
> didn't see one at first blush.
>
> Input greatly appreciated! Thanks,
>
> --
> Daniel Lyons
>
>
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm