ABC problem: Difference between revisions

Content added Content deleted
Line 5,854: Line 5,854:


:- uses(character, [lower_upper/2, is_upper_case/1]).
:- uses(character, [lower_upper/2, is_upper_case/1]).
:- uses(term_io, [write_to_chars/2 as atom_to_codes/2]).

% public interface
% public interface


can_spell(Atom) :-
can_spell(Atom) :-
atom_to_codes(Atom, Codes),
atom_chars(Atom, Chars),
to_lower(Codes, Lower),
to_lower(Chars, Lower),
can_spell(_Block_Set_, Lower).
can_spell(_Block_Set_, Lower).


Line 5,875: Line 5,874:
can_spell(Blocks1, T).
can_spell(Blocks1, T).


to_lower(Codes, Lower) :-
to_lower(Chars, Lower) :-
meta::map( [C,L] >> ( is_upper_case(C)
meta::map(
-> lower_upper(L, C)
[C,L] >> (is_upper_case(C) -> lower_upper(L, C); C = L),
; C = L),
Chars,
Codes, Lower).
Lower
).


:- end_object.
:- end_object.
Line 5,928: Line 5,928:
:- initialization((
:- initialization((
logtalk_load(meta(loader)),
logtalk_load(meta(loader)),
logtalk_load(term_io(loader)),
logtalk_load(types(loader))
logtalk_load(types(loader))
)).
)).