gpt4 book ai didi

algorithm - 如何搜索以给定字母开头的单词

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:13 24 4
gpt4 key购买 nike

我想在 Prolog 中实现一个搜索功能,当我输入一个字母时,它会显示建议的单词,从那个字母动态地开始。

作为起点,我试图找到一种方法来获取从给定字母开始的单词列表。但我找不到任何东西可以尝试。

最佳答案

这听起来像是一个有值(value)的项目,不仅适合初学者。大多数复杂性都应归因于用户交互。你应该分割你的任务 - 首先:

  • 单词表示
  • 用户互动(什么媒体?)
    • '下一个字符'获取
    • 列表显示
    • 错误处理?

例如,使用基本的 Prolog IO 和原始单词数据库:

word("prolog").
word("programming").
word("algorithm").
word("word").

user_interface(SelectedSoFar, SelectedWord) :-
% get a sorted set of matched words rest
( setof(Rest, Word^(word(Word), append(SelectedSoFar, Rest, Word)), Matched)
-> ( Matched = [Choosed] % only 1 choice available ?
-> append(SelectedSoFar, Choosed, SelectedWord) % terminate
; % display list, get next char, recurse
forall(member(Rest, Matched), format('~s^~s~n', [SelectedSoFar, Rest])),
get(C),
append(SelectedSoFar, [C], ExtendedSel),
user_interface(ExtendedSel, SelectedWord)
)
; writeln('no match, retry'),
append(WithoutLast, [_], SelectedSoFar), % discard last - BUG: swapped arguments
user_interface(WithoutLast, SelectedWord)
).

示例交互:

?- user_interface("",W).
^algorithm
^programming
^prolog
^word
|: w

W = "word".

?- user_interface("",W).
^algorithm
^programming
^prolog
^word
|: p
p^rogramming
p^rolog
|: r
pr^ogramming
pr^olog
|: o
pro^gramming
pro^log
|: g

W = "programming".

编辑:我已经纠正了一个错误,请参阅评论 % discard last....

你在哪里看到(例如)

|: w

我输入了一个字符一个“回车”。这是一个非常基本的界面......你至少应该接受一个字符串,而不是一个字符。请参阅您的 Prolog 手册。

关于algorithm - 如何搜索以给定字母开头的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16684495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com