⍝ ⍺-combination matrix of ⍳⍵:

    ⎕io ⎕ml←1 0

    display 0 cmat 5
┌⊖┐
↓0│
└~┘
    display 1 cmat 5
┌→┐
↓1│
│2│
│3│
│4│
│5│
└~┘
    display 2 cmat 5
┌→──┐
↓1 2│
│1 3│
│1 4│
│1 5│
│2 3│
│2 4│
│2 5│
│3 4│
│3 5│
│4 5│
└~──┘
    display 3 cmat 5
┌→────┐
↓1 2 3│
│1 2 4│
│1 2 5│
│1 3 4│
│1 3 5│
│1 4 5│
│2 3 4│
│2 3 5│
│2 4 5│
│3 4 5│
└~────┘
    display 4 cmat 5
┌→──────┐
↓1 2 3 4│
│1 2 3 5│
│1 2 4 5│
│1 3 4 5│
│2 3 4 5│
└~──────┘
    display 5 cmat 5
┌→────────┐
↓1 2 3 4 5│
└~────────┘
    display 6 cmat 5
┌→──────────┐
⌽0 0 0 0 0 0│
└~──────────┘

    ⍉↑{⍴⍵ cmat 5}¨0 to 6                        ⍝ Row and column sizes
1 5 10 10 5 1 0
0 1  2  3 4 5 6

    2{⍵[⍺ cmat⍴⍵]}'scissors' 'paper' 'stone'    ⍝ 2-combos of nested vector
┌────────┬─────┐
│scissors│paper│
├────────┼─────┤
│scissors│stone│
├────────┼─────┤
│paper   │stone│
└────────┴─────┘

    ↓3{⍵[⍺ cmat⍴⍵]}'abcde'                      ⍝ 3-combos of char vector
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│abc│abd│abe│acd│ace│ade│bcd│bce│bde│cde│
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘

    ⍕ display¨0 1 2 3∘.cmat 0 1 2 3             ⍝ Combos of small vectors
 ┌⊖┐      ┌⊖┐      ┌⊖┐      ┌⊖┐     
 ↓0│      ↓0│      ↓0│      ↓0│     
 └~┘      └~┘      └~┘      └~┘     
 ┌→┐      ┌→┐      ┌→┐      ┌→┐     
 ⌽0│      ↓1│      ↓1│      ↓1│     
 └~┘      └~┘      │2│      │2│     
                   └~┘      │3│     
                            └~┘     
 ┌→──┐    ┌→──┐    ┌→──┐    ┌→──┐   
 ⌽0 0│    ⌽0 0│    ↓1 2│    ↓1 2│   
 └~──┘    └~──┘    └~──┘    │1 3│   
                            │2 3│   
                            └~──┘   
 ┌→────┐  ┌→────┐  ┌→────┐  ┌→────┐ 
 ⌽0 0 0│  ⌽0 0 0│  ⌽0 0 0│  ↓1 2 3│ 
 └~────┘  └~────┘  └~────┘  └~────┘ 

    ⎕io←0
    2 cmat 4                            ⍝ Code is "origin sensitive"
0 1
0 2
0 3
1 2
1 3
2 3

    ⍉ ∘.{⍬⍴⍴⍺ cmat ⍵}⍨ 0 to 12          ⍝ Pascal's triangle
1  0  0   0   0   0   0   0   0   0  0  0 0
1  1  0   0   0   0   0   0   0   0  0  0 0
1  2  1   0   0   0   0   0   0   0  0  0 0
1  3  3   1   0   0   0   0   0   0  0  0 0
1  4  6   4   1   0   0   0   0   0  0  0 0
1  5 10  10   5   1   0   0   0   0  0  0 0
1  6 15  20  15   6   1   0   0   0  0  0 0
1  7 21  35  35  21   7   1   0   0  0  0 0
1  8 28  56  70  56  28   8   1   0  0  0 0
1  9 36  84 126 126  84  36   9   1  0  0 0
1 10 45 120 210 252 210 120  45  10  1  0 0
1 11 55 165 330 462 462 330 165  55 11  1 0
1 12 66 220 495 792 924 792 495 220 66 12 1

⍝∇ cmat display to

Back to: code

Back to: Workspaces