Re: Count lists elements
- From: Peter Van Weert <Peter.VanWeert@xxxxxxxxxxxxxx>
- Date: Fri, 17 Nov 2006 02:41:58 +0100
Hi all,
I have a problem, I need to write a program, which finds the element in
a list which repeats most often time. Lets say, I have such query:
?- most_often([a,b,c,a,v,s,a,b,t,a], K).
K = a.
I tried several ways, but no luck... Can anybody help me?
It would be more convincing if you showed some of the work.
--- Jan
This problem I find is easily solved in CHR (untested code):
:- chr_constraint solve/3, max/2, elements/1, get/2, count/2.
solve(Elements, MaxElem, MaxNum)
<=> max(-1, _), elements(Elements), get(MaxElem, MaxNum).
elements([E|Es]) <=> elem(E), elements(Es).
elements([]) <=> true.
elem(E), count(E, C) <=> C1 is C+1, count(E, C1).
elem(E) <=> count(E, 1).
count(E, C) \ max(M, _) <=> C > M | max(C, E).
get(R1, R2), max(M, E) <=> R1 = M, R2 = E.
.
- Follow-Ups:
- Re: Count lists elements
- From: Carlo Capelli
- Re: Count lists elements
- References:
- Count lists elements
- From: Rapolas
- Re: Count lists elements
- From: Carlo Capelli
- Re: Count lists elements
- From: Jan Wielemaker
- Count lists elements
- Prev by Date: comp.lang.prolog Frequently Asked Questions
- Next by Date: Re: Count lists elements
- Previous by thread: Re: Count lists elements
- Next by thread: Re: Count lists elements
- Index(es):