How to resolve the algorithm Count occurrences of a substring step by step in the Prolog programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Count occurrences of a substring step by step in the Prolog programming language
Table of Contents
Problem Statement
Create a function, or show a built-in function, to count the number of non-overlapping occurrences of a substring inside a string. The function should take two arguments:
It should return an integer count. The matching should yield the highest number of non-overlapping matches. In general, this essentially means matching from left-to-right or right-to-left (see proof on talk page).
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Count occurrences of a substring step by step in the Prolog programming language
Source code in the prolog programming language
count_substring(String, Sub, Total) :-
count_substring(String, Sub, 0, Total).
count_substring(String, Sub, Count, Total) :-
( substring_rest(String, Sub, Rest)
->
succ(Count, NextCount),
count_substring(Rest, Sub, NextCount, Total)
;
Total = Count
).
substring_rest(String, Sub, Rest) :-
sub_string(String, Before, Length, Remain, Sub),
DropN is Before + Length,
sub_string(String, DropN, Remain, 0, Rest).
?- count_substring("the three truths","th",X).
X = 3.
?- count_substring("ababababab","abab",X).
X = 2.
:- system:set_prolog_flag(double_quotes,chars) .
occurrences(TARGETz0,SUBSTRINGz0,COUNT)
:-
prolog:phrase(occurrences(SUBSTRINGz0,0,COUNT),TARGETz0)
.
occurrences("",_,_)
-->
! ,
{ false }
.
occurrences(SUBSTRINGz0,COUNT0,COUNT)
-->
SUBSTRINGz0 ,
! ,
{ COUNT1 is COUNT0 + 1 } ,
occurrences(SUBSTRINGz0,COUNT1,COUNT)
.
occurrences(SUBSTRINGz0,COUNT0,COUNT)
-->
[_] ,
! ,
occurrences(SUBSTRINGz0,COUNT0,COUNT)
.
occurrences(_SUBSTRINGz0_,COUNT,COUNT)
-->
!
.
You may also check:How to resolve the algorithm Loops/For step by step in the Wart programming language
You may also check:How to resolve the algorithm Lah numbers step by step in the C++ programming language
You may also check:How to resolve the algorithm XML/XPath step by step in the JavaScript programming language
You may also check:How to resolve the algorithm Sorting algorithms/Counting sort step by step in the PHP programming language
You may also check:How to resolve the algorithm Arrays step by step in the EMal programming language