Sha256: bac02a42b7bab70da3335a3778ba765e0925e03524af069a080033024449d4c2

Contents?: true

Size: 791 Bytes

Versions: 392

Compression:

Stored size: 791 Bytes

Contents

% turns a string into a sorted list of characters
format_word(Word, Formatted) :-
    string_lower(Word, LowercaseWord),
    string_chars(LowercaseWord, CharList),
    sort(CharList, Formatted).

anagram(Word, Options, Matching) :-
    format_word(Word, FormattedWord),
    anagram(Word, Options, Matching, FormattedWord).

anagram(_, [], [], _) :- !.
anagram(Word, [Option|Options], Matching, CharList) :-
    Word \== Option,
    format_word(Option, FormattedOption),
    equal_lists(CharList, FormattedOption),
    anagram(Word, Options, NextMatching, CharList),
    Matching = [Option | NextMatching],
    !.
anagram(Word, [_ | Options], Matching, CharList) :-
    anagram(Word, Options, Matching, CharList).

equal_lists([], []).
equal_lists([H|T1], [H|T2]) :-
    equal_lists(T1, T2).

Version data entries

392 entries across 392 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.179 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.178 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.177 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.176 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.175 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.174 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.173 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.172 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.171 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.170 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.169 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.167 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.166 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.165 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.164 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.163 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.162 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.161 tracks/prolog/exercises/anagram/anagram.example
trackler-2.2.1.160 tracks/prolog/exercises/anagram/anagram.example