Форум программистов, компьютерный форум, киберфорум
F# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973

Подсчёт вхождения букв в строку

19.05.2024, 18:20. Показов 970. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Решал задачу из другого раздела (ну не балуют как-то вопросами по F#). Поскольку много слов вводить лень, свёл задачу к следующему:
1. Считать только буквы.
2. Если несколько букв имеют одинаковое количество вхождений, отсортировать их по алфавиту.
3. Вывод отсортировать по уменьшению числа вхождений.

В целом с задачей справился, но решение какое-то "толстое" что-ли... Не оставляет чувство, что как-то всё компактнее делается. Поскольку это первая задача на этом языке, есть сомнения...
Собственно код:
F#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let printCountedChars str =
    let countChars = 
        str
        |> Seq.toList
        |> List.filter System.Char.IsLetter
        |> List.countBy (fun chr -> chr)
        |> List.groupBy (fun cnt -> snd cnt)
        |> List.map (fun (cnt, pairs) ->
            cnt, pairs 
                |> List.map (fun pair -> fst pair) 
                |> List.sort 
                |> List.map string 
                |> List.reduce (+))
        |> List.sortByDescending (fun cnt -> fst cnt)
    
    for cnt in countChars do
        printfn "%-20s: %d" (snd cnt) (fst cnt)
И выхлоп:
Code
1
2
3
4
> printCountedChars "any many money more";;
mny                 : 3
aeo                 : 2
r                   : 1
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2024, 18:20
Ответы с готовыми решениями:

Преобразовать строку, заменив все вхождения прописных букв,на строчные
дана строка символов,состоящая из строчных и прописных букв. Преобразовать строку заменив все вхождения прописных букв,на строчные. ...

Подсчитайте процент вхождения гласных букв латинского алфавита в строку
Задача 6. Введите с клавиатуры строку произвольной длины и подсчитайте процент вхождения гласных букв латинского алфавита в строку (не...

Определить общий процент вхождения в строку прописных (заглавных) букв и цифр
Условие: Дана строка символов. Определить общий процент вхождения в строку прописных (заглавных) букв и цифр. Строка представлена...

2
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,150
Записей в блоге: 43
19.05.2024, 20:58
easybudda, как вариант можно так
F#
1
2
3
4
5
6
7
8
9
10
11
12
let printCountedChars str =
    str
    |> Seq.filter System.Char.IsLetter
    |> Seq.countBy id
    |> Seq.groupBy snd
    |> Seq.sortByDescending fst
    |> Seq.map (fun (cnt, pair) ->
        (pair |> Seq.map fst |> Seq.sort |> System.String.Concat, cnt)
        ||> (sprintf "%-20s: %d") 
        )
 
System.String.Join ("\n",printCountedChars "any many money more" ) |> printfn "%s"
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
19.05.2024, 21:29  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
как вариант можно так
Спасибо, так интереснее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2024, 21:29
Помогаю со студенческими работами здесь

Определить общий процент вхождения в строку прописных(заглавных) букв и цифр
Дана строка символов. Нужно определить общий процент вхождения в строку прописных (заглавных) букв и цифр

Написать программу, в которой нужно ввести строку текста и сделать подсчет повторяющихся букв, вывести результат
Пример: Сьогодні прохолодно

Известно, что в строке S находится не более 40 латинских букв. Напечатать эту строку, все вхождения "abc" заменивна "def
Известно, что в строке S находится не более 40 латинских букв. Напечатать эту строку, все вхождения "abc" заменивна...

Перевод русских букв на латиницу и подсчёт количества букв
Написал программу в паскале, которая переводит при вводе имени русские буквы на латиницу и считает количество букв , но выдаёт непонятную...

Подсчет суммарного числа букв 'а' и букв 'b' в строке
Напишите программу подсчета суммарного числа букв 'а' и букв 'b' в данной строковой переменной. Вывести на экран, каких букв больше....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru