Show newer

今天刷课坐在宿舍里抱着饮水机喝水喝到肚子胀。
感觉今天的我也快是水做的了。

责任感,担当感,对不公义的抵抗,对弱势人群的照顾,这™才叫阳刚之气!
天天逃课打架混社会那帮人,但他们那叫有阳刚之气吗?

bilibili.com/video/BV1ZX4y1u7e - 4:27

女装警告 

豁出去了,我顶不住了
(别找我要照,肥还没减下去,肥减了自然会发)
首先是小钢筋,想试试一直把嘴占着,就不会买其他零食了吧。
其次是女装,照着长袖连衣裙搜的,只是觉得,把身子都裹起来,世界与我无瓜。

二义性的实例:if expr then if expr then others else if expr then others else others

Show thread

代码:

# S -> iS | M
# M -> iMeS | O
# -----
# S = statement, M = matched_statement, O = other
# i = if, e = else
import copy

class Obj:
    def __init__(self, init):
        self.value = init
        self.path = []

        self.path.append(init)

    def push(self, ns):
        self.value = ns
        self.path.append(ns)

    def __repr__(self):
        return self.value

    def __hash__(self):
        return hash(self.value)

    def __eq__(self, other):
        return self.value == other.value

cur = [Obj('S')]
nxt = []
ahs = set() # all history
ahl = []

assert(Obj('SS') == Obj('SS'))
assert(Obj('SS') != Obj('SSb'))

def cfind(s : str):
    spos = s.find('S')
    mpos = s.find('M')

    if spos == -1 and mpos == -1:
        return 'O'

    if spos == -1:
        return 'M'
    if mpos == -1:
        return 'S'

    if spos < mpos:
        return 'S'
    else:
        return 'M'

for i in range(100):
    for mem in cur:
        svar = cfind(mem.value)
        if svar == 'S':
            # 1
            prod1 = copy.deepcopy(mem)
            prod1.push(prod1.value.replace('S', 'iS', 1))
            nxt.append(prod1)
            # 2
            prod2 = copy.deepcopy(mem)
            prod2.push(prod2.value.replace('S', 'M', 1))
            nxt.append(prod2)
        elif svar == 'M':
            # 1
            prod1 = copy.deepcopy(mem)
            prod1.push(prod1.value.replace('M', 'iMeS', 1))
            nxt.append(prod1)
            # 2
            prod2 = copy.deepcopy(mem)
            prod2.push(prod2.value.replace('M', 'O', 1))
            nxt.append(prod2)

    ahl.extend(nxt)
    for nmem in nxt:
        if nmem in ahs:
            print(nmem.path)
            for s in ahl:
                if s == nmem:
                    print(s.path)
        ahs.add(nmem)
        

    print(i+1)
    input('next>')
    cur = nxt
    nxt = []

Show thread

你看这个代码它又长又宽,你看这个文法他二不二义?

这课上完就是人肉lex+yacc了,而且请假就扣总分,真“好”。

暴躁警告 

天杀的老师,天杀的题
2.13 为下列正规式构造最小DFA
(3) (a|b)*a(a|b)(a|b)(a|b)
正则转DFA结果:

digraph{
    A -> B [label="a"]
    A -> C [label="b"]
    B -> D [label="a"]
    B -> E [label="b"]
    C -> B [label="a"]
    C -> C [label="b"]
    D -> F [label="a"]
    D -> G [label="b"]
    E -> H [label="a"]
    E -> I [label="b"]
    F -> J [label="a"]
    F -> K [label="b"]
    G -> L [label="a"]
    G -> M [label="b"]
    H -> N [label="a"]
    H -> O [label="b"]
    I -> P [label="a"]
    I -> Q [label="b"]
    J -> J [label="a"]
    J -> K [label="b"]
    K -> L [label="a"]
    K -> M [label="b"]
    L -> N [label="a"]
    L -> O [label="b"]
    M -> P [label="a"]
    M -> Q [label="b"]
    N -> F [label="a"]
    N -> G [label="b"]
    O -> H [label="a"]
    O -> I [label="b"]
    P -> D [label="a"]
    P -> E [label="b"]
    Q -> B [label="a"]
    Q -> C [label="b"]
}

Plan9 的 libc 着实让我眼前一亮
来自 sys/src/libc/9sys/abort.c

#include <u.h>
#include <libc.h>
void
abort(void)
{
	while(*(int*)0)
		;
}

瞎写 

为人处世两大障碍:
1. 预测他人的感受
2. 禁用自己的感受

暴躁警告 

我认为没有杨振宁那个水平,跟我讲“你不做怎么知道行不行,万一成了”的导师跟骗子有什么区别。

我上的课 

想象一下一个半外行一边瞎扯一边耍师威,再拿挂科跟学分要挟。
“容错的编程语言”:我问了大佬,大佬觉得首先二义性就是问题。
“你学了这门课就能写编译器”:至少我们不配。
“你怎么不做一个容错的语言”:首先不配,其次目前语言的发展还没有到引入不确定性的时候。再者不讲逻辑的甲方对研究有什么作用?

Show older
小森林

每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。