⍝ Generalised iota

    ⎕io←1                           ⍝ index origin.

    iotag 5                         ⍝ Positive Integer
1 2 3 4 5
    iotag ¯3                        ⍝ Negative Integer
¯1 ¯2 ¯3
    iotag 'D'                       ⍝ Uppercase Character
ABCD
    iotag 'g'                       ⍝ Lowercase Character
abcdefg
    iotag 'Ò'                       ⍝ Underscore Character
ÁÂÃÇÈÊËÌÍÎÏÐÒ
    iotag '7'                       ⍝ Digit
01234567
    iotag 'Z'                       ⍝ Equivalent to ⎕A
ABCDEFGHIJKLMNOPQRSTUVWXYZ
    iotag 'z'                       ⍝ Solves problem of ⎕a not being lower case.
abcdefghijklmnopqrstuvwxyz
    iotag 'õ'                       ⍝ Equivalent to ⎕Á
ÁÂÃÇÈÊËÌÍÎÏÐÒÓÔÕÙÚÛÝþãìðòõ
    iotag '9'                       ⍝ Equivalent to ⎕D
0123456789
    iotag 2 3
┌───┬───┬───┐
│1 1│1 2│1 3│
├───┼───┼───┤
│2 1│2 2│2 3│
└───┴───┴───┘
    iotag 2 ¯3
┌────┬────┬────┐
│1 ¯1│1 ¯2│1 ¯3│
├────┼────┼────┤
│2 ¯1│2 ¯2│2 ¯3│
└────┴────┴────┘
    iotag 'C5'
┌──┬──┬──┬──┬──┬──┐
│A0│A1│A2│A3│A4│A5│
├──┼──┼──┼──┼──┼──┤
│B0│B1│B2│B3│B4│B5│
├──┼──┼──┼──┼──┼──┤
│C0│C1│C2│C3│C4│C5│
└──┴──┴──┴──┴──┴──┘
     iotag 'BC'
┌──┬──┬──┐
│AA│AB│AC│
├──┼──┼──┤
│BA│BB│BC│
└──┴──┴──┘
    'C' iotag 'F'                   ⍝ Alphabetic Interval
CDEF
    'm' iotag 'r'                   ⍝ Lowercase interval
mnopqr
    'Â' iotag 'Ó'                   ⍝ Underscore interval
ÂÃÇÈÊËÌÍÎÏÐÒÓ
    'P' iotag 'L'                   ⍝ Reverse interval
PONML
    'a' iotag 'F'                   ⍝ ⎕AV Interval
abcdefghijklmnopqrstuvwxyz¯.⍬0123456789⊢¥$£¢∆ABCDEF
    3 iotag 7                       ⍝ Numeric interval (scalar left arg)
3 4 5 6 7
    12 iotag 5                      ⍝ Reverse numeric interval
12 11 10 9 8 7 6 5
    3 iotag 5 .5                    ⍝ Interval with step size
3 3.5 4 4.5 5
    12 iotag 3 3                    ⍝ Reverse interval with step size
12 9 6 3
    ¯5 iotag 6                      ⍝ Negative numbers OK
¯5 ¯4 ¯3 ¯2 ¯1 0 1 2 3 4 5 6
    'ABCDE' iotag 'B'               ⍝ Index of
2
    Beatles←4 6⍴'JOHN  PAUL  GEORGERINGO '      ⍝ Character matrix
    APLers←4 5⍴'STEVEPAUL JOHN PETE '           ⍝ List of names
    Names←4 6⍴'PAUL  STEVE BILL  GEORGE'
    Beatles APLers Names                        ⍝ Show Matrices
┌──────┬─────┬──────┐
│JOHN  │STEVE│PAUL  │
│PAUL  │PAUL │STEVE │
│GEORGE│JOHN │BILL  │
│RINGO │PETE │GEORGE│
└──────┴─────┴──────┘
    APLers iotag 'STEVE'            ⍝ Find name
1
    APLers iotag 'STEVE'            ⍝ Find name
1
    APLers iotag 'STEVE '           ⍝ Ignores trailing blanks
1
    APLers iotag Beatles            ⍝ Two matrices
3 2 5 5
    'PETE' iotag 'PETE'             ⍝ Vector left argument
1 2 3 2

    Rank3←↑APLers Beatles           ⍝ Rank 3 Array
    Rank3 iotag Beatles             ⍝ Find matrix in Rank-3 array
2
    Beatles iotag Rank3             ⍝ Find Vectors in matrix
