魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
查看: 522|回复: 9
打印 上一主题 下一主题

《百川归海》系列关卡的诞生 [复制链接]

Rank: 4

积分
1613
帖子
157
精华
1
UID
1333517
性别
保密
兴趣爱好
推箱

四年元老 六年元老 八年元老

跳转到指定楼层
1#
发表于 2025-4-7 17:35:00 |只看该作者 |倒序浏览
本帖最后由 cjcjc 于 2025-4-18 09:54 编辑

200期比赛开始前4天,群里在讨论《百花齐放》。那关是100期比赛时,an版主所作的特别关卡,挂在推箱子网站主页8年,还没有人解开,也包括我。我对这种orimaze关卡一直没找到窍门,研究了几次都没有进展,所以就丢下了。书归正传,an版主问我要不要做一个200期的特别关卡?我当时什么想法都没有,何况按我的经验,如果编一个主关级别难度的关卡,少说要几个星期,多了几个月可能都不止,而且白天需要工作,只有晚上几个小时用来编关,所以我只是说试一试,没觉得能做出一个像样的关卡。
之后我在思考,怎么样才能做出一个有意思的特别关卡呢?当天晚上,我突然想到了0空位腾挪,0空位腾挪顾名思义就是在一个局部的腾挪里,不仅没有整位,连一个半位也没有。在03大师、xian兄、伞兄等人的一些关卡中,就有0空位腾挪的局部,不过只是作为关卡中很小的一个元素,这部分的腾挪通常也不复杂,我自己也研究过0空位腾挪,有一点经验,但是没有应用到编关中。半位关卡中,经常会“天然”地出现一些0空位腾挪,就是并非作者故意设计,而是凑巧出现这样的局部。不过我当时还没有见过一个大关卡中,从头到尾整体都是0空位的(后面我问了下an版主,他说他之前也没见过类似的关卡)。那如果能设计出这么一个大关卡,关卡整体没有空位,全程都是0空位腾挪,岂不是很有意思?
因为时间紧迫,手动设计肯定是来不及了,于是我想到,可以用电脑,随机生成一个规整的0空位初始盘面,在不死锁的前提下随机乱推若干步,说不定就可以生成一个比较难的关卡了,后期我也可以在此基础上手动做一些调整,增加点难度(实际上生成的关卡太大了,想要手动做调整增加难度不知道该如何下手,所以最后就把这步省掉了:p)。于是我立刻开始动手,在DeepSeek辅助下,于比赛开始前3天完成了代码。为了方便实现随机生成关卡的功能,我加了一些限制:初始盘面是正方形,关卡内部的墙都是1*1大小的,墙与墙的距离都是1。生成初始盘面,我用的算法是:从左上角C3内墙开始,找到相邻的内墙,然后随机挑其中一个用箱子连起来,直到把所有内墙都连起来为止,就好像有很多河流,最后汇在一起,形成了一张复杂的网络一样。于是,我就给当时还未成型的关卡先定好了名字——《百川归海》。后面随机打乱时,也用了类似的算法,这里就不具体说了,有兴趣的朋友可以看看代码。
这样随机生成一个初始局面,再随机打乱若干步,把打乱后的局面作为结束局面,就得到了一个随机的0空位关卡。这个关卡一定是有解的,随机打乱的步骤就是关卡的答案,我又抄袭了一下愉翁兄推箱快手的代码,写了一个把打乱步骤翻译成lurd格式答案的功能,经过一番调试之后开始第一次运行,生成了一个99个箱子,随机打乱10万步的关卡,发给了an版主。这个关卡随机打乱的步骤翻译成lurd之后有400万步,当时我手边的电脑内存比较小,优化不下去,我估计那关的最优步数在10000步以内,甚至可能只有一两千步。我手动推了一下这个关卡,当时没什么经验,又比较晚了,脑袋转不动了,觉得这关难的离谱,转来转去完全找不到过关的方法。推起来的感觉有点像orimaze关卡,又有点像以前出现过的moves=pushes关卡,还有点像魔方,总之是挺有意思的。于是决定就这样,生成一个尺寸更大的、打乱步骤更多的关卡作为最终的版本。
我设置成48*48-1=2303个箱子,随机打乱100万步,开始运行程序,跑了一天一夜,到比赛前2天晚上还没跑完。经过一番调试发现是把打乱步骤翻译成lurd的代码运行太慢了,于是后面改成把打乱步骤保存成点推,运行快了很多。我的代码还是效率太低了...
同时,我又有了一个新的想法。按上面的规则生成的《百川归海》类型的0空位关卡(简称b型关卡),箱子只能在同一行或者同一列中运行,这一点群里的朋友关山月也指出来了。如果把内墙改成两个1*1的墙对角摆放,整体还是0空位,但是箱子就可以运行到相邻行列了,变化的可能性增加很多。于是我按新的想法修改了代码,在比赛前1天晚上完成了修改,生成了《万丈深渊》型0空位关卡(简称w型关卡)。当时我以为这样生成的关卡会比《百川归海》难度高一个档次,《百川归海》已经难的离谱了,那这关岂不是压根不是人类能解开的关卡?我觉得《百川归海》如果是100,那这关至少也是10000吧,所以取名叫《万丈深渊》。
于是我有点得意忘形了,批量生成了一大堆关卡,也就是分享在群里的《百川归海集合》,分享给了an版主。其中:《潭池》是24箱子,随机打乱1000次生成的,这20关难度基本都是0;《溪流》是48箱子,随机打乱1万次生成的,这20关有一点难度,但是经过思考还是能过关;《湖泊》是99箱子,随机打乱1万次生成的,这20关已经很难了,我当时试推了一关,完全没找到方法;《江河》是224箱子,随机打乱1万次生成的;《海洋》是399箱子,随机打乱10万次生成的;《百川归海》是899箱子,随机打乱100万次生成的,这一关就是最终的版本,这关的关卡尺寸和箱子数量都和100期的特别关卡《百花齐放》差不多;《百川归海(恐怖版)》是2303箱子,随机打乱100万次生成的;《万丈深渊(轻松版)》是99箱子,随机打乱10万次生成的;《万丈深渊》是399箱子,随机打乱300万次生成的,这关和《百川归海》的尺寸保持一致;《万丈深渊(恐怖版)》是1023箱子,随机打乱300万次生成的。随后比赛开始当天,我把这个关卡集分享在了群里。
完成比赛关卡后,我开始推《百川归海集合》。虽然这个集合中的关卡在生成时把答案也保存下来了,但是我没有实际推过。推了一上午搞定了前40关和《湖泊》中的一关,基本了解了关卡的特点,也掌握了这类关卡的腾挪方法,发现没有我想象中的那么难,完全达不到“难的离谱”这个级别,不过我觉得难度可以达到9.0分。我也试推几个了w型关卡,也发现比想象中简单很多,之前的评价“压根不是人类能解开的关卡”过于夸张了。因为虽然箱子可以运行到相邻行列,变化的可能性提高了一个数量级,可是相应的腾挪也更加自由了,有的时候打乱的步骤很复杂,但是可以用简单的方式还原回去。另外,因为内墙形状比较复杂,所以相同尺寸的w型关卡比b型关卡箱子数量少很多。不过w型关卡还有一个特点,就是结构太花了,对人类眼睛不太友好,总之我觉得难度大概也是9.0分。虽然这两关难度没有我想象的那么高,不过至少是创新的,而且是有趣的,作为特别关卡也挺合适,至于名字,也懒得重新起了,将错就错吧。
最后把随机生成关卡的程序分享给大家,用java写的,运行时需要有java环境。运行命令是 java -jar sokoban.jar w 10 1000,其中第一个参数是生成关卡的类型,w是生成w型关卡,b是生成b型关卡,第二个参数代表关卡尺寸,生成关卡的箱子数量等于第二个参数的平方减去一,第三个参数代表关卡的随机打乱步数。生成关卡的尺寸不能超过100*100,换言之w型关卡第二个参数最大是32,b型关卡第二个参数最大是48(也就是恐怖版两关的尺寸)。理论上,随机打乱的步数越大,生成的关卡就越难,但是到一定步数之后再打乱难度就变化不大了,所以第三个参数也不需要设置太大。参数数量和参数值不对会提示错误,如果正常运行会生成一个文本文件,里面有关卡的xsb格式和点推格式答案。这一系列的关卡就到此为止了,以后我不再用程序随机生成这种关卡了,感觉没什么意义了。

