Thursday, January 6, 2011

2010, 本命年


2011的第一篇。

回顾:
     2010是本命年, 在这一年发生了很多事, 有好有坏, 总结下来一句话, 本命年不易过。
     首先是来到了美帝, 托福始终不够线, 于是选择曲线救国, 参加了一个对托福没那么高要求的master项目。 第一个半年的异域生涯很平静, 每天来回奔波于图书馆和宿舍, 甚至到学期结束都未曾离开过费城, 好在成绩还算稳定, 对得起我的努力。 只是下一个半年需要继续付学费, 原因在于我们学校下个学期没有空的TA职位。
     然后是低调地谈了一次恋爱, 开开心心地过了那么几个月, 以为能跳出异地的魔掌, 也终于在2010的最后几天, 结束了。

回忆:
      2010的最后几天是不易过的, 圣诞和元旦, 俗称两蛋之间, 在国内算是不小的节日了, 还记得高三那一年的元旦晚会, 初恋时的懵懂和单纯。 国内尚且如此, 大西洋畔更是春节般的日子了, 外面的繁华和热闹, 却更反衬着我的落寞和孤单。 最后尝试着去挽回, 也以失败告终。
      陈女人在这期间回了趟南京, 你自己逛就逛了, 何必又发照片又发日志地勾起我的回忆。 那熟悉的校园, 那无法忘怀的兄弟们。

      今日整理邮件, 意外地发现了很久以前给自己备份的<<此间的少年II>>, 第一次读他是在大一的时候, 连载上<<九州>>杂志上的, 已经不记得第一本<<九州>>是华哥买的还是我买的, 结局是之后的九州每期必买, 直到<<此间II>>的连载中断, 江南又一次的坑了, 从此这便成了我的一个心结, 每隔一段时间总要上江南博客看看是否会有更新, 只是这个间隔越来越长, 渐渐地, 我几乎都已经忘记了。 当初喜欢<<此间>>是因为其搞笑的文字及其对校园生活的刻画, 为此还特地跑到本部图书馆找第一部看, 珊姐你是否还记得, 当时是你和张宁致陪我去的, 去了半天, 我目不转睛地把他看完了, 当时的心情是哈哈大笑的。

      第二次读此间是在大四的时候, 当时正值毕业, 宿舍兄弟们经常一起出去喝酒吃饭, 忆往昔扯未来, 珍惜且又挥霍着这最后的无虑时光, 无限感怀, 于是再读此间, 却又一种说不出的味道, 文字依旧搞笑, 看到一些情节依然会令人捧腹, 但是却多了一丝惆怅, 四年的室友, 一起包夜, 一起dota, 一起喝酒吃肉, 当然也有一些争吵, 一点点的碎片组成了我们211宿舍。
骁骑的能力我一直非常钦佩, 你一直都说你是以垫底的成绩进的南邮, 但是你表现出的能力绝对是顶级的, 我相信你一定能有自己的天地。
CS, 我最喜欢喊你帅哥, 因为你会回喊我帅哥, 哈哈, IT民工不适合久做, 能跳槽, 早跳槽啊。 不过哥对你印象最深的是我跟你开黑玩斗地主, 结果是我和被黑的人都输你200分。
储帅哥, 大学四年211就你和骁骑谈过恋爱, 我相信你RP极好, 从你打蛇爆个祝福油开始, 我便对你佩服的地五体投地。
张宇, 最后一个加入到211, 你也是我们中唯一一个考上研的, 在中山大学可好。
伟哥, 睡神, 你是我们中最后一个毕业的丑事我就不揭你的了, 哈哈, 想当年某天晚上10点钟你突然从床上跳起来说,我操, 10点了啊, 我说小睡会去交选修课作业的呢。 绝对是211最为经典的段子。 段子的最后是你终于在下个学年又选了这颗, 然后把作业给交了。
胖子, 胖子很低调, 也很用功, 虽然你最后没能考上研, 哎, 我只能说又一个被dota毒害的青年啊, 不过没事, 市电信不错了, 早日买车买房娶媳妇啊。
华哥, 把你排最后, 没别的意思, 谁叫你的床铺是最后一个, 对你的评价么, 天才, 绝对的天才, 不过情商为0, 鉴定完毕。
211的各位, 我在大洋彼岸, 想说: 我想你们。
     其他7班的各位,班长, 啊崩,..., 同样有你们, 才组成了我们完整的大学生涯, 不能一一列出你们, 但是, 我依然在这边想着你们。

     于是,这便是我第三次读<<此间>>了, 在异域的大背景和失恋的小背景下, 愈发凸显我对过去的怀念, 不过经历的多了, 却对书中的人物有一些更深的认识, 比如段誉的痴情, 令狐冲的无奈, 杨康的不羁, 郭靖的憨厚,林平之的刻苦, 或多或少, 都能在211的各位身上找到一些影子, 曾经以为我就是那个段誉, 会打两个菜做在食堂看美女, 好似看上绿豆的那个王八, 现在读来, 或许在一些人眼里, 我却是那个杨康, 深深地锁住了那个深蓝色的笔记本。

     套用书里面我最喜欢的一个句子, 谁都无法拒绝长大。

