将列表中的原子反转为整数 - Prolog
Invert atoms from list to integers - Prolog
我有这个:
streams=[[1,2,2,4],[2,1,4,2],[3,4,1,3],[4,3,3,1]]
列表中的数字都是原子,然后我需要将其全部反转为整数。流应如下所示:
streams=[[1,2,2,4],[2,1,4,2],[3,4,1,3],[4,3,3,1]]
但是对于所有格式为 'integer' 而不是 'atom' 的数字
有人可以解释一下如何将这些数字转换为整数吗?
要在原子和数字之间进行转换,您可以使用内置谓词 atom_number/2:
?- atom_number(Atom, 1).
Atom = '1'.
?- atom_number('1', Number).
Number = 1.
使用 maplist/3,您可以将该转换应用于 原子列表 的所有元素:
?- maplist(atom_number, ['1','2','2','3'], Numbers).
Numbers = [1, 2, 2, 3].
要对列表列表中的所有原子应用该转换,您可以执行以下操作:
?- maplist(maplist(atom_number), [['1','2'],['2','1','4'],['3'],['4','1']], ListOfLists).
ListOfLists = [[1, 2], [2, 1, 4], [3], [4, 1]].
我有这个:
streams=[[1,2,2,4],[2,1,4,2],[3,4,1,3],[4,3,3,1]]
列表中的数字都是原子,然后我需要将其全部反转为整数。流应如下所示:
streams=[[1,2,2,4],[2,1,4,2],[3,4,1,3],[4,3,3,1]]
但是对于所有格式为 'integer' 而不是 'atom' 的数字 有人可以解释一下如何将这些数字转换为整数吗?
要在原子和数字之间进行转换,您可以使用内置谓词 atom_number/2:
?- atom_number(Atom, 1).
Atom = '1'.
?- atom_number('1', Number).
Number = 1.
使用 maplist/3,您可以将该转换应用于 原子列表 的所有元素:
?- maplist(atom_number, ['1','2','2','3'], Numbers).
Numbers = [1, 2, 2, 3].
要对列表列表中的所有原子应用该转换,您可以执行以下操作:
?- maplist(maplist(atom_number), [['1','2'],['2','1','4'],['3'],['4','1']], ListOfLists).
ListOfLists = [[1, 2], [2, 1, 4], [3], [4, 1]].