关卡类型 参数1 参数2 参数3
《百川归海》型(b型) b 不大于48,生成关卡尺寸为(2n+3)*(2n+3) 打乱步数
《百川归海-扩展版》型(e型) e 不大于48,生成关卡尺寸为(2n+3)*(2n+3) 打乱步数
《万丈深渊》型(w型) w 不大于32,生成关卡尺寸为(3n+3)*(3n+3) 打乱步数
《百舸争流》型(g型) g 不大于32,生成关卡尺寸为(3n+3)*(3n+3) 打乱步数



百川归海附件.zip (64.39 KB, 下载次数: 13)   4.7 关卡生成器v1 + 百川归海集合.xsb
附件2.zip (63.22 KB, 下载次数: 3)   4.10 关卡生成器v2 + 百舸争流.xsb
sokoban.zip (24.27 KB, 下载次数: 4)   4.13 关卡生成器v3
sokoban.zip (28.15 KB, 下载次数: 3)   4.17 关卡生成器v4
已有 2 人评分经验 收起 理由
sokoban + 20 精彩创新!
anian + 20 非常精彩! 谢谢分享关卡和制作过程和代.

总评分: 经验 + 40   查看全部评分

Rank: 4

积分
1220
帖子
106
精华
4
UID
1316434
性别
保密
兴趣爱好
推箱

