Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
43
Task/Align-columns/Jq/align-columns-1.jq
Normal file
43
Task/Align-columns/Jq/align-columns-1.jq
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# transpose a possibly jagged matrix
|
||||
def transpose:
|
||||
if . == [] then []
|
||||
else (.[1:] | transpose) as $t
|
||||
| .[0] as $row
|
||||
| reduce range(0; [($t|length), (.[0]|length)] | max) as $i
|
||||
([]; . + [ [ $row[$i] ] + $t[$i] ])
|
||||
end;
|
||||
|
||||
# left/right/center justification of strings:
|
||||
def ljust(width): . + " " * (width - length);
|
||||
|
||||
def rjust(width): " " * (width - length) + .;
|
||||
|
||||
def center(width):
|
||||
(width - length) as $pad
|
||||
| if $pad <= 0 then .
|
||||
else ($pad / 2 | floor) as $half
|
||||
| $half * " " + . + ($pad-$half) * " "
|
||||
end ;
|
||||
|
||||
# input: a single string, which includes newlines to separate lines, and $ to separate phrases;
|
||||
# method must be "left" "right" or anything else for central justification.
|
||||
def format(method):
|
||||
def justify(width):
|
||||
if method == "left" then ljust(width)
|
||||
elif method == "right" then rjust(width)
|
||||
else center(width)
|
||||
end;
|
||||
|
||||
# max_widths: input: an array of strings, each with "$" as phrase-separator;
|
||||
# return the appropriate column-wise maximum lengths
|
||||
def max_widths:
|
||||
map(split("$") | map(length))
|
||||
| transpose | map(max) ;
|
||||
|
||||
split("\n") as $input
|
||||
| $input
|
||||
| (max_widths | map(.+1)) as $widths
|
||||
| map( split("$") | . as $line | reduce range(0; length) as $i
|
||||
(""; . + ($line[$i]|justify($widths[$i])) ))
|
||||
| join("\n")
|
||||
;
|
||||
3
Task/Align-columns/Jq/align-columns-2.jq
Normal file
3
Task/Align-columns/Jq/align-columns-2.jq
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
"Center:", format("center"), "",
|
||||
"Left:", format("left"), "",
|
||||
"Right:", format("right")
|
||||
24
Task/Align-columns/Jq/align-columns-3.jq
Normal file
24
Task/Align-columns/Jq/align-columns-3.jq
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
$ jq -M -R -r -s -f Align_columns.jq Align_columns.txt
|
||||
Center:
|
||||
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.
|
||||
|
||||
Left:
|
||||
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.
|
||||
|
||||
Right:
|
||||
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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue