cmat ← {marker←'*'} ##.draw cmat ⍝ Draw over '*'s.
Supplied by Veli-Matti Jantunen, draw replaces adjacent markers in the character
matrix argument with appropriate box-drawing characters. Optional left argument
('*' by default) specifies the marker; all other characters are passed through
to the result character matrix.
Examples:
⍝ Show arg and result, starting with blank canvas.
canvas←4 4⍴' ' ⋄ display¨ canvas (draw canvas)
┌→───┐ ┌→───┐
↓ │ ↓ │
│ │ │ │
│ │ │ │
│ │ │ │
└────┘ └────┘
canvas[4;2 3]←'*' ⋄ display¨ canvas (draw canvas)
┌→───┐ ┌→───┐
↓ │ ↓ │
│ │ │ │
│ │ │ │
│ ** │ │ ── │
└────┘ └────┘
canvas[2 3;4]←'*' ⋄ display¨ canvas (draw canvas)
┌→───┐ ┌→───┐
↓ │ ↓ │
│ *│ │ ││
│ *│ │ ││
│ ** │ │ ── │
└────┘ └────┘
canvas[4;4]←'*' ⋄ display¨ canvas (draw canvas)
┌→───┐ ┌→───┐
↓ │ ↓ │
│ *│ │ ││
│ *│ │ ││
│ ***│ │ ──┘│
└────┘ └────┘
canvas[2;⍳4]←'*' ⋄ display¨ canvas (draw canvas)
┌→───┐ ┌→───┐
↓ │ ↓ │
│****│ │───┐│
│ *│ │ ││
│ ***│ │ ──┘│
└────┘ └────┘
canvas[⍳4;2]←'*' ⋄ display¨ canvas (draw canvas)
┌→───┐ ┌→───┐
↓ * │ ↓ │ │
│****│ │─┼─┐│
│ * *│ │ │ ││
│ ***│ │ └─┘│
└────┘ └────┘
canvas[1;1]←'*' ⋄ display¨ canvas (draw canvas)
┌→───┐ ┌→───┐
↓** │ ↓┌┐ │
│****│ │└┼─┐│
│ * *│ │ │ ││
│ ***│ │ └─┘│
└────┘ └────┘
'?'draw ' ?'[?10 50⍴2] ⍝ random scribbles with ? marker.
? ? ┌┬─ ┌┐ ── ──┬┬─ ? ┌┬─ │ ┌┬┐ ──┬┐ ─┐ │
└┤ ┌┼┤ │ │ ? └┘ │ ─┴┤ ┌┴─┴┴┼┐ └┼─ │ │
┌─ │ └┴┴─┴┐ │ ─┘ └─ │ └┼─┬┐ │ │
│ │ ┌┴─ │ │ │ ? ┌┴─ ── │ └┴┬┘ ┌┘ ┌─
└┬┬─ ┌┤ ┌┐ ─┬┼──┘ ┌┤ │ ┌┐ ───┘ │ └┐ │ │ ┌┤
├┤ └┘ ─┼┤ └┤ ├┤ │ └┤ ? │ ? │ │ ┌┴┴┐
┌┴┤ ? │ ├┴─┐ │ ┌┼┴┐ │ └┐ ├┬┴─┬┐ │ │
│ ├┐ │ ├─┘ ├─┘ ? └┘ │ └─ ├┬┬─ │ ─┼┤ └┘ │
└┬┼┘ │ │ ─┤ ? ? ┌┴┼┘ └─ │ └┼┬┐ ? ┌┐
└┘ ─┘ ── └─ ? ? ? │ │ ? ─┘ ? └┴┴─ ─┴┘
See also ##.scripts.pentominos
See also: box
Back to: contents
Back to: Workspaces