智力游戏设计大师 超级搬运工

2#
发表于 2025-4-8 00:38:41 |只看该作者
非常精彩的系列关卡!

记得在讲解我设计的一个比赛关卡时,用过“无位腾挪”这个概念,cj兄在回帖中改用了零位腾挪,这个词用得特别好,比我使用的无位腾挪更贴切。本以为零位腾挪不容易做得太难,想不到cj兄研究到这么深。还没试推,待有空时再学习。

使用道具 举报

Rank: 4

积分
1613
帖子
157
精华
1
UID
1333517
性别
保密
兴趣爱好
推箱

四年元老 六年元老 八年元老

3#
发表于 2025-4-8 09:22:49 来自手机 |只看该作者
本帖最后由 cjcjc 于 2025-4-8 09:41 编辑
20603 发表于 2025-4-8 00:38
非常精彩的系列关卡!

记得在讲解我设计的一个比赛关卡时,用过“无位腾挪”这个概念,cj兄在回帖中改用 ...


翻了下以前的帖子,在149期的解析中,03大师提到了无位腾挪的概念。时间过去太久,我给忘记了,所以随便起了个名字,表达的是同一个意思。

这类型的关我其实也是刚刚开始研究,只是有一个想法,做出来了效果看上去还行。对其中深层次的规律,我还是没有头绪,等待03大师的研究成果。

目前我总结的规律,只有很简单的一条,就是这关的局部最优,大概率是全局最优。也就是可以用贪心的方法,一个部分一个部分地归位最后完成关卡。再换句话说就是这关好像没有什么顺序,无论从哪个角落开始,最后都可以过关。当然这种均匀性可能只是因为电脑随机生成导致的,不具有普遍性。

使用道具 举报

Rank: 4

积分
1613
帖子
157
精华
1
UID
1333517
性别
保密
兴趣爱好
推箱

四年元老 六年元老 八年元老

4#
发表于 2025-4-10 22:49:42 |只看该作者
分享两个新的零空位的关卡

