Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
54
Task/Align-columns/Wren/align-columns.wren
Normal file
54
Task/Align-columns/Wren/align-columns.wren
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import "io" for File
|
||||
import "/fmt" for Fmt
|
||||
|
||||
var LEFT = 0
|
||||
var RIGHT = 1
|
||||
var CENTER = 2
|
||||
var justStrs = ["LEFT", "RIGHT", "CENTER"]
|
||||
|
||||
// Gets a list of lines in the file with each line split into fields.
|
||||
var getLines = Fn.new { |fileName|
|
||||
var contents = File.read(fileName)
|
||||
var lines = contents.split("\n") // use "\r\n" on Windows
|
||||
for (i in 0...lines.count) {
|
||||
lines[i] = lines[i].trim().trimEnd("$")
|
||||
if (lines[i] == "") { // get rid of final blank line, if any
|
||||
lines = lines[0..-2]
|
||||
break
|
||||
}
|
||||
lines[i] = lines[i].split("$")
|
||||
}
|
||||
return lines
|
||||
}
|
||||
|
||||
var alignCols = Fn.new { |lines, just|
|
||||
// find maximum number of columns
|
||||
var nCols = lines.reduce(0) { |acc, line| (line.count > acc) ? line.count : acc }
|
||||
// find maximum width for each column
|
||||
var maxWids = List.filled(nCols, 0)
|
||||
for (line in lines) {
|
||||
for (i in 0...line.count) {
|
||||
var width = line[i].count
|
||||
if (width > maxWids[i]) maxWids[i] = width
|
||||
}
|
||||
}
|
||||
System.print("With %(justStrs[just]) justification:")
|
||||
for (line in lines) {
|
||||
for (i in 0...line.count) {
|
||||
var width = maxWids[i] + 1
|
||||
if (just == LEFT) {
|
||||
System.write(Fmt.s(-width, line[i]))
|
||||
} else if (just == RIGHT) {
|
||||
System.write(Fmt.s(width, line[i]))
|
||||
} else if (just == CENTER) {
|
||||
System.write(Fmt.m(width, line[i]))
|
||||
}
|
||||
}
|
||||
System.print()
|
||||
}
|
||||
System.print()
|
||||
}
|
||||
|
||||
var fileName = "align_cols.txt"
|
||||
var lines = getLines.call(fileName)
|
||||
for (i in 0..2) alignCols.call(lines, i)
|
||||
Loading…
Add table
Add a link
Reference in a new issue