2 / 2 / 0
Регистрация: 18.04.2017
Сообщений: 14
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте,
Задание такое:
Напишите на 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2018, 01:06
Ответы с готовыми решениями:

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

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

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

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

2
794 / 598 / 156
Регистрация: 07.10.2013
Сообщений: 1,327
21.11.2018, 16:57 2
Лучший ответ Сообщение было отмечено 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  [ТС] 3
Сидел ещё и пришла в голову "идея". Вот она:
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
21.11.2018, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2018, 22:47
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru