【问题标题】:Number from a string of numbers-prolog一串数字中的数字-prolog
【发布时间】:2021-08-29 06:17:49
【问题描述】:

我想在一个字符串中得到一个数字,比如 1100010 我想得到最后两位数 如果我不知道给定字符串的长度,我会怎么做

forFun("",0).
forFun(Str,N) :- Str1 is Str - 1,
                 forFun(Str1,N1),
                 N is N1 + 1.

这是一个可能的代码吗?

【问题讨论】:

    标签: string binary prolog numbers


    【解决方案1】:

    首先(不幸的是)我们需要同意我们所说的“字符串”是什么意思。出于许多目的,最好和最便携的表示是“字符”(单字符原子)列表,尽管您的 Prolog 可能需要被告知这确实是您想要的表示:

    ?- set_prolog_flag(double_quotes, chars).
    true.
    

    现在,例如:

    ?- Number = "12345".
    Number = ['1', '2', '3', '4', '5'].
    

    要获取列表的最后两个元素,您可以使用广泛支持(尽管不是标准)append/3 谓词。你可以问 Prolog 一个相当于“有一些列表 _Prefix(我不关心)和一个包含两个元素的列表 LastDigits 的问题,它们附加在一起,等于我的 Number?”。

    ?- Number = "12345", LastDigits = [X, Y], append(_Prefix, LastDigits, Number).
    Number = ['1', '2', '3', '4', '5'],
    LastDigits = ['4', '5'],
    X = '4',
    Y = '5',
    _Prefix = ['1', '2', '3'] ;
    false.
    

    这个号码的最后两位是['4', '5']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多