这样的Loli开商店真的没有问题么?

Image Source,Photobucket Uploader Firefox Extension
艳阳高照的一天,我们的Loli正在家中无助的徘徊,Loli的母亲早已经不在了,Loli的父亲却又不知道为什么失去了踪影,已经好几个月没有回家了。就在这时,突然响起了一阵急促的敲门声。从小被教育着独自一人在家不要随便开门的Loli这时却忘记了父母的教诲,只当是父亲回来了,兴高采烈的打开了房门,意料之外的,房门外飘着一个小小的精灵,不明就理的Loli呆呆的望着这个看上去小巧可爱,而说话却是老气横秋的精灵。精灵告诉Loli,他的爸爸欠了别人一大笔钱,之后便不知去向了,而她现在必须代父亲偿还这笔债务。可怜的Loli当然没有那么多的钱,但是不还钱的话房子就要被抵押掉。不要啊,Loli想,难道我要去卖身了么?

Image Source
Loli的老师就曾经因为还不起钱而卖身求生

在一边的精灵看着无助的Loli似乎也觉得于心不忍,便提议到,那么便把你的家改为道具商店吧,我们来卖东西攒钱还债吧。

于是Loli和精灵的道具商店就这么开张了。

嘛~基本的故事背景就这样了,游戏也就从这里开始,你可以进行商品的买卖。简单来说就是从别处买入商品,这包括从市场买入和客人不用卖来的,另外游戏也可以在迷宫中冒险,在打败怪物时也会随机掉落物品。对于商品出售时可以进行定价,当然了,不同的客人可以接受的价格并不一样,有些人比较大款一些,而另一些却非常抠门,如果定的价格不合其意,便需要讨价还价了。至于对价格的要求,最抠门的要数镇里的Loli了,有时候原价卖都会嫌贵的家伙。
Photobucket Pictures, Images and Photos
做人要厚道啊,我只多给你加了100而已啊?

每卖出一样东西会得到一些经验点,有了足够多的经验点后Merchant Level便会提升,就可以购买更多的商品以及扩建商店。经验点每次增加基础是10,如果你能够猜对对方的心理价位,便会获得一定的Bonus Point,另外如果在不用讨价还价的情况下售出物品,也能获得Bonus Point,并且连续如此时还会以2,4,8….为等比数列提升,128封顶。所以如果想要快速提高Merchant Level时,薄利多销是一个不错的办法。
Photobucket Pictures, Images and Photos
扩建后的商店,可以摆放更多的商品以及自动售货机

游戏秉承着循序渐进的原则,开始时只能卖东西,之后随着等级的提高,买入,预定等功能也会一一由精灵进行介绍,所以虽然总的游戏介绍并不少,但是因为打散开来的原因,并不会让人觉得冗长。所以这种悲剧也不会发生了。另外游戏中还会发生随机的事件,事件会导致物品价格的涨跌,善用此事可以大量获取利润。

游戏的另外一个方面是迷宫冒险,你可以雇佣勇者进行冒险。初始时只有剑士,之后会有其他职业加入。打倒怪物可以获得经验以及物品。游戏的迷宫五层一组,每组的最后有一个Boss,大部分的Boss如果蛮打的话是费不了它们几点HP的,而是要根据不同Boss的弱点有针对性的进行攻击,大部分时候要使用场景中的道具。这个感觉和塞尔达传说非常的相似,所以说这个游戏的Boss战做的还是相当有亮点的。迷宫本身也各不相同,场景每次进入时也会随机生成,这个和Diablo又有几分相似了。打败Boss后会出现随意门(回城用)或传送阵继续进入下一层(如果有更多层的话)。
Photobucket Pictures, Images and Photos
地上的彩块是掉落的经验点,而不是敌人被打爆后的尸块..这个不是暴力游戏……

至于勇者的武器是由玩家卖出去的,不过勇者比起那些Loli更穷,所以不但从这些铁公鸡上赚不到什么钱,你还得打折给他们卖武器和防具。不过看着在迷宫里能免费拿东西的份上也就罢了吧。

当然镇上也不是一帆风顺的,有一个人就是喜欢找茬,把便宜的东西想要以几倍的价格卖给你,游戏本身没有设计拒绝的选项,而这些些家伙卖东西贵也就罢了,但这么一来却会打断Bonus Point的翻倍过程。所以每次见到那个奸商我都想要对她竖中指。当然游戏是没有竖中指的选项的,所以我也只能以声称只用1 Pix买来气气她了。
Photobucket Pictures, Images and Photos
1 Pix的言下之意就是:滚。可惜程序估计是不懂的…..另外我怀疑这个人有什么其他的作用…不过没试过也不好说。

