流水帐+意识流

第二次坐灰机,在这个位置坐着,玻璃如果破了我就会被吸出去,然后在这个引擎里面被卷死掉,引擎内圈会变成红色,我的血和肉块会洒到地面,然而由于是晚上所以地面上不见得会有人发现;另一方面,这种死法肯定比摔下去要好,因为可以免去了很长一段等死的阶段——只要我别太怕死,双手紧抱住引擎的边缘,以至于一点一点的被吸进去。

某次 GR 上看到有人分享宅男必备的几个玩具,其中之一便是 Arduino,手痒,便入手了一个(同时还买了个遥控车,打算拆了改用 Arduino 控制,没到手);然而此刻我正在学校,手头上不但没有发光二极管、蜂鸣器、马达、高压包、电烙铁这些老朋友,甚至连导线都没有,于是唯一能用的输出是 13 号口自带的一个发光二极管。
一个发光二极管,那能玩的就只有摩尔斯电码了:
#define UNIT_TIME 250
#define OUTPUT_PIN 13
static char const mCode[][8]= {
"-----", // O
".----", // 1
"..---", // 2
"...--", // 3
"....-", // 4
".....", // 5
"-....", // 6
"--...", // 7
"---..", // 8
"----.", // 9
".-", // A
"-...", // B
"-.-.", // C
"-..", // D
".", // E
"..-.", // F
"--.", // G
"....", // H
"..", // I
".---", // J
"-.-", // K
".-..", // L
"--", // M
"-.", // N
"---", // O
".--.", // P
"--.-", // Q
".-.", // R
"...", // S
"-", // T
"..-", // U
"...-", // V
".--", // W
"-..-", // X
"-.--", // Y
"--.." // Z
};
void light(int time) {
digitalWrite(OUTPUT_PIN, HIGH);
delay(time);
digitalWrite(OUTPUT_PIN, LOW);
}
void alpha(char c) {
char const *code=0;
if(c>='0' && c<='9') {
code=mCode[c-'0'];
} else if(c>='a' && c<='z') {
code=mCode[c-'a'+10];
} else if(c>='A' && c<='Z') {
code=mCode[c-'A'+10];
} else {
delay(4*UNIT_TIME); // 应该停顿 7 个单位,不过每个单词结束后都已经停顿了 3 个单位时间
return;
}
for(;*code;++code) {
switch(*code) {
case '.':
light(UNIT_TIME);
break;
case '-':
light(3*UNIT_TIME);
break;
}
delay(UNIT_TIME);
}
delay(2*UNIT_TIME);
}
void say(char const* sentence) {
for(char const* p=sentence; *p; ++p) {
alpha(*p);
}
}
void setup() {
pinMode(OUTPUT_PIN, OUTPUT);
}
void loop() {
say("I Feel So Alone ");
}
wikipedia 说同一个单词不同字母间有三个单位的间隔,但我发现这很不好认;接着我就想如果再多买一块板子,接上光敏电阻,一个亮,一个读,岂不是很好玩;接着又想,如果真有两块板子,那我何必用摩尔斯电码呢,用灭灯代表 0,亮灯代表 1,直接传输就好,爱折腾的话想办法用数组保存一个已经预先设定好的霍夫曼编码似乎更可以装B了,接着我又想,那我是不是要想办法让它知道什么时候是对方传输完了,什么时候是在传输一大堆的 0 呢,要不在每组数据末尾加上一个 END,开头加上 BEGIN?可是那我真要传输 BEGIN 这个单词了又怎么办?用 \ 标记?对呀,然后 \ 就表示为 \\,太完美了——可是那突然掉电怎么办,要么每隔一秒种说一次“还没完!”?…………。
Update: 我傻,用校验码啊
另外,开始看了看 Haskell,因为它的自我介绍很有意思,大意是 “即使你学了 Haskell 什么实际用途都没有,至少也可以提高你的编程能力”,好吧,这个我相信。
另外就我目前的认识来看 Haskell 推理形式的函数定义方法和 C++ template 元编程简直太像了 @_@ 说 C++ 恐怖果然是有道理的……








