From b5cfcceb164ed9211dba4ca5520fb823704d3a92 Mon Sep 17 00:00:00 2001 From: Dima Date: Sat, 14 Nov 2020 15:07:50 +0300 Subject: [PATCH] Task centerFile from lesson 7 are fixed (Attempt #2). --- input/center_in5.txt | 2 ++ src/lesson7/task1/Files.kt | 22 ++++++++++++---------- temp.txt | 8 +------- test/lesson7/task1/Tests.kt | 30 ++++++++++++++++++------------ 4 files changed, 33 insertions(+), 29 deletions(-) create mode 100644 input/center_in5.txt diff --git a/input/center_in5.txt b/input/center_in5.txt new file mode 100644 index 000000000..32e230df8 --- /dev/null +++ b/input/center_in5.txt @@ -0,0 +1,2 @@ +БА +Ба - \ No newline at end of file diff --git a/src/lesson7/task1/Files.kt b/src/lesson7/task1/Files.kt index 7de585156..b42d31d32 100644 --- a/src/lesson7/task1/Files.kt +++ b/src/lesson7/task1/Files.kt @@ -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() diff --git a/temp.txt b/temp.txt index 8b1b3ace8..7ef9c8870 100644 --- a/temp.txt +++ b/temp.txt @@ -1,7 +1 @@ - Съешь же ещё этих мягких французских булок, да выпей чаю. -Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства. - Тест - - Hello World - Во входном файле с именем inputName содержится некоторый текст. - Вывести его в выходной файл с именем outputName, выровняв по центру. +аааааааба diff --git a/test/lesson7/task1/Tests.kt b/test/lesson7/task1/Tests.kt index 0b1cf6f16..bab6606fc 100644 --- a/test/lesson7/task1/Tests.kt +++ b/test/lesson7/task1/Tests.kt @@ -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", @@ -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