Skip to content

Commit

Permalink
Task centerFile from lesson 7 are fixed (Attempt Kotlin-Polytech#2).
Browse files Browse the repository at this point in the history
  • Loading branch information
Iksburg committed Nov 14, 2020
1 parent aacc21a commit b5cfcce
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 29 deletions.
2 changes: 2 additions & 0 deletions input/center_in5.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
БА
Ба -
22 changes: 12 additions & 10 deletions src/lesson7/task1/Files.kt
Original file line number Diff line number Diff line change
Expand Up @@ -163,21 +163,23 @@ fun sibilants(inputName: String, outputName: String) {
fun centerFile(inputName: String, outputName: String) {
val writer = File(outputName).bufferedWriter()
var maxLineLength = 0
var stringWithoutSpaces: String
for (line in File(inputName).readLines()) {
stringWithoutSpaces = line.trim()
if (stringWithoutSpaces.length > maxLineLength) maxLineLength = stringWithoutSpaces.length
}
val maxLineCenter = when {
maxLineLength % 2 == 0 -> (maxLineLength - 1) / 2
else -> maxLineLength / 2
val stringWithoutSpaces = line.trim()
val lineLength = stringWithoutSpaces.length
if (lineLength > maxLineLength) maxLineLength = lineLength
}
val maxLineCenter = maxLineLength / 2
for (line in File(inputName).readLines()) {
stringWithoutSpaces = line.trim()
val lineCenter = stringWithoutSpaces.length / 2
val stringWithoutSpaces = line.trim()
val lineLength = stringWithoutSpaces.length
val lineCenter = lineLength / 2
val alignedLine = when {
lineCenter >= maxLineCenter -> stringWithoutSpaces
else -> stringWithoutSpaces.padStart(stringWithoutSpaces.length + maxLineCenter - lineCenter)
else -> if (maxLineLength % 2 == 0 && lineLength % 2 != 0) {
stringWithoutSpaces.padStart(lineLength - 1 + maxLineCenter - lineCenter)
} else {
stringWithoutSpaces.padStart(lineLength + maxLineCenter - lineCenter)
}
}
writer.write(alignedLine)
writer.newLine()
Expand Down
8 changes: 1 addition & 7 deletions temp.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
Съешь же ещё этих мягких французских булок, да выпей чаю.
Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.
Тест

Hello World
Во входном файле с именем inputName содержится некоторый текст.
Вывести его в выходной файл с именем outputName, выровняв по центру.
аааааааба
30 changes: 18 additions & 12 deletions test/lesson7/task1/Tests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,24 @@ Basic, Ruby, Swift.
@Test
@Tag("15")
fun centerFile() {
centerFile("input/center_in1.txt", "temp.txt")
assertFileContent(
"temp.txt",
""" Съешь же ещё этих мягких французских булок, да выпей чаю.
Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.
Тест
""" + // Avoiding trailing whitespaces problem
"""
Hello World
Во входном файле с именем inputName содержится некоторый текст.
Вывести его в выходной файл с именем outputName, выровняв по центру."""
)
centerFile("input/center_in5.txt", "temp.txt")
assertFileContent(
"temp.txt",
""" БА
Ба -"""
)
centerFile("input/center_in4.txt", "temp.txt")
assertFileContent(
"temp.txt",
Expand All @@ -136,18 +154,6 @@ Basic, Ruby, Swift.
"temp.txt",
"""аааааааба"""
)
centerFile("input/center_in1.txt", "temp.txt")
assertFileContent(
"temp.txt",
""" Съешь же ещё этих мягких французских булок, да выпей чаю.
Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.
Тест
""" + // Avoiding trailing whitespaces problem
"""
Hello World
Во входном файле с именем inputName содержится некоторый текст.
Вывести его в выходной файл с именем outputName, выровняв по центру."""
)
}

@Test
Expand Down

0 comments on commit b5cfcce

Please sign in to comment.