那么在大家的帮助下,Loli终于还清了父亲欠下来的巨额债务,终于不用卖身还债了,这时精灵也将要离开,可是Loli却对精灵依依不舍起来,精灵似乎也不舍得就这么离Loli而去,看着傻头傻脑的Loli也不放心,于是便留了下来,继续了两人的道具店生涯。

总的而言这个游戏大概就是如此了,在玩的过程中让我想到了不少其他的游戏,诸如仙剑客栈,塞尔达传说,Diablo。作为一个独立游戏,应该说水准是非常优秀的了,趁着Steam感恩节特价$5入手也没觉得亏。游戏通关后可以进行Endless模式,Survival模式(每周都要还钱,一次比一次多),以及继承存档再开的选项。剧情模式里没有探索完成的部分可以在Endless里继续补完,所以可玩性还是相当高。作为一个轻松可爱的游戏,向所有不讨厌模拟经营的人推荐。

最后请允许我稍微吐一下嘈,游戏中几乎所有的道具都是我从城里的另一个市场买来再加价出售,所以既然如此那些顾客干嘛不直接去市场买啊,还到我这来,这不是冤大头是什么。另外对于价格的波动也只限于我出售的商品,也就是说如果一个100 Pix的商品因为某件事涨价了,我在市场购入的时候仍旧是100 Pix,但是售出时我却可以卖280 Pix。所以说城里的人真是冤大头啊……

实验报告 その二

继续上次的问题,对于没法输入域名后自动调用index文件和域名输入居然变得大小写敏感的情况现在仍旧没有解决办法,不过对于以前成天遇到的500错误倒是有了一个解决办法。要说是办法也不是很正确,具体而言就是无论如何把所有文件夹权限改为755,所有文件权限改为644就好了,网上所搜到的说法似乎是Apache的配置里如果做了规定则权限必须按规定设置权限,否则就会出问题。还好这么做之后我再没有遇到过500错误。

另外之前想的给blog添加banner随机更换的功能,刚一开始是想的直接修改主题文件的,也找到了一个随机读取图片的php文件不过奈何完全不会php,虽然找到了这个主题的banner配置是在header.php的“// Houston, we have a new header image!”一行之后,也是苦于不知道如何插入使用。不过好歹最后发现根本不用这么麻烦,只要用Dynamic Headers插件就可以解决,那些时间也是白浪费了。不过吃一堑长一智,后来的代码高亮插件LaTeX插件自然不会再考虑从代码开始改了,拿来即用。自然觉得顺手许多,配置什么的也是一学就会,完全没有压力。

最后同学说他实验室想要做一个知识管理系统,问我有没有什么可用的东西。我第一个想到的就是wiki,不过虽然记得在各种blog上看到不少介绍,可以之前没觉得有什么用,都没有留心。现在想要了却找不到了。最后搜了半天发现了DokuWiki,安装颇为简单,界面也够清爽,自己架了一个先玩玩。不过不会wiki语法的我愣是折腾了半天不会新建页面,还好后来发现只要输入一个没有的url就会自动新建页面了。orz这令人情何以堪啊。另外那里用的jsmath插件似是调用了mathjax来显示公式,效果比起在之前用的WP LaTeX插件转换成图片再显示效果要好一些,不过不知道这样一来在手持设备或多浏览器上的显示有没有问题就是了。刚才搜了一下,WordPress也有类似的插件不过我是懒得折腾了。

那么这次就到这里,前两天看了HTML和CSS的入门,这里的教程颇为不错,照着改了改这里的字体什么的,我看着觉得还不错,Mac 10.6下默认调用的是Hiragino的中文字体,Win下想了半天也只记得个雅黑,不过我没试过Win下的显示效果,想来也不会太坏,也就懒得看了。现在在看PHP,希望以后不会再那么狼狈了。那么之后有什么问题再聊。

PS:某人放了些很下限的banner上去,我说了几次他倒颇以此为自豪。算了,我也管不了那么多……

近况——考研,FMP,社会契约论

先说说考研吧。专业课现在只剩下记忆性的问题了,比如各种公式啊跃迁定则啊基态波函数啊能级啊之类的,理论上讲只要不出大的纰漏是可以期待两门考到280+的(死亡flag么这是)。也就是说政治和英语只要过线就足够了:政治做做模拟题再做一遍10年真题,英语背背作文用的各种模板,再复习复习单词什么的,其他的爱他妈怎么地怎么地。

