prolog - Prolog - 数字到单词
问题描述
我正在尝试编写一个代码,如果我english(X).
在 Prolog 中运行,我会得到一个语言形式的数字 1-100 的列表(一、二、....、二十五、...、一百)。有没有办法用词典做到这一点?我想为“-teen”如何工作的模式写一个谓词。“-ty”的谓词和(二十一,二十二)的谓词?当我说英语(X)时。我应该得到所有数字的清单。(一;二;三;....五十一;....一百。)
digit(0).
digit(1) :-
write(one).
digit(2) :-
write(two).
digit(3) :-
write(three).
digit(4) :-
write(four).
digit(5) :-
write(five).
digit(6) :-
write(six).
digit(7) :-
write(seven).
digit(8) :-
write(eight).
digit(9) :-
write(nine).
I have this so for and I am trying to write a predicate but having a hard time.
解决方案
Guy Coder 提供的链接提供了一个出色的通用案例版本。这是一个尊重您的入门代码的解决方案,尽管您应该考虑如何使它更整洁和更通用(包括通过查阅链接!)
english(X) :-
X<10, !,
digit(X).
english(X) :-
X<20, !,
teen(X).
english(X) :-
X<100, !,
Units is X mod 10,
Tens is X - Units,
tens(Tens),
digit(Units).
english(100) :-
write('one hundred').
teen(10) :-
write('ten'). % etc 10 to 19
tens(20) :-
write('twenty'). % etc 20 to 90
digit(0). % etc. 1 to 9 (as original digits)
推荐阅读
- html - 溢出自动没有使 div 可滚动引导
- java - 如何使用 Mockito 测试 Kafka 模板?
- python - 你如何将带有整数的元组(dict的键)转换为str列表
- google-calendar-api - 您可以否定在 Google 日历 API 的 Event.list 中搜索扩展属性吗?
- android - 键盘打开时如何向上滑动活动?
- php - Livewire 更新了多输入的钩子
- javascript - Plaid - 在沙盒环境中,我如何模拟正在发生的新事务并在 Webhook 中获取它
- c# - C# NUnit 即使使用 TestFixture 也找不到合适的构造函数
- python - 像 tkinter python 中的 ms Word 这样的文本字段
- reactjs - 为什么我的 react netlify 部署失败?