展望:
     一般日记写到最后, 总要展望一下未来, 立志在新的一年里达到目标A, 完成事件B云云, 我要做什么呢。 我又在做什么呢。 从大二以来, 我觉得我就是鲍盛所说的那种有着self-motivation的人, 总觉得自己有着一个梦想, 不停地朝着那个目标前进着, 于是, 我的生活里就只有学习, 平淡如水, 什么都没有。 我想, 新的一年, 我需要做的, 便是如何平衡学习和生活了吧。 我想去欧洲, 我想去旅行, 在我的计划里这是第二阶段, 我想提前他。
     我还是想成为杨康。

Sunday, November 14, 2010

A python example: Convert CSP problem to prolog format

#!/usr/bin python
"""
Author : Yinfei Yang
Mail   : yangyin7 AT gmail DOT com
Date   : 2010-11-12 Fri 04:52 PM

python version: 2.6.5

Usage 1: python convert.py inputFileName outputFileName
Usage 2: python convert.py dirName

Notice: Please ensure the file need to be converted with the suffix .prb

example of input file:

20 15
  0 136   1 189   2 121   3 183   4  77   5 133   6  77   7 155   8  68   9  97  10  99  11  37  12  51  13 149  14 132
  0   2   1   7   2  93   3  99   4  42   5  66   6 190   7 174   8  94   9 171  10   7  11 129  12  60  13  56  14  12
  0 167   1  68   2 176   3  30   4  99   5 107   6 152   7 184   8 186   9  15  10 145  11  21  12 199  13  43  14 135
  0 137   1 162   2  98   3   2   4  92   5 123   6 171   7 100   8 191   9  57  10 166  11 168  12  59  13 145  14  73
  0   7   1 197   2 192   3  53   4 146   5 104   6 169   7 182   8  98   9 145  10  80  11 133  12   5  13  16  14 146
  0 166   1  73   2 133   3  35   4 141   5  90   6 136   7 184   8 135   9   3  10 195  11 132  12 178  13   7  14 162
  0 197   1  51   2 137   3 136   4 121   5  15   6 160   7 179   8  20   9  44  10 159  11  38  12  55  13  55  14 170
  0 151   1 153   2  82   3  40   4  97   5 200   6 165   7  69   8  29   9  49  10  30  11  30  12  84  13  78  14  87
  0 171   1 155   2 123   3 131   4 168   5 155   6 145   7 155   8 135   9  66  10  89  11  19  12   4  13 134  14 161
  0 183   1 161   2 165   3 116   4 184   5 157   6 175   7  48   8  85   9 165  10  94  11 149  12  84  13 138  14 137
  0 114   1  40   2   6   3 170   4 163   5 118   6  79   7 154   8 195   9  34  10 197  11  45  12  39  13 125  14 160
  0  65   1 105   2  24   3  31   4  90   5  22   6  59   7  66   8  20   9 150  10  37  11 101  12 139  13  87  14 138
  0 110   1  37   2  73   3  25   4  38   5  46   6  11   7 123   8 195   9 164  10  86  11 191  12 184  13 120  14  43
  0  50   1 181   2  23   3 134   4 198   5 169   6 186   7  75   8 141   9  62  10 173  11 123  12 192  13  29  14 124
  0  67   1  80   2 155   3 166   4  25   5   4   6  11   7 184   8  32   9  64  10  16  11 108  12  31  13   4  14 145
  0 149   1 195   2 125   3 118   4  18   5 186   6  22   7  15   8 118   9  60  10 176  11  82  12  94  13 170  14  27
  0 174   1 126   2  49   3  77   4  92   5 147   6 171   7  18   8 193   9  14  10 171  11  50  12  95  13  24  14 104
  0 156   1   1   2 158   3 192   4 155   5  99   6  62   7  82   8 115   9  41  10  33  11 139  12  77  13  61  14 161
  0  49   1 179   2 183   3 176   4 164   5 165   6  93   7 194   8  46   9  59  10 199  11 197  12   5  13 143  14  23
  0   5   1 185   2  92   3 173   4 116   5  81   6 131   7  85   8 115   9  98  10 135  11 163  12  68  13 179  14   1

"""

import sys, re, os

DATA_START = "data([\n"
DATA_END = "])."

def convert(inputFile, outputFile):
    print ''.join(['Start to convert ',inputFile,' ...'])
    f = open(inputFile,'r')
    f2 = open(outputFile,'w')
  
    f2.write(DATA_START)
  
    file_lines = f.readlines()
    num = file_lines[0].replace('\n','').split(' ')
    if len(num) != 2:
        print 'Error 2:'
        print 'prb file format error, please check it, exit.'
        sys.exit(2)
    row = int(num[0])
    column = int(num[1])
    count = row * column
    current_job = 0

    for line in file_lines[1:len(file_lines)]:
        tasks = re.split('[ ]+',line.replace('\n','').strip())
        task_number = len(tasks)/2
        if(len(tasks) != column*2):
            print 'Error 2:'
            print 'prb file format error, please check it exit'
            sys.exit(2)
        for i in range(0,task_number):
            current_job += 1
            f2.write(''.join(['task( ' , str(current_job) , ', ' , tasks[2*i+1] , ', [']))
            if current_job%column==0:
                current_line = current_job/column
            else:
                current_line = current_job/column+1
            for j in range(1, current_job - (current_line-1)*column):
                f2.write(str((current_line-1)*column+j))
                if(j != current_job-(current_line-1)*column-1):
                    f2.write(',')
            f2.write(''.join(['], ', tasks[2*i], ')']))
            if current_job < count:
                f2.write(',')
            f2.write('\n')

    f2.write(DATA_END)
    f.close()
    f2.close()
    print ''.join(['Convert succeed. Output file: ', outputFile])