###############################################################
#@------------------------------------------------------------#
#-##$##*##$##$##*##*##*##$##.##-##*##-##.##.##*##.##.##.##.##-#
#-##-##-##-##-##-##--#-##--#-##-##-#--##--*-##--#-##-#--##-##-#
#-.--*-----*--.-----.--$-----*--$--.--$--$--$-----*--$--$--*--#
#-##*-#$##.-#.-#$-#*#--##$#-$#-.##$-#$##*##$#-$##$##$-#.-#$-#-#
#-##-*#-##-**-##-##--#-##-**-##--#-*#-##-##-**-##-##-*#-##-##-#
#-*--*--.--*--$--------*--.--*--*--*--*--*--.--.--------.--*--#
#-#--#-*##-##*-#.-#.##*-#-#####-##.##--#--#*##--#.##*##*-*$##-#
#-##-##-#--##-##-##-##-*#--#-##-#--##-##-**-#--#--#--##-##-##-#
#-$--.-----.--*--*-----.-----$--*-----.--------*--$--------.--#
#-##.-#$-#$##$#-$##-#-*##$##--*-##.##.##-##*##-##.##*##*##*##-#
#-##-##-##-##-**-##-##-#--##-#*-##-##--#-##-##-#--##--*-#--##-#
#-$--.--.--$--$-----*--*--.--.--*--$--$--#-----#--*--.--------#
#-#-*##$-#.##-##*#-$##--#.##.##--#.-#-#-*##.#-$##-#--##.-#--#-#
#-##--*-##-#--##-#*-#--##--#-##-*#-##-#*-##-#*-#--#*-##-##-##-#
#-*--*-----.-----#--*-----$--*--*--$--$-----.--$--#--$--*--*--#
#-##-##--#*##$-**##.##.##*##-##*#-*#--##*##$##--#$##-##--#*##-#
#-##--#-*#-##-##-##--#-#--##-##-##-##--#-#--##-##-##-#--##-##-#
#-*--.--*--.--$------#-$--.--$--*--.--$--.--.--*-----*--*--.--#
#-#--#--##--#.##*##-##$-#$##$#--#--#-*#--##--*.##$##--#*##--#-#
#-##-##-##-##-##--#--#-##-#--#*-##-##-#*-#--#*-##--###--##-##-#
#----*--.--$--$-----*--#-----.-----*--.--*--*-----$-----.--$--#
#-##$##*##$-#--#$##.##.##$##*-###-.##--#*-#.##*##*##$##*-#*##-#
#-##--*-##-#####--#--#--*-#--##-##-#--##-##--#-##-#--##-**-##-#
#-*-----$--*--*--------*--*--------$--$-----$-----.-----.--.--#
#-##.##*#--##--*-#-*#-*##--#*-*$#-*##*-#$#--##*#####.##-##-##-#
#-##-#--#*-##-##-##-##--*-##-##-**-#--##-**-##-#--##-##-##-##-#
#----$--.--.--*-----.--.--$---#-------*--.--$-----#--$--*--$--#
#-#-*##.##*-#$##*-#$#-$##.-#--#$##--#$-**##-##--#.##--#*#-*##-#
#-##--*-#--#--#--#--##-##-#--##-##-*#-##-#--#####-##-##-##-##-#
#-$-----------$--#--$--$-----$--*--*--$--.-----*--.--$--.--*--#
#-#--##*##$##$##.##--#.-#.##$##.#--##.#-*##*##*##$-#*##*##--#-#
#-##-##-#--##--*-#--##-##-##-##-##-##-##--#--#-##-##-##-#--##-#
#-.--.--$--*--*--$--*--.--*-----.--.--*--$--$--$--------$--.--#
#-#-*##-##.##.##--#.##-##$-#.##$##$-#$#-.##.##.#--##-##$-#*-#-#
#-##--#--*-##--#-##-##-#--##-##-##-##-##-##-##-#*-##--#-*#-##-#
#-.--$-----#-----$--$--$--*-----*-----$--*--------*--.--*-----#
#-##$##$##*##*##.-#--*.##.##.-*$#-*##.##.#-*#-$##$##$##-##$##-#
#-##-##--#-##-##-##-*#-##-##-##-##-##-##-##-#*-#--#--##-##--#-#
#-*--*--$--$--.-----*-----*--$--*--------*-----*--.--.--.--*--#
#-##.##.##-##*##.#-$##$-*.##-##.-#.##$#-$##$-#.#####--**##*##-#
#-##-##--#--#-#--##--#-#*-##--#-##-#--##-##-*#-##--#-*#--#--#-#
#----*---#-.--------$-----.--------$--*--$--*--$--$--.--$--*--#
#-##$#--#####.##*-####*##*##$##.-#*##-##.-#.#-.##.#-$##.#--##-#
#-##-##--#-#--##-##-##--*-##-##-*#-##--#-##-##-##-##-##-#*-##-#
#-*--------$--.--#-----$--.--$--.--$--.--#-----#-----$--.--*--#
#-##*-#.##$-#*##-#-$#-.##*-#.-#*##-#-.#-$##-#-*##.##*-#$##-##-#
#-##-##-##-**-##--#-##--*-##-##-#--##-##--*-##-##--#-#--##--#-#
#-$-----.-----*-----$--*--$--.--$--$--$--$--*--*-----$-----.--#
#-##.##$#####.-*.##$-*.##.-#$##--#.##.-#-##.#--##.##$-#*-#*##-#
#-##-##-##-##-*#-#--#*-#--##-##-##-##-*#--#-#*-##-##-*#-*#--#-#
#-.--$--$--.--$--.-----$--------$--.--$--.--$-----.--$--.--$--#
#-##*##.##*#-*##$-#.##*##$##*##-#-*#-.##.##$##-##*##$#-*#-.##-#
#-##-#--##-##-##-*#-##-##--#-##-**-##--#-#--#--#--#--#*-#*-##-#
#----$--.-----*--------*-----.--*--------.--.-----*-----$--.--#
#-#-*##.##*#-$##-##*##$##*##.-#*##*-#*##--#--#*-#$##*##.##-##-#
#-#*-#--##-##-#--#--##-##-##-##-##-*#-##-##-##-*#--#--#-##-##-#
#----*-----$--$--$--*--*-----$--*--$--$--*-----.--.--$--$--*--#
#-##*##.##*##-##.##.-#.##*-#--#.#-.##.#-$##*#--##*##*##.-**##-#
#-##-##-##-##-##-##-##-##-##-##-##-##-##-##-##-##-##-##-##-##-#
#-------------------------------------------------------------#
###############################################################
Title: 百舸争流
Author: cjcjc

