https://coderun.yandex.ru/problem/histogram/description | Легкая |
---|
Вовочка ломает систему безопасности Пентагона. Для этого ему понадобилось узнать, какие символы в секретных зашифрованных посланиях употребляются чаще других. Для удобства изучения Вовочка хочет получить графическое представление встречаемости символов. Поэтому он хочет построить гистограмму количества символов в сообщении. Гистограмма — это график, в котором каждому символу, встречающемуся в сообщении хотя бы один раз, соответствует столбик, высота которого пропорциональна количеству этих символов в сообщении.
Ввод:
Hello, world!Вывод:
# ## ######### !,Hdelorw
Ввод:
Twas brillig, and the slithy toves Did gyre and gimble in the wabe; All mimsy were the borogoves, And the mome raths outgrabe.Вывод:
# # # # # # # # # #
############## ############## ##
######################## ,.;ADTabdeghilmnorstuvwy
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
// Считываем весь ввод в строку
val text = buildString {
var line: String?
while (reader.readLine().also { line = it } != null) {
append(line).append("\\n")
}
}
val frequency = mutableMapOf<Char, Int>() // Словарь для подсчета частоты символов
// Подсчет количества вхождений каждого символа, игнорируя пробелы и переводы строк
for (char in text) {
if (char != ' ' && char != '\\n') {
frequency[char] = frequency.getOrDefault(char, 0) + 1
}
}
val sortedChars = frequency.keys.sorted() // Сортируем символы в алфавитном порядке
val maxHeight = frequency.values.maxOrNull() ?: 0 // Максимальная частота символов
// Создаем массив для отображения гистограммы
val histogram = Array(maxHeight) { CharArray(sortedChars.size) { ' ' } }
// Заполняем гистограмму символами '#'
for ((index, char) in sortedChars.withIndex()) {
val count = frequency[char]!!
for (i in 0 until count) {
histogram[maxHeight - 1 - i][index] = '#' // Заполняем столбцы снизу вверх
}
}
// Выводим гистограмму
for (row in histogram) {
writer.write(String(row) + "\\n")
}
// Выводим строку с символами в алфавитном порядке
writer.write(sortedChars.joinToString("") + "\\n")
reader.close()
writer.flush()
writer.close()
}