list - J: How to efficiently apply a verb to prefixes of suffixes? -
i have list
n =: i.3
and want have adverb a such u n applies u prefixes of suffixes of n:
<a n ┌─────────────┬───────┬───┐ │┌─┬───┬─────┐│┌─┬───┐│┌─┐│ ││0│0 1│0 1 2│││1│1 2│││2││ │└─┴───┴─────┘│└─┴───┘│└─┘│ └─────────────┴───────┴───┘
i've written sentence produces desirable result verb <:
([: <@]\&.> <@]\.) n ┌─────────────┬───────┬───┐ │┌─┬───┬─────┐│┌─┬───┐│┌─┐│ ││0│0 1│0 1 2│││1│1 2│││2││ │└─┴───┴─────┘│└─┴───┘│└─┘│ └─────────────┴───────┴───┘
but cannot how make adverb use verb.
i see approach problem:
=: \\. <a n ┌─┬───┬─────┐ │0│0 1│0 1 2│ ├─┼───┼─────┤ │1│1 2│ │ ├─┼───┼─────┤ │2│ │ │ └─┴───┴─────┘ ([: < (a: ~: ]) # ])"1(<a n) ┌─────────────┬───────┬───┐ │┌─┬───┬─────┐│┌─┬───┐│┌─┐│ ││0│0 1│0 1 2│││1│1 2│││2││ │└─┴───┴─────┘│└─┴───┘│└─┘│ └─────────────┴───────┴───┘
but written <, , maybe not efficient. , still cannot how make adverb.
it better if can following result:
<a n ┌─┬───┬─────┬─┬───┬─┐ │0│0 1│0 1 2│1│1 2│2│ └─┴───┴─────┴─┴───┴─┘
for example:
(10&#.)a n 0 1 12 1 12 2
help me please. in advance.
there (almost) adverb this. it's spread (s:
) want apply level 0
.
e.g.
<\ each <\. n ┌─────────────┬───────┬───┐ │┌─┬───┬─────┐│┌─┬───┐│┌─┐│ ││0│0 1│0 1 2│││1│1 2│││2││ │└─┴───┴─────┘│└─┴───┘│└─┘│ └─────────────┴───────┴───┘ < s:0 <\ each <\. n ┌─┬───┬─────┬─┬───┬─┐ │0│0 1│0 1 2│1│1 2│2│ └─┴───┴─────┴─┴───┴─┘ +/ s:0 <\ each <\. n 0 1 3 1 3 2 (10&#.) s:0 <\ each <\. n 0 1 12 1 12 2
in other words, a
this:
a =: 1 :'u s: 0 ([: <\&.><\.) y'
(edit) or, @tikkanz says in comments below, can avoid s:
, use more efficient:
a=: 1 : ';@([: u\&.> <@]\.)'
or
a=: 1 : ';@(<@(u\)\.)'
Comments
Post a Comment