使用道具 举报

Rank: 4

积分
1613
帖子
157
精华
1
UID
1333517
性别
保密
兴趣爱好
推箱

四年元老 六年元老 八年元老

5#
发表于 2025-4-10 23:15:51 |只看该作者
本帖最后由 cjcjc 于 2025-4-10 23:20 编辑

第二关太大了,所以放在附件里了。我修改了一下关卡随机生成的规则:一是把初始局面中随机的一些箱子变成墙,二是“路口”的类型不再固定,每个路口箱子的可能运行方向是随机的。关卡生成器sokoban.jar也更新了,可以生成的零空位关卡类型增加了一种,运行命令是:java -jar sokoban.jar g 10 1000,g型关卡第二个参数的最大值也是32

The attachment contains xsb file of two new zero space levels and a new version of generator. The new rules for generating g-class zero space levels are:
1.randomly select boxes transform into walls;
2.types of crossings are randomized.
The command to run the new version generator is: java -jar sokoban.jar g 10 1000, where the maximum value for the second parameter is 32.

附件2.zip (63.22 KB, 下载次数: 5)
已有 1 人评分经验 收起 理由
anian + 20 很给力!

总评分: 经验 + 20   查看全部评分

使用道具 举报

Rank: 1

积分
101
帖子
18
精华
0
UID
1256966
性别
兴趣爱好
推箱

超级搬运工

6#
发表于 2025-4-12 02:37:06 |只看该作者
Thanks for bringing these 0-space levels to my attention — they’re incredibly challenging!
I've been experimenting with adapting the JSoko solver to better handle this type of level (focusing only on the b-type ones), but so far it can only solve the smaller versions.

Do you have any tips or techniques for solving b-type levels? I'd love to understand the kind of reasoning or strategy that works best with these puzzles.

Also, huge thanks for writing and sharing the generator! It's always exciting to see how level generators work. Reminds me a bit of this site:
https://www.linusakesson.net/games/autosokoban — each time you visit, a new Sokoban puzzle appears, and the randomness sometimes leads to some surprisingly clever layouts.

One more question about your code:
In the ZeroSpaceLevelGenerator file, I noticed you're removing the direction info from the solution string:
  1. dt = dt.replace("-U,", ",");
  2. dt = dt.replace("-D,", ",");
  3. dt = dt.replace("-L,", ",");
  4. dt = dt.replace("-R,", ",");
  5. dt = dt.replace("-U)", ")");
  6. dt = dt.replace("-D)", ")");
  7. dt = dt.replace("-L)", ")");
  8. dt = dt.replace("-R)", ")");
复制代码
That seems to make the solution incompatible with SokobanTool (run via java -cp .\sokoban.jar com.c.SokobanTool), since it expects direction data to be preserved.

Is there a specific reason for removing those directions? Just curious about your thinking there.

Thanks again — really impressive work overall!

I don't know if you understand my english text, hence, here is a translation:
感谢你让我注意到这些 0 空位关卡 —— 它们真的非常具有挑战性!
我一直在尝试调整 JSoko 的求解器,使其能更好地处理这种类型的关卡(目前只专注于 b 型关卡),但目前它只能解出一些尺寸较小的版本。

你有没有什么关于如何解决 b 型关卡的技巧或方法?我很想了解在这种谜题中,哪种思路或策略最有效。

另外,非常感谢你编写并分享了关卡生成器!看到这些关卡生成器是如何工作的总是很有趣。这让我想起了这个网站:
https://www.linusakesson.net/games/autosokoban —— 每次访问都会生成一个新的推箱子关卡,而且这些随机生成的关卡有时候会意外地非常巧妙。

