I meant to add … which is very close to what you derived.
The key is the generation of the fret, another way here, but the group may
suggest better phrases;
1(0,+/\}.20 10 12)}42$0
1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0
…/Regards Rob
> On 17 Nov 2017, at 4:03 pm, Rob Hodgkinson <[email protected]> wrote:
>
> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm