今天想跟大家聊聊我最近搞的一个有意思的东西——巴别图书馆。说起来,这个想法还是从一本书里蹦出来的,那书的作者是个阿根廷的老爷子,叫啥来着?豪尔赫·路易斯·博尔赫斯。他写个短篇小说,也叫《巴别图书馆》,里面描述一个特别神奇的图书馆,说是里面包含人类所有过去、现在和未来可能出现的书,简直酷毙! 我当时看完就想,这玩意儿现实中能做出来吗?虽然不可能真把所有的书都塞进去,但咱们可以用程序来模拟一下嘛我就开始动手。 我得先确定这个图书馆长啥样。书里说是“由不定的,也许是无限数目的六角形艺术馆组成的”,这六角形还挺特别,我就按这个设定来。我用一些简单的代码,画出一堆六角形,每个六角形都代表一个房间,这样,这个图书馆的大概样子就有。  第一步:画六角形。这一步不难,网上有很多现成的代码可以参考。第二步:把六角形拼起来。这步稍微麻烦点,得考虑怎么排列这些六角形,才能让它们看起来像一个整体。然后,就是怎么往这些房间里“放书”。我的想法是,每本书都用一串随机生成的字符来表示。比如说,这本书的内容就是“asdfghjkl”,另一本书的内容是“qwertyuiop”,这样一来,只要我生成的字符序列足够多,就能模拟出很多很多的书。  生成随机字符串。这个也不难,编程语言里都有现成的函数可以用。把字符串和房间对应起来。这一步我用一个简单的哈希算法,把每个房间的编号和一个字符串对应起来。为让这个图书馆更像那么回事,我还给它加个“检索”功能。你想,在一个这么大的图书馆里找书,没个检索功能怎么行?我就又写一段代码,让用户可以输入一段文字,然后程序会在图书馆里搜索包含这段文字的书。 实现搜索功能。这一步稍微有点挑战,我用一些字符串匹配的算法,来查找包含用户输入文字的书籍。
为让大家都能体验一下这个巴别图书馆,我把它做成一个小网站,大家可以上去随便逛逛,看看里面那些奇奇怪怪的书,还挺有意思的。 我的感受 整个过程做下来,我觉得还挺有成就感的。虽然这只是一个很简单的模拟,跟真正的巴别图书馆比起来差远,但也算是我对这个有趣概念的一次实践。通过代码,我构建一个特别有意思的虚拟空间。以后有时间,我还想继续完善它,让它变得更酷!这回的体验还不错,既动手,也动脑,还顺便复习一遍那本有意思的小说,哈哈!
|