Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
//словарь для цифр, так как они у нас используются, как служебные символы
private val dictionary = mutableListOf('⌂', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'È','É')
Например сделать RLE для байтовой последовательности [0..255], а для служебных символов использовать отрицательные значения.
Сжимает ли утилита повторы цифр?
Для "красоты" можно так:
private fun assertFileContent(expectedFile: String, actualFile: String): Boolean {
val expectedList = File(expectedFile).readLines()
val actualList = File(actualFile).readLines()
if (expectedList.size != actualList.size) return false
return expectedList.asSequence().zip(actualList.asSequence()).all { (expected, actual) ->
expected == actual || expected.length < actual.length
}
}(И мне кажется у вас там в оригинале ошибка, надо && вместо ||)
(И мне кажется у вас там в оригинале ошибка, надо && вместо ||)Не помню, зачем я вообще второе условие вставил. Оно явно лишнее, так как разные по длине строки не могут быть равными.
if (expected[i] != actual[i]) return false return expected.size == actual.sizeДля консольных утилит попробуйте Spring Boot + picocli.
Эта комбинация даёт много возможностей и позволяет писать чистый код.
Вместо Spring можно взять Guice — на вкус и цвет…
Консольная утилита на Kotlin/Java с помощью библиотеки args4j