还有一个关于你代码的问题:
在 ZeroSpaceLevelGenerator 文件中,我注意到你删除了解析出的路径方向信息:
  1. dt = dt.replace("-U,", ",");
  2. dt = dt.replace("-D,", ",");
  3. dt = dt.replace("-L,", ",");
  4. dt = dt.replace("-R,", ",");
  5. dt = dt.replace("-U)", ")");
  6. dt = dt.replace("-D)", ")");
  7. dt = dt.replace("-L)", ")");
  8. dt = dt.replace("-R)", ")");
复制代码
这似乎导致这个解法文件无法被 SokobanTool 解析(使用命令 java -cp .\sokoban.jar com.c.SokobanTool 运行),因为它需要保留方向信息。

请问你这样处理的原因是什么呢?我很好奇你当时的考虑。

再次感谢你所做的一切工作,真的很令人佩服!

使用道具 举报

Rank: 4

积分
1613
帖子
157
精华
1
UID
1333517
性别
保密
兴趣爱好
推箱

四年元老 六年元老 八年元老

7#
发表于 2025-4-13 16:49:55 |只看该作者
MatthiasM 发表于 2025-4-12 02:37
Thanks for bringing these 0-space levels to my attention — they’re incredibly challenging!
I've b ...

我尝试了几十个b型关卡,可能存在下面的规律:1.随机从一个角开始归位,比如左上角,结束的地方最好也在角落里,而不是在中间部分;2.使未解决的区域尽量是凸的,比如先解决左上5*5的区域,之后尽量先解决左边5列或者上面5行;3.已经归位的区域大概率不需要再做腾挪;4.为了使一个箱子到达它的位置,可以尽量使它后面的箱子远离它,例如,想要推第二行第二个箱子,它对应的目标点一定是第二行第二个目标点,那么可以把第三个和后续的箱子尽量往右推,给第二个箱子尽量多的空间;5.求解过程中,只需要关注一种死锁,看是否有人到达不了的区域、或者有墙和箱子首尾相连、或者是否有一条额外的通路。

至于代码问题,SokobanTool是我以前研究推箱快手代码时写的一个练习程序,有一个图形化界面把关卡的lurd答案和点推答案互相转化。我一开始想使用这个代码把打乱步骤转化成lurd答案,但是速度很慢,所以后面改成输出歪推可以加载的点推格式答案。我重新分享一下我的程序,删掉了没用的类,优化了一下代码。

I tried dozens of b-class levels and may have identified the following patterns:
1.start solving from a random corner, such as the top-left corner, and ideally end in another corner rather than the middle section.
2.keep the unsolved area as convex as possible, for example, finish the top-left 5x5 area first, then prioritize solving the left 5 columns or the top 5 rows.
3.areas that have already been solved generally don’t require further pushes.
4.to push a box to its target position, try to push the boxes behind it farther away. eg, if you want to push the second box in the second row (whose target is definitely the second target in that row), you can push the third and subsequent boxes as far right as possible to create more space for the second box.
4.during the solving process, only one type of deadlock needs attention: check if there are unreachable areas.

