2. Конструкции структурного программирования в Kotlin
Теоретические сведения
Задание
Данное задание предназначено для ознакомления с языком Kotlin. Для его выполнения нужно создать программу для поиска анаграмм. Анаграммы это слова (или фразы), состоящие из одинаковых букв, но расположенных в различном порядке, например: «автор» — «товар». Программ должна состоят из нескольких функций, приводящих список слов к форме, удобной для быстрого поиска. Список слов может быть взят тут (файл 20k.txt).
Создайте и протестируйте следующие функции:
- Создайте функцию
fun charSort(word: String): String
которая возвращает строку с буквами из аргумента в порядке возрастания. Можно использовать любой алгоритм сортировки. Подсказка: используйте тип
CharArray
. - Определим
class WordWithIndex(val word:String, val index:Int)
Создайте функцию
fun wordArraySort(array: Array<WordWithIndex>)
которая сортирует
array
по убыванию свойстваword
. - Создайте функцию
fun getAnagrams(words: Array<String>) :ArrayList<ArrayList<String>>
которая возвращает список списков анаграмм, например: {{автор, тавро, отвар, рвота, втора, товар}, {сила, лиса}, …}. Эта функция создает массив из
WordWithIndex
из исходного массива, затем, используя функциюcharSort
, создает новый массив изWordWithIndex
с отсортированными буквами в каждом слове. Далее, последний массив сортируется с помощью функцииwordArraySort
. В отсортированном массиве анаграммы должны быть расположены по порядку и находятся за один проход по массиву. - В проекте IDEA создайте каталог «resource», пометьте его как «Resources Root» и поместите в него файл со списком слов. Создайте функцию
main ()
которая находит все анаграммы из исходного файла. Для чтения из файла списка слов можно использовать следующий код:val words = WordWithIndex::class.java.getResource("20k.txt") .readText() .split("\n") .filter { it.length>10 } .toTypedArray()