RosettaCodeData/Task/Align-columns/Nim/align-columns.nim

26 lines
890 B
Nim
Raw Permalink Normal View History

2017-09-23 10:01:46 +02:00
from strutils import splitLines, split
from sequtils import mapIt
from strfmt import format, write
2016-12-05 23:44:36 +01:00
let textinfile = """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."""
2017-09-23 10:01:46 +02:00
var words = textinfile.splitLines.mapIt(it.split '$')
var maxs = newSeq[int](max words.mapIt(it.len))
2016-12-05 23:44:36 +01:00
2017-09-23 10:01:46 +02:00
for line in words:
for j,w in line:
2016-12-05 23:44:36 +01:00
maxs[j] = max(maxs[j], w.len+1)
for i, align in ["<",">","^"]:
echo(["Left", "Right", "Center"][i], " column-aligned output:")
2017-09-23 10:01:46 +02:00
for line in words:
for j,w in line:
stdout.write(w.format align & $maxs[j])
2016-12-05 23:44:36 +01:00
stdout.write "\n"
2017-09-23 10:01:46 +02:00
stdout.write "\n"