def traverse(dirName):
    filenames = os.listdir(dirName)
    print ''.join(['traverse ',dirName])
    for filename in filenames:
        if 0 == cmp(filename[-4:len(filename)].lower(),'.prb'):
            convert(filename, ''.join([filename[0:-4],'.pl']))

def usage():
    print 'convert.py usage:'
    print 'Usage 1: python convert.py inputFileName outputFileName'
    print 'Usage 2: python convert.py dirName'
    print ''

if __name__=='__main__':
    if len(sys.argv) != 2 and len(sys.argv) != 3:
        usage()
        sys.exit(0)
  
    if len(sys.argv) == 2:
        if not os.path.isdir(sys.argv[1]):
            print 'Error:'
            print ''.join([sys.argv[1],'is not a directory, exit.'])
            print ''
            sys.exit(1)
        else:
            traverse(sys.argv[1])
  
    if len(sys.argv) == 3:
        filename = sys.argv[1]
        if 0 == cmp(filename[-4:len(filename)].lower(),'.prb'):
            convert(sys.argv[1],sys.argv[2])
        else:
            print 'Warning:'
            print 'the input file is not with the suffix .prb'
            print sys.exit(0)

Chapter 2: Finite automata

2.1 Deterministic Finite Accepters

  • Definition: M=(Q, Σ, δ, q0, F)
    • internal states
    • input alphabet
    • transition function δ: Q x Σ -> Q 
    • initial state
    • F in Q, final states
  • Visualize and Represent finite automata: transition graphs
  • Regular languages: L is called regular if and only if there exists some dfa accepter M such that L = L(M)
2.2 Nondeterministic Finite Accepter
  • Definition: M=(Q, Σ, δ, q0, F)
    • as for dfa but ransition function δ: Q x (Σ U {λ}) -> 2^Q
2.3 Equivalence of DFA and NFA

Chapter 1: Introduction to the theory of computation

1.1 Mathematical Preliminaries and Notations

  • Sets
  • Functions and Relations
  • Graphs and Trees
  • Proof Techniques
    • induction
    • contradiction
1.2 Three Basic Concepts

  • Languages 
  • Grammers
    • Definition: G = (V,T,S,P), V and T are nonempty and disjoint
      • V is a finite set of objects called variables
      • T is a finite set of objects called terminal symbols
      • S in T, start variable
      • P is a finite set of productions
    • L(G), is the language generated by G.
  • Automata: dfa and nfa

Thursday, September 9, 2010

又到一年生日时

This article is written by Chinese.

瞅着瞅着, 在中国已经到了我的生日了, 本来对生日是没啥感觉的, 逛校内的时候看到一组学校的照片, 突然无限伤怀。

写个回忆录吧, 纪念我的大学生活。

Monday, August 30, 2010

The first day in Saint Joseph's Uinversity

This article is written by Chinese.


开学的第一天, 总算能进图书馆, 能有一个安静的地方自习, 看书, 做自己的事情。 于是第一件事开了我的twitter, 第二件事开了我的blogspot。 哈哈, 肉身翻墙的感觉真好。

到美国已经是上个礼拜的事情了, 一切就和国内一样, 和大家一起来到这里, 住在同一个公寓, 讲着熟悉的中文, 一起去超市购物, 根本无法意识到我们已经是到了美国。 于是便没有了所谓的孤独感。 ZDD曾经说过中国人喜欢扎堆, 再美国校园里总能看到一群一群的中国人讲着汉语, 我们便是如此。 或许是刚来的第一周, 或许是文化差异的缘故, 但是我并不喜欢如此, 曾经有人说过一个中国人是条龙, 两个中国人就是两条虫, 并不是没有道理的。 来这里一个礼拜, 什么事情也没做, 却把实况10玩了两个赛季, 罪过罪过。

英语还是一如既往的烂, 我需要寻求改变。

不过话说回来, 美国的校园还是很好看的, 我们学校算是比较差的学校了, 不过排场上倒是一点不差, 校园边上的街道都挂着SJU的旗帜, 煞是威风, 学校教廷式的建筑风格也非常独特和美丽。

今天开始要准备重启MEG的研究任务了, 等Forrest回Texas说要把暑期的工作做个report, 也得重新回顾下前面两个月的工作了。 然后今天晚上开始上课, 看名字似乎是个中国人授课, 好吧, 开始吧。

事实上, 一切都是新的, 换一个角度, just do it.