月归档:四月 2012

用 Haskell 编写 LURD2XSB 程序

作者:杨超 本文地址:http://sokoban.ws/blog/?p=263 (4月24日和4月28日分别更新了一次) 推箱子关卡的答案通常用LURD文本格式来保存,而关卡则用XSB格式保存。更详细的介绍可参看XSB格式和LURD格式简介。一个有趣的事情是,仅凭一个有效的LURD答案可以还原关卡的初始状态(当然,有些“多余”的箱子和空位会变成墙体)。很多推箱子爱好者都编写过小工具来做这个从答案到关卡的转换,实现这类功能的程序通常都命名为lurd2xsb。如金优编写过一个具有很友好的图形界面的lurd2xsb。银河(skyivben)也提供了一个在线的lurd2xsb工具,并写了一篇博文介绍算法。 本文的目的是用函数式编程语言(Functional Programming Language) 编写一个命令行的lurd2xsb程序。函数式编程和命令式编程(imperative programming)的主要区别是:前者更接近数学,后者更接近机器语言。因此两者编程的思路差异比较大。Haskell 是比较流行的一种函数式编程语言,最早于1990年发布,从2009年起以下图作为标识(Logo)。Learn You a Haskell for Great Good! 是一个比较好的在线教程。 下面是全部代码。可复制存为一个lurd2xsb.hs文件,然后用ghc –make lurd2xsb.hs命令编译,会生成一个lurd2xsb可执行文件。之后用 ./lurd2xsb 或 cat [lurd file] | ./lurd2xsb 命令来运行。也可以用 runhaskell lurd2xsb.hs 直接即时编译并运行。 module Main where import Data.List (transpose, intercalate) import System.IO … 继续阅读

发表在 推箱子, 编程 | 留下评论

一些推箱子网站的历史截图

作者:杨超 本文地址:http://sokoban.ws/blog/?p=241 http://archive.org 网站致力于建立一个永久收藏各个时期的互联网网站的档案馆,从1996年起,就开始以不同的频率对全球的网站进行备份。老推箱子迷十分熟悉并有着深厚感情的,但现在已经关闭的两个推箱子网站:老封和20603的网站,都能在 archive.org 找到部分历史备份。 http://www.supersoko.com 老封推箱子 http://www.20603.com

发表在 推箱子 | 留下评论