然后是FMP。让我惊讶的是贺胖子居然老老实实的把全金就这么完结了,本来还以为在大学毕业前是没啥希望看到结局的。正如贺胖子一贯的风格,结局的两本写的扎扎实实,没有用任何花哨的设定(之前还以为那个S/L的设定会狗血一把)和超展开糊弄读者,虽然不能说超出预期不过也算的上是一个fair enough的结局了吧。正如某陀螺所说的,这是一个让官配党和真正的泰莎党都满意的结局,虽然各种各样的吐槽还是有:

好吧果然是活要见人死要见尸啊我X

.话说小要和宗介【哔-】的时候难道都就成3P了?

.伤疤才是木头兄您的正体么,就像眼镜之与新八唧一样?

.修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑修电脑

.现在知道苹果的品牌影响力了,那个差点被甩到地上的平板电脑贺东还要特意注明“650美元“简直就是司马昭之心啊!

不过,嘛,要是凉宫能有一个这种级别的结局我也就心满意足了。期望更出彩的结局结果作者在结局乱杀一气就是自作孽了……

关于《社会契约论》,最早看到这本书是高中时代某次逛书店扫到的,当时就被卢梭童鞋的人生经历震惊了了,被美貌的寡妇包养,这简直就是我的人生理想啊啊啊啊。好了自重一下。

个人认为现今时代中国真正缺乏的是基础性的启蒙,所谓自由民主在宣传机器的持续抹黑之下被人嗤之以鼻,绝大多数人,包括我自己不久之前(现在好很多了),对自由民主缺乏基本认知,尤其是在CCAV对伊拉克孜孜不倦地抹黑之下让我们不由产生感想:比起民主还是稳定好(这个是我和我爸当时的对话内容)。所以所谓Propaganda Bureau就是世界上最邪恶的发明之一,邪恶程度你越是了解,就越为惊讶。嘛扯远了,意识到自己对真正的政治学缺乏基本认知(虽然对于这方面有一些零散思考并且也得出了一些大致正确的结论,不过不成体系),于是与其受西方敌对势力手下支持的各种黑手洗脑,不如直接去找洗西方敌对势力的脑的著作。某本书提供了一个不错的范围,即我所谓的“四大名著”:《社会契约论》,《政府论》,《论自由》,《通往奴役之路》。需要注意的是我并没有觉得这四本书里说的全都是人间至理,虽然就目前阅读感想而言至少95%都是让我拍案叫绝的论述。论自由是我看的最早的,上学期就看完了,看的时候印象最为深刻的是那种自己的思考受到先哲肯定的愉快感(当然我不敢说这些思考是原创的,关于自由主义最早的启蒙是王小波的杂文集《沉默的大多数》)。比起写作较晚,讨论问题较具体的《论自由》,《社会契约论》成书较早(那个时候连米国都没有呢),导致由于没有任何宪政民主国家的基础,讨论起问题不由非常抽象,而且某些思想(比如农业和工商业对国家的作用)今天看来非常过时。然而瑕不掩瑜,作者对某些问题的论述具有惊人的预见性,尤其值得一提的是对于国家大小的矛盾的论述——国家太小无法自保,太大造成官僚臃肿,而全国实行同样的立法也非常困难——以及其解决之道——联邦制毫无疑问是当今世界最成功政体——美国的立国的理论基础。

现代作者要写启蒙书籍,有大把的优秀政体提供例证,哪怕追溯到20世纪初,宪政民主发展的也较为成熟了,然而一些年代比较久的著作(比如四大名著- -)却只得拿古希腊古罗马的政治体制为例讨论,让我等东方人情何以堪。然而从另一个角度讲,中国历史上自远古之后从未出现过类似民主共和之类的东西,有的永远都是人吃人的等级社会,有的只有做稳奴隶和做奴隶而不得的时代。这给我们的民族性打上了深深的烙印。扼腕啊扼腕。

再提一下里面提到的卢梭的宗教观。之所以提到这个是因为在这个问题上我粗鄙的思考又和先哲不谋而合了。所谓宗教,大体上就是用死后的世界劝人向善的理论体系,本身而言对社会很有益,毕竟尘世的无论是法律还是道德,作为外加的秩序体系,究竟有鞭长莫及之处,尤其在慎独方面两者都非常乏力,而宗教是內禀的向善力量,这是非常好的。或许某一天我也会抛弃无神论拥抱某种宗教信仰也说不定,但是,某些宗教让人非常厌恶的是他的不容忍,就是说哪怕你无论内外都如同圣徒般纯净,只要你信他的教,你就被一票否决了,即所谓“教会之外不得救”。对所有这样的宗教,卢梭坚定的表示,要直接驱逐出境,因为它们具有直接的煽动性。我的态度温和一些,不过也甭想让我信你的破教,我也绝对不会和信这种教的人深交:看着我的脸想着这货要下地狱啊呵呵呵算怎样啊。更可恶的是以异教徒作为罪名惩罚别人的宗教,这种宗教离邪教也就差了那么几毫米。

