小编use*_*111的帖子

模式数据库存储所有排列

我正在寻找关于存储条纹模式数据库的所有可能排列的一些建议.

所以十五个瓷砖问题有16个!可能的排列,但是存储的值为fringe0(空白区块),3,7,11,12,13,14,15是16!/(16-8)!= 518,918,400个排列.

我希望将所有这些排列存储在数据结构中以及启发式函数的值(每次迭代首次搜索时都会增加),到目前为止,我这样做但很慢,并且花了我5分钟存储60,000,这是我没有的时间!

边缘瓷砖

目前我的结构看起来像这样.

Value Pos0 Pos3 Pos7 Pos11 Pos12 Pos13 Pos14 Pos15
Run Code Online (Sandbox Code Playgroud)

我存储给定数字的位置.我必须使用这些位置作为ID,当我计算启发式值时,我可以快速浏览到给定的组合并检索值.

我对此非常不确定.拼图的状态由数组示例表示:

int[] goalState = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
Run Code Online (Sandbox Code Playgroud)

我的问题是存储这些值的最佳数据结构是什么?以及检索它们的最佳方法.

(这个问题最初是基于存储在数据库中,但现在我想将它们存储在某种形式的本地数据结构中 - 因为从数据库中检索速度很慢)

java database

23
推荐指数
2
解决办法
667
查看次数

下一个谓词混乱

我正在学习prolog,我正在为一个非常简单的游戏编写下一个谓词.

你有一个列表[1,0,1,0,0,1]一个合法的移动是1移动到一个零位置,1只能向右移动到包含0的第一个位置,但它允许跳过其他必要时的价值观

首先我写了一个谓词来将值0更改为1:

flip_first_zero([0|Tail], [1|Tail]). 
Run Code Online (Sandbox Code Playgroud)

很简单,现在我想找到合法的举动,我会尝试解释我的思考过程:

next([],[],[]).
next([Head|Tail], Rest, Out):-
    flip_first_zero([Head|Tail],List1),
    append(Rest,List1,Out).

next([Head|Tail], [Head|Rest], List):-
    next(Tail,Rest, List).
Run Code Online (Sandbox Code Playgroud)

[1,0,0,1,1,1,0]输出应该是一个例子[0,1,0,1,1,1,0] ; [1,0,0,0,1,1,1]; [1,0,0,1,0,1,1] ; [1,0,0,1,1,0,1].

[ 1,0,0,1,1,1,0] - > [0,1,0,1,1,1,0]

[1,0,0,1,1,1,0] - > [1,0,0,0,1,1,1 ]

[1,0,0,1,1,1,0] - > [1,0,0,1,0,1,1 ]

[1,0,0,1,1,1,0] - > [1,0,0,1,1,0,1 ]

所以我是如何理解这一点的,我每次都通过在Rest中保存它来循环移除头部,所以我可以在之后重新附加它.

我接近这个错吗?

prolog

5
推荐指数
1
解决办法
344
查看次数

删除文本文件bash中的文件扩展名

所以我在文本文件中加载了大量文件名,这些.log文件都是特定文件:

ls *.log > finished_data.txt
Run Code Online (Sandbox Code Playgroud)

既然我有.log文件列表,我如何保留名称但删除.log扩展名?我的思维过程是将它们全部重命名?

linux bash

2
推荐指数
1
解决办法
154
查看次数

标签 统计

bash ×1

database ×1

java ×1

linux ×1

prolog ×1