Pages

Friday, May 28, 2010

一个烂尾工程:JavaScript 的 BrainFK 解释器

前几天看到Matrix67大牛推荐的名曰Manufactoria的编程游戏,非常之喜欢,玩得快要通关的时候,转念一想,诶,玩这个还不如玩BF呢。

嗯,要么我自己写个类似的BF的网页游戏?

这么一冲动,就刷刷刷写了下面的东西——剩下来的工作主要就是界面了,结果我又发现我没有时间做那工作,还得复习啊。
所以……这个烂尾工程就这么捐出来算了罢,下面的代码属于公有领域

Friday, May 14, 2010

WildCard 通配符的粗糙实现

话说今年学校又举行 ACM 程序设计竞赛了,这次我有机会出题目吓一吓那些小孩子们,心里很得瑟呢。
本意是想要出一道模拟题判断一个五子棋棋局的胜负状况;但是很神奇的是,一念之间,我就产生了一个新的想法,考 '*' 和 '?' 通配符吧。
WildCard 说起来是匹配,实际上更像是查找:比如说用 ab*??ab*ab 匹配 abababababab ,不是从头到尾比对一遍就能完成的事情,所以让他们做这道题肯定会很有乐趣。

Monday, May 10, 2010

life.cpp

#include "exceptions.hpp"
#include "human.hpp"
#include "school.hpp"
#include "food.hpp"
#include "life.hpp"

void life::eat(food &f) {
    if(!f.tasty())
        throw(error("WTF is it?!"));
    else {
        this->money -= f.price();
        f = excrement;
        this->grow();
    }
}

void life::sleep() {
    int sheep;
    for(sheep = 0; !asleep(); ++sheep)
        if(sheep<0)
            throw(astonishment("OMG!"));
    this->grow();
}

void life::work( thing& t ) {
    t = nothing;
    error up("Okay, I messed it up");
    throw up;
}

void life::haveFun() {
    throw(error("How is it possible?"));
}

void life::live() {
    while(this->alife_) {
        eat();
        work();
        haveFun();
        eat();
        sleep();
        work();
        haveFun();
        eat();
        work();
        haveFun();
        sleep();
    }
}