嘛拉拉杂杂的写了一大堆,收工吃饭。

最坏查找时间为O(1)的哈希算法小解

之前的网络算法课上老师讲到了一个最坏查找时间为O(1)的Hash算法,听上去挺神奇的,于是回来看了下原始的论文,顺便就总结到这里吧.

Hash 算法是个很常用的存储和查找的方法了,而其中的关键就是Hash的函数,这个函数的选取关系到最后算法的复杂度.这个算法使用了一个奇妙的函数,使得所用空间复杂度在保持O(n)的情况下最坏时间复杂度为O(1). 那么,在讲相关的数学推导之前先来定义一下所要用到的各类字母吧~

将要Hash的全部可能数值的集合统称为U,U中的元素个数定义为m. 实际要Hash的数的集合为S,其中的元素个数为n.显然我们有m \geq n,并且S \subseteq U. 除此之外,我们再定义一个p,并且p = m + 1,为了简化起见,我们认为p为素数,实际上这个也并不难做到,大不了往U里加些永远也用不到的数就好了.另外还有W,这个是将S分块后的集合,所谓的分块当然可以分一块(蛋疼不疼?),也可以分多块,准确来说如果分多块的话要加上下标来表示一下,不过这里先略去,就当做统称为W好了.那么第一步首先是一个引理.

Lemma:

给定一个W\subseteq U|W|=r 另外还有 k \in Us \geq r.令B(s, w, k, j) = | \{ x| x \in W~and~(kx~mod~p)~mod~s = j \} | 其中 1 \leq j \leq s ,于是就有 \exists k \in U 使得下面这个式子成立:

! \sum_{j = 1}^s {{B(s, w, k, j)} \choose {2}}<\frac{r^2}{s}

那么首先来解释一下吧,
B(s, w, k, j) = | \{ x| x \in W~and~(kx~mod~p)~mod~s = j \} | 的含义就是取出所有在W中的x,将这些x带入到函数(kx~mod~p)~mod~s 中计算,最后所得到的值为j的,满足这样条件的所有x的集合.那么为什么会是这样一个式子呢…..这个我也不知道..只能说数学大牛威武,灵机一动就是如此等级…. 那么后面那个式子,{B(s, w, k, j)} \choose {2}, 刚才不是算出了用前面那个函数计算过后值为j的集合么,现在我们把他们两两配对(真的可以随便配对么…你怎么知道其中的男女比例的….百合还好,要是Yoooooooooooooooooooooooooo什么的)最后得到的总对数的个数.
好吧,有了这个引理我们就可以从这个中得到两个推论:

COROLLARY1.
\exists k \in U使得\sum_{j = 1}^r B(r,W,k,j)^2<3r

COROLLARY 2.
\exists k’ \in U使得映射x \rightarrow (k’x~mod~p)~mod~r^2W中是一一映射.

这两个式子可以由引理1直接得到,就是换换B(s, w, k, j)式中的字母就可以了,并不复杂.那么前戏就到这里为止了~下面就可以上本垒进入正题了,到底要如何实现呢?
首先我们将内存称作T.并且我们将其分块,第i块称其为T_i.在T_0块的第一小块T[0]中(你知道的,程序员们数数都是从0开始的….)存放上面反复提到的k,并且根据k的值和函数f(x)=(kx~mod~p)~mod~n的值将S分割成n个块,每个块我们称之为W_j,1 \leq j \leq n,每一个W_j都被映射到对应的T_j,1 \leq j \leq n上,并且我们把j的值保存在T_0大块中的第T[j]小块中.(不要被T_iT[i]搞混了哦). 至于k值的选择,只需要满足推论1给出的条件就行了,因为推论1说满足条件的k是存在的,所以总而言之你是能找到的.而W_j映射到T_j的方法则可以由推论2来提供(这个稍后说),而且每个W_j所占用的空间是|W_j|^2 + 2.不过事情这样并没有完,推论2中不是还有一个k’么?之前的k我们记录到了T_0大块中的T[0]小块中,这个k’虽然是二房(厄…习惯性的用删除符删了不过现在找不到合适的名词了….所以大家意会吧…)但是也要保留下来用啊.另外,虽然说我们把S分割成了一堆W_j,但是并没有说是均匀分割,所以W_j的元素个数并没有准确的值,但是这个值却是很有必要的.于是我们对于每个T_i,在它的存储空间的前两部分里,一部分保存k’,另一部分就保留|W_j|.最后,其他的数x \in W_j则按照推论2的映射保存在T_j大块的第\big [(k’x~mod~p)~mod~|W_j|^2 \big ]+2个小块中.