for the code issue, SokobanTool was a practice program I wrote while studying the code of BoxMan. It has a GUI that converts LURD solutions to position form solutions(or axis solution? a solution in the format like C2-C5,..., I'm not sure how to describe it in English.) and vice versa. Initially, I intended to use this code to convert random push steps into LURD solutions, but it runs too slowly. So I modified it to output position solutions that can be read by YSokoban. I’m sharing my program again after removing unused classes and optimizing the code.

使用道具 举报

Rank: 1

积分
101
帖子
18
精华
0
UID
1256966
性别
兴趣爱好
推箱

超级搬运工

8#
发表于 4 天前 |只看该作者
Thank you for all your insights into the B-type levels!

I will study the levels and your hints. Maybe I can write a solver that can solve some of them.

由ChatGPT翻译:
感谢你分享关于B型关卡的深入见解!
我会认真研究这些关卡以及你提供的提示。或许我可以写一个求解器,来解决其中的一些关卡。

使用道具 举报

Rank: 4

积分
1613
帖子
157
精华
1
UID
1333517
性别
保密
兴趣爱好
推箱

四年元老 六年元老 八年元老

9#
发表于 4 天前 |只看该作者
###############################################################
#@--.-*-------------*-------.-$---$-.-.---$-----$---.---$-----#
#*#-#-#$#-#*#.#$#.#.#*#.#*#$#$#*#-#.#$#$#*#*#.#$#-#*#*#.#-#$#$#
#---$-$-.-$-.-$-.-*-----$-----$-.---.-.-$-----*-.-----*-$-.-*-#
#.#.#$#$#-#.#.#*#$#-#*#$#*#.#$#.#.#*#$#$#*#$#.#*#*#*#*#-#.#$#.#
#-*---*-*-$-$---*-.---.-*---.-*-$---$---$-.-.---$---*---*-.---#
#-#$#*#.#.#*#-#-#-#*#.#-#.#$#$#$#*#.#.#*#$#.#*#.#-#.#$#-#$#.#$#
#-.-$-*---*-.-*-$-*-.-$---.-----$---*-----$-*---$-*-.-.-$---.-#
#-#*#.#-#$#$#$#.#-#-#.#*#-#*#.#*#*#.#.#-#.#-#*#$#$#$#.#*#*#*#-#
#-.---*-.-$---*-$-$-$-.-$---$-$-.-.-.-$-$-.-.---*-.-.-----$---#
#$#.#-#.#*#*#-#.#$#*#$#$#*#*#.#.#-#$#.#$#*#-#$#-#*#$#*#-#$#.#*#
#-.-*-.-.-----*---*-----$-----.-$-$---$-*---$-.---*-----.-*-$-#
#$#$#-#-#*#-#*#*#-#$#.#.#*#.#.#$#*#*#.#-#*#.#.#*#-#$#$#*#-#-#-#
#-*---$-*-*-*-.-$-*-.-*---.-$---*-*---*-.-$-$-*-.-$-.-*-----*-#
#-#-#*#$#-#*#-#*#*#$#$#$#*#$#*#.#-#$#.#$#.#.#$#$#.#.#*#.#.#.#-#
#-----.---.-------*-.-.---$-----*-$-.-$---.-$---$-.---$-$-*-*-#
#.#$#$#.#$#$#$#.#$#*#$#$#-#$#.#-#-#.#$#-#-#*#-#.#.#$#.#-#*#$#.#
#---*---.-*-.---.-.-*-$-*-.-*-$-*---.-*-*---$-$---*---*-$-*-$-#
#*#-#-#-#*#$#*#$#*#$#.#.#.#*#*#-#.#$#.#.#*#*#-#*#$#.#.#-#-#.#-#
#---*-*---$-$-*---.-$-.-*---$-.-$-.-*-*---$-.-*-.---$-*-*-*-.-#
#$#-#*#*#*#.#-#.#$#*#-#-#-#*#$#*#.#-#-#.#*#-#.#$#$#*#-#-#-#-#-#
#-.-.-$-.-------*---.-$-*-$-.---*-$-*-*-.-$-*-$-*-.-----.-$-$-#
#$#.#-#.#*#*#.#-#.#*#*#-#-#.#$#*#$#*#$#-#.#$#*#-#*#*#*#$#.#$#-#
#-$-*-$---$-$-$-.-.-*-.-$-.-.-.-----*---*---*-$-----.---$-*-.-#
#.#*#.#.#*#.#.#$#-#-#$#*#.#$#$#$#*#$#$#*#$#$#.#*#*#$#-#*#.#*#-#
#-$-.-.-----*-$---*-----$-.-.---.---$-$-*-*-$---.-*---.-$-$-.-#
#.#$#$#-#*#.#$#*#-#*#.#$#$#-#*#-#*#$#.#.#-#.#$#.#$#-#$#*#-#.#*#
#-*-.-$---$-$-*---$---$-.---$-.---.-*-*-*-$-*-$-.---.-.---.-*-#
#-#$#.#$#$#.#-#.#.#$#-#*#-#-#*#*#$#*#-#-#-#.#.#*#.#$#*#$#*#-#-#
#-$-.---*---*-.-$-$-.-.---*---.---$-$---*-----$-.---.-$-$-*-.-#
#-#-#*#$#$#$#$#$#$#*#*#-#.#-#*#-#*#.#-#*#*#-#$#*#*#-#-#.#.#$#-#
#-.---$-*-*-.-.-.-.-.-.-*-$-$---*---*-$-*-$-*-*---$-$-.---*-$-#
#.#*#*#-#.#*#$#*#.#-#$#.#*#*#*#$#-#*#.#-#-#-#.#-#-#*#$#-#*#-#-#
#-.-$-$-*-$---.-$-$-*-$-.-*-*---*---$-.---.---*-*-.-$-.-.-$-.-#
#-#-#.#-#.#*#$#.#-#*#-#.#$#-#$#.#-#-#.#$#$#*#-#.#.#$#*#-#$#.#*#
#-$-.---$---*---$-.-*---*-$-*---$-*-.-*-*-.-$-*-*-.---.---*-*-#
#*#-#*#.#*#.#.#-#-#$#.#-#-#-#.#.#$#$#-#-#-#*#-#-#-#-#*#*#-#$#-#
#-.-$-.---.---$-*---$-$---.---*-$-.-.-.-.-.-$-*-$-$-$-----.-$-#
#-#.#$#-#*#$#.#.#.#-#-#*#*#.#*#.#-#$#$#.#$#*#$#.#$#.#.#-#-#-#.#
#-*-.-$-*---.-$-.-*-*-*-----$---*-*-.---.---.-*-$---$-*-*-$---#
#-#-#$#*#-#.#*#-#$#*#$#*#-#-#*#-#-#.#$#$#.#*#$#$#.#*#*#*#$#.#.#
#-$-*-.-*-$---*-$-*-$---*-*-*-.-.-$---.-$-.---.-*---*-*-.-$-*-#
#$#*#.#-#-#*#.#-#.#.#.#$#$#.#-#-#$#*#-#*#*#*#$#*#-#*#-#$#.#-#-#
#---.-*-$-.-$-*---*-*-.---*-*-$-*-$-.-.-----.---$-$-----.---$-#
#-#*#$#*#.#.#$#$#$#-#$#.#*#$#*#*#-#-#-#.#*#$#*#*#$#*#*#$#*#$#$#
#-------*-$-$---.-----.-*-----$---.-*-*---$---$-.-$---.-*---.-#
#$#.#*#*#*#$#*#*#$#.#.#$#*#.#*#*#.#$#*#-#*#.#*#.#$#*#$#-#*#-#-#
#-.-----.---*-------$---.---$-----*-$-.---.-$---$-$-*-.-----*-#
#-#*#*#$#*#*#$#*#*#-#-#$#*#-#.#$#-#-#.#*#-#$#-#$#.#.#$#*#*#.#*#
#-----------$-.---$-*-*-------*-.---*-$-*-.-*-.-$---*---------#
#$#-#.#$#*#$#*#$#.#*#$#.#*#*#-#*#*#*#-#.#-#$#.#*#*#-#*#$#$#*#.#
#-.-$-.-.---*-.---*-$-$-$-*-.-$-.-.-$-*---*-*-$-$-.-*-$-*-.---#
#*#*#-#$#*#$#$#$#.#.#-#*#-#-#.#-#-#.#$#$#$#-#-#.#$#.#.#-#-#$#*#
#---.-*-.-$-*-$---*---*---$-*-.-*-$-*---.-.---.-$-*---$-*-*---#
#*#-#*#.#$#-#-#-#.#.#-#*#-#.#-#*#$#*#$#*#-#-#-#-#.#.#*#.#-#-#$#
#---$-----.-*-.-$-*-*---*-.-$-.-$-$-$-.---*-*-*-$-.-*-$---.-.-#
#-#*#*#.#.#.#.#-#$#$#-#*#-#*#$#-#.#.#$#*#$#-#*#*#.#$#-#*#-#*#$#
#-.-.-$-$-$---$-.---.-*-$-.-$-*-.-.-$-$-.-----.-----$---.-*-$-#
#.#-#*#*#$#*#.#*#-#.#-#.#-#$#.#$#$#-#-#-#.#*#$#*#-#.#*#.#-#-#.#
#-$-*---*-.---.-$-$-*-*-*-.-*---$-*-*-*-$---*-.-.-*-*-$-*-*-.-#
#.#-#*#-#.#$#*#-#*#*#-#-#$#-#-#*#.#-#-#.#.#*#-#$#*#-#.#-#$#-#$#
#-$---------$---.---$-.-----.---$-.-.---*-$-------$-----.-----#
###############################################################
Title: 百川归海(扩展版)
Author: cjcjc

分享一个新的关卡,这个关卡和《百川归海》的区别只有,随机生成箱子的时候可以随机在第一行、最后一行、第一列、最后一列,其他的规则是一样的。sokoban.jar也更新了,运行命令是:java -jar sokoban.jar e 10 1000

使用道具 举报

Rank: 7Rank: 7Rank: 7

积分
5306
帖子
3246
精华
19
UID
13140
性别

论坛建设奖 八年元老

10#
发表于 昨天 10:22 来自手机 |只看该作者
百川归海系列的确很有创意。内墙和箱子形成一棵支撑树(spanning tree)。目标状态又是另一棵支撑树。解关过程就是两棵支撑树之间的转化。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2025-4-21 06:13

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部