:Namespace PartFns pandred←{Z←(⍵≤⍺)/⍺ ⋄ (Z/1⌽Z)∧⍺/⍵} porred←{Z←(⍵∨⍺)/⍺ ⋄ (Z/1⌽Z)≤⍺/⍵} peqred←{=N∆(1⌽⍺)/=\⍵} pnered←{≠N∆(1⌽⍺)/≠\⍵} pltred←{(⍺≥⍵=1⌽⍺)/⍺ ⋄ (Z/1⌽Z)∧⍺/⍵=1⌽⍺} pmaxred←{⍵[(⍒⍵)[⍺/⍋(+\⍺)[⍒⍵]]]} pminred←{⍵[(⍋⍵)[⍺/⍋(+\⍺)[⍋⍵]]]} pgradeup←{⎕IO+(⍋⍵)[⍋(+\⍺)[⍋⍵]]-⌈\⍺×⍳⍴⍺} pplred←{-N∆(1⌽⍺)/+\⍵} pplredb←{Z←((⍵∨⍺)/⍺),1 ⋄ (1↓-N∆ Z/⍳⍴Z)-~⍺/⍵} pandscan←{~≠\(⍵≤⍺)\≠N∆~(⍵∨⍺)/⍵} porscan←{≠\(⍵∨⍺)\≠N∆(⍵∨⍺)/⍵} peqscan←{=\⍵≠⍺\≠N∆~⍺/=\¯1↓1,⍵} pnescan←{≠\⍵≠⍺\≠N∆~⍺/≠\¯1↓0,⍵} pltscan←{(⍵∧⍺)∨(⍵∨⍺)\>N∆(⍵∨⍺)/⍵} pmaxscan←{Z←⍋(⍋⍵)[⍋(+\⍺)[⍋⍵]] ⋄ ⍵[Z⍳⌈\Z]} pminscan←{Z←⍋(⍒⍵)[⍋(+\⍺)[⍒⍵]] ⋄ ⍵[Z⍳⌈\Z]} pgradedown←{⎕IO+(⍒⍵)[⍋(+\⍺)[⍒⍵]]-⌈\⍺×⍳⍴⍺} pplscan←{+\⍵-⍺\-N∆ ⍵/+\¯1↓0,⍵} preverse←{⍵[⌽⍒+\⍺]} N∆←{¯2 ⍺⍺/(⍺⍺/⍬),⍵} P∆←{2 ⍺⍺/⍵,⍺⍺/⍬} :EndNamespace