nvec ← p ##.nicediv q ⍝ ⍵ similar integers with sum ⍺. From Nicolas Delcros, this function distributes integer [p] nicely into [q] sim- ilarly-sized partitions. For example, in a GUI application, we might want to draw a grid of 5 rows and 7 columns, which fits exactly in a rectangle of 211 by 437 pixels: 211 437 nicediv¨ 5 8 ┌──────────────┬───────────────────────┐ │42 42 43 42 42│55 54 55 55 54 55 54 55│ └──────────────┴───────────────────────┘ Then: 'MyGrid' ⎕WS 'CellHeights' 'CellWidths' {⍺ ⍵}¨ 211 437 nicediv¨ 5 8 Technical note: Phil Last provides this alternative coding: nicecdiv←{¯2-/0,⌊0.5++\⍵⍴⍺÷⍵} and adds: "(¯2-/0,) is, I believe, the proper inverse of (+\) so we could do (+\⍣¯1) instead! nicediv←{+\⍣¯1⌊0.5++\⍵⍴⍺÷⍵} which is neater but slower by about 25%". Examples: 100 nicediv 7 ⍝ 7 similar integers, which sum to 100. 14 15 14 14 14 15 14 ↑ (0 to 10)nicediv¨5 ⍝ 5-item rows sum to 0 .. 10 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 2 1 2 1 2 1 2 2 2 1 2 2 2 2 2 2 2 hist←{' ⎕'⌷⍨⊂⎕io+⊖⍉⍵∘.≥⍳⌈/⍵} ⍝ simple histogram. stacked←{⊖⎕fmt⊖∘hist¨⍺ nicediv¨⍵} ⍝ ⍺ bricks stacked nicely into ⍵ columns 100 stacked 12 23 39 ⍝ 100 bricks in various column-widths. ⎕ ⎕ ⎕ ⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕ ⎕ ⎕ ⎕ ⎕ ⎕ ⎕ ⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕ ⎕ ⎕ ⎕⎕ ⎕ ⎕ ⎕ ⎕⎕ ⎕ ⎕ ⎕⎕ ⎕ ⎕ ⎕ ⎕⎕ ⎕ ⎕ ⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕ 12 stacked 3 to 9 ⍝ various stackings of 12 bricks. ⎕⎕⎕ ⎕⎕⎕ ⎕⎕⎕⎕ ⎕ ⎕ ⎕⎕⎕ ⎕⎕⎕⎕ ⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕ ⎕ ⎕⎕⎕ ⎕ ⎕ ⎕ ⎕ ⎕ ⎕ ⎕ ⎕ ⎕⎕⎕ ⎕⎕⎕⎕ ⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕ ⎕⎕⎕⎕⎕⎕⎕⎕⎕ Back to: contents Back to: Workspaces