16 lines
880 B
Text
16 lines
880 B
Text
# Split the text at $ and then justify each word 3 ways
|
|
|
|
N ← {"Given$a$text$file$of$many$lines,$where$fields$within$a$line$"
|
|
"are$delineated$by$a$single$'dollar'$character,$write$a$program"
|
|
"that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$"
|
|
"column$are$separated$by$at$least$one$space."
|
|
"Further,$allow$for$each$word$in$a$column$to$be$either$left$"
|
|
"justified,$right$justified,$or$center$justified$within$its$column."}
|
|
Ls ← ≡⍚(⊜□≠@$.) # Get the word arrays.
|
|
PadC ← ↻:⊙(⌊÷2-)⊃(⬚@ ↙|⊙⧻) # Pad centre.
|
|
Pad! ← ≡/◇⊂⍉≡≡⍚^! # Apply a padding function to all.
|
|
Prep ← (
|
|
≡◇⬚""↙/↥≡◇⧻. # Pad each row to same length.
|
|
+1≡◇(/↥≡◇⧻).⍉ # Find required length for each column.
|
|
)
|
|
≡(&p/$"_\n_")[⊃(Pad!⬚@ ↙|Pad!(⬚@ ↙¯)|Pad!PadC)] Prep Ls N
|