5 2 1 5
1 2 3 4
    Rank3 iotag ↑Beatles Names
2 3

    ⎕io←0                           ⍝ try with origin 0

    iotag 3
0 1 2
    iotag ¯3
0 ¯1 ¯2
       iotag 'D'                       ⍝ Uppercase Character
ABCD
    iotag 'g'                       ⍝ Lowercase Character
abcdefg
    iotag 'Ò'                       ⍝ Underscore Character
ÁÂÃÇÈÊËÌÍÎÏÐÒ
    iotag '7'                       ⍝ Digit
01234567
    iotag 'Z'                       ⍝ Equivalent to ⎕A
ABCDEFGHIJKLMNOPQRSTUVWXYZ
    iotag 'z'                       ⍝ Solves problem of ⎕a not being lower case.
abcdefghijklmnopqrstuvwxyz
    iotag 'õ'                       ⍝ Equivalent to ⎕Á
ÁÂÃÇÈÊËÌÍÎÏÐÒÓÔÕÙÚÛÝþãìðòõ
    iotag '9'                       ⍝ Equivalent to ⎕D
0123456789
    iotag 2 3
┌───┬───┬───┐
│0 0│0 1│0 2│
├───┼───┼───┤
│1 0│1 1│1 2│
└───┴───┴───┘
    iotag 2 ¯3
┌───┬────┬────┐
│0 0│0 ¯1│0 ¯2│
├───┼────┼────┤
│1 0│1 ¯1│1 ¯2│
└───┴────┴────┘
    iotag 'C5'
┌──┬──┬──┬──┬──┬──┐
│A0│A1│A2│A3│A4│A5│
├──┼──┼──┼──┼──┼──┤
│B0│B1│B2│B3│B4│B5│
├──┼──┼──┼──┼──┼──┤
│C0│C1│C2│C3│C4│C5│
└──┴──┴──┴──┴──┴──┘
    'C' iotag 'F'                   ⍝ Alphabetic Interval
CDEF
    'm' iotag 'r'                   ⍝ Lowercase interval
mnopqr
    'Â' iotag 'Ó'                   ⍝ Underscore interval
ÂÃÇÈÊËÌÍÎÏÐÒÓ
    'P' iotag 'L'                   ⍝ Reverse interval
PONML
    'a' iotag 'F'                   ⍝ ⎕AV Interval
abcdefghijklmnopqrstuvwxyz¯.⍬0123456789⊢¥$£¢∆ABCDEF
    3 iotag 7                       ⍝ Numeric interval (scalar left arg)
3 4 5 6 7
    12 iotag 5                      ⍝ Reverse numeric interval
12 11 10 9 8 7 6 5
    3 iotag 5 .5                    ⍝ Interval with step size
3 3.5 4 4.5 5
    12 iotag 3 3                    ⍝ Reverse interval with step size
12 9 6 3
    ¯5 iotag 6                      ⍝ Negative numbers OK
¯5 ¯4 ¯3 ¯2 ¯1 0 1 2 3 4 5 6
    'ABCDE' iotag 'B'               ⍝ Index of
1
    Beatles←4 6⍴'JOHN  PAUL  GEORGERINGO '      ⍝ Character matrix
    APLers←4 5⍴'STEVEPAUL JOHN PETE '           ⍝ List of names
    Names←4 6⍴'PAUL  STEVE BILL  GEORGE'
    Beatles APLers Names                        ⍝ Show Matrices
┌──────┬─────┬──────┐
│JOHN  │STEVE│PAUL  │
│PAUL  │PAUL │STEVE │
│GEORGE│JOHN │BILL  │
│RINGO │PETE │GEORGE│
└──────┴─────┴──────┘
    APLers iotag 'STEVE'            ⍝ Find name
0
    APLers iotag 'STEVE'            ⍝ Find name
0
    APLers iotag 'STEVE '           ⍝ Ignores trailing blanks
0
    APLers iotag Beatles            ⍝ Two matrices
2 1 4 4
    'PETE' iotag 'PETE'             ⍝ Vector left argument
0 1 2 1

    Rank3←↑APLers Beatles           ⍝ Rank 3 Array
    Rank3 iotag Beatles             ⍝ Find matrix in Rank-3 array
1
    Beatles iotag Rank3             ⍝ Find Vectors in matrix
4 1 0 4
0 1 2 3
    Rank3 iotag ↑Beatles Names
1 2

⍝∇ iotag

Back to: code

Back to: Workspaces