Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 2 / 0
Регистрация: 18.04.2017
Сообщений: 14

Подсчет в слове X всех сочетаний «му» (SWI-Prolog)

21.11.2018, 01:06. Показов 1814. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте,
Задание такое:
Напишите на SWI-Prolog программу подсчета в слове X всех сочетаний «му».

Что я сделал:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    kol :-
    write('Введите строку'),nl,
    read(Sen),
    write('Введенная строка'),nl,
    write(Sen),nl,
    write('!!!Колличество сочетаний my!!! = '),
    kol_s(Sen,K),
    write(K).
 
/*  Правило, определяющее, является ли  первый по порядку символ буквой m, а второй по порядку буквой y. */
/*  Возвращает 1, если так, и 0 в противном случае  */
dig("m","y",1).
dig(_,_,0).
 
/*Правило для подсчёта таких сочетаний*/
kol_s("",0).
kol_s(S,N):-sub_string(S,0,1,_,Sy1),
    sub_string(S,1,2,_,Sy2),
    dig(Sy1,Sy2,N1),
    string_length(S,L),
    L1 is L-1,
    sub_string(S,1,L1,_,Tail),
    kol_s(Tail,N2),
    N is N1+N2.
В итоге выдает false.
Подскажите, что не так?
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2018, 01:06
Ответы с готовыми решениями:

Сортировка слов по количеству букв в слове. SWI-Prolog
Помогите написать программу сортировки русских слов по количеству букв в строке, а если одинаковое количество букв, то по алфавиту. Слова в...

Выяснить, есть ли слове X буква «а», стоящая на нечетном месте после буквы «z» (SWI-Prolog)
Здравствуйте, Есть задача: Напишите программу, выясняющий, есть ли слове X буква «а», стоящая на нечетном месте после буквы «z». ...

Произведение всех нечетных элементов списка SWI Prolog
Мужики, я уже боашку сломал, решил кучу задач на экзамене, последняя меня победила, не могу понять что делать! Произведение всех...

2
 Аватар для arlat
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
21.11.2018, 16:57
Лучший ответ Сообщение было отмечено TheBlackBear как решение

Решение

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
kol :-
    write('Введите строку'),nl,
    read(Sen),
    write('Введенная строка'),nl,
    write(Sen),nl,
    write('!!!Колличество сочетаний my!!! = '),
    string_codes(Sen, InCodes),
    string_codes("my", SearchCodes),
    findall(1, (
                append(_, MiddleCodes, InCodes),
                append(SearchCodes, _, MiddleCodes)
               ),
    Xs),
    length(Xs, K),
    write(K).
Prolog
1
2
3
4
5
6
7
?- kol.
 Введите строку
|: "my foo my bar and my or not".
Введенная строка
my foo my bar and my or not
!!!Колличество сочетаний my!!! = 3
true.
1
2 / 2 / 0
Регистрация: 18.04.2017
Сообщений: 14
21.11.2018, 22:47  [ТС]
Сидел ещё и пришла в голову "идея". Вот она:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
kol :-
    write('Введите строку'),nl,
    read(Sen),
    write('Введенная строка'),nl,
    write(Sen),nl,
    string_concat(Sen,"..",Sen1),
    write('Колличество сочетаний my = '),
    kol_s(Sen1,K),
    write(K).
 
dig("my",1).
dig(_,0).
 
kol_s("..",0).
kol_s(S,N):-sub_string(S,0,2,_,Sy1),
    dig(Sy1,N1),
    string_length(S,L),
    L1 is L-1,
    sub_string(S,1,L1,_,Tail),
    kol_s(Tail,N2),
    N is N1+N2.
В итоге тоже сработало . Но ваш вариант намного грамотнее. Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2018, 22:47
Помогаю со студенческими работами здесь

Проверить, является ли L списком всех последовательностей (списков) длины K из чисел 1, 2, ..., N (swi-prolog)
Напишите предикат p(+N, +K, -L) - истинный тогда и только тогда, когда L - список всех последовательностей (списков) длины K из чисел...

Функция: уменьшение всех элементов числового списка на заданное значение [swi-prolog]
Помогите пожалуйста переделать задачу из turbo-prolog в swi-prolog. Описать функцию, которая уменьшает все элементы числового списка...

Как переделать программу написанную на Turbo-Prolog в SWI-Prolog?
Ребята подскажите пожалуйста как переделать эту программу написанную на Turbo-Prolog в SWI-Prolog? domains i=integer il=i* ...

В Turbo-Prolog есть возможность описать Goal. Как это реализовано в SWI-Prolog
Здравствуйте. в Turbo-Prolog есть возможность описать Goal: Goal father(X,_), write(X). И ответ мы получим сразу при запуске...

Перевод программы из Turbo Prolog в SWI-Prolog
Здравствуйте! У меня есть программа по определению внука Петра III, она написана на Turbo Prolog. Я пытался перевести её на SWI-Prolog,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru