首页 > 解决方案 > 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. 

标签: prolog

解决方案


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)

推荐阅读