那么现在就要到高潮部分了,最后我要查询S中的一个q要怎么做呢?

1. 设置T_0T[0]的值为k并且设置j = (kq~mod~p)~mod~n.

2. 设置T_0T[j]的值为对应T_j的首地址,由此可以得到T_j中前两格保存的k’|W_j|的信息.

3. 访问T_j的第\big ((k’x~mod~p)~mod~|W_j|^2 \big )+2个小块,则qS中当且仅当q在这个小格中.

好啦~那么我们查找的任务也就完成了~~怎么样,是不是很神奇呢?不过慢点,虽然我们查找时间上没什么问题了,但是空间上,还有构造这个结构所用的 时间上还 很糟糕.不过也并不是没有解决办法,感兴趣的人可以参考最后列出来的原始文献,这只是一个开头,后面还有好多哦,另外所有的证明也可以在文献里找到,如果你觉得我这说的不清楚,或者有错(真心希望没有错..否则的话太糟糕了….),还请参考原始的资料哦.

参考文献:

Storing a Sparse Table with O(1) Worst Case Access Time by MICHAEL L. FREDMAN AND JÁNOS KOMLÓS

PS:其实我只是来测试WP LaTeX插件的….现在预览功能莫名不能用实在是太糟糕了啊.

实验报告 その一

这里算是稍微稳定下来一点了吧,买了这个地方到今天折腾了不少东西,虽然空间有DirectAdmin面板,比起命令是要好多了,不过对于我这个新手而言仍旧是一个学习的过程,那么稍微做一些总结吧.

首先就是绑定域名,在空间中可以由控制面板直接设置,这个没问题,不过还不够,在域名的DNS管理里还要把几类主机名指向空间的ip地址,否则还是访问不了的.而且修改似乎也不是立即生效,需要等待一段时间才行.

其次是wordpress的搭建,这个网上有很多教程,不过要注意的一点是有些教程说到了需要更改目录权限,不过在我这里却会导致无法安装成功,install页面会显示为500 Internal Server Error错误,所以如果出现这种错误的话请不要更改权限了,保持原状即可.

wordpress搭建后试着装了许多插件,不过要注意的是,如果你的blog需要频繁的更改设置,请谨慎使用诸如WP super cache之类的生成静态页面的插件,这样会导致你的页面修改无法生效,而且与某些插件有冲突,比如说这个伪春菜插件,会导致其只在第一次打开页面时才会显示,刷新后就会神隐.为了这个错误调了我一下午,希望以后别在有人遇到这种糟糕的事了.

其次是给文件夹加密,对于apache空间可以用.htaccess和.htpass来加密,教程仍旧是现成的,不过我这里手工创建这两个文件后,虽然验证框能够显示,但是验证成功后却会出现该死的Internal Server Error错误,不知道原因是什么,但是后来发现空间控制面板自带加密选项,只要在文件夹上点protect就好了,看了一下它的实现,仍旧是增加.htaccess和.htpass文件,写入的东西也一样,不过不知道为什么我手工建立却不可以.

最后是另外一次灵异事件,是当我想要用iWeb上传首页时出现的,本来刚开始建立空间后我就用iWeb上传过一个首页,当时没有任何问题,但是这次上传后完全没有显示,仍旧是空间默认的页面,同时出现了所有页面,除了blog以外必须要在域名里指定index.php或index.html来访问的情况,而且对于域名还是大小写敏感的.这着实令人崩溃.而且至今没有找到解决办法,临时的解决方式是在所有出现这个问题的文件夹下创建.htaccess并在里面写入DirectoryIndex index.php(或index.html)来强制读取对应的index文件,但是仍旧觉得这很不安稳,不过好歹这样能用,所以在弄明白原因前就这样好了.

好吧,那么第一次实验报告就这样了,希望以后不会再有这些奇怪的问题,毕竟一折腾就是半天,还是很浪费时间的……