佳森's profile星の海——天锁斩月PhotosBlogListsMore Tools Help

星の海——天锁斩月

大江歌罢掉头东,邃密群科济世穷;面壁十年图破壁,难酬蹈海亦英雄。
Photo 1 of 16
March 21

魔方

这些日子小小研究了一下魔方。这小东西真的很神奇,在未窥得入门之法前一切就像混沌的世界,无论怎么旋转都毫无章法,顾得左边顾不得右边。然而在得高人指点之下获得几招入门之法之后,混沌就在手中消失了,甚至还能观得若干旋转之下的不变量,观的这些不变量更是让人有成就感。
1.在http://www.rubik.com.cn/网站上有站长的教程,看过之后保证学会基本玩法,拿来一个任意打乱的魔方,一定能在5分钟内还原。这是一套基础玩法,这么一套基础玩法也就足够让人感觉到其中的美感了。
2.比较神奇的是,这两天尝试了将魔方化作很多不同的模式,譬如图一图二当中的样子。这一尝试立刻发现原来任意的模式,只要在这个魔方上能够表现出来的模式(有一些模式除非拆了魔方重装,不然是得不到的),都可以使用1当中的方法获得,这了不得,震撼人心。这实际上是一种抽象的思维,让眼睛不要被颜色干扰,那么剩下的就是一个模式匹配的问题,在固定的模式下套用固定的方法进入下一个固定的模式,最终达到最终的目的。此外在这个玩法下还能发现一些有趣的特性,譬如我所发现的,还是如同两张图片所显示的,必定有一组对面是颜色互补,而剩下四个面中两组临面颜色互补,就如图中的红色与橙色是处于对面,黄色与绿色一组是临面,蓝色与白色一组也是临面。可以证明的是这种玩法必定成形于相似的模式,可以是黄色与白色一组处于对面,而剩下四种颜色组成周围四个面,或者也可以是绿色与蓝色一组处于对面。所以总的可以出现的可能模式一共只有六种。


November 30

北京归来~~

摘要:俺又出差归来,其实是老板去交流,我是跟着做板凳的。撇开交流的过程,整个出差是一次小旅游,“旅游地”北京~~只是北京大太大了以至于只能窥其一 角。俺从来没有去过北京,所以再去的前一天晚上反复挣扎到底要不要穿上羽绒服..结果穿上的确是个正确的选择,感谢天气预报,感谢丫头。北京的白天不冷, 室内不冷,但是室外两天里都刮着大风,吹得我流鼻涕。三天的行程排的比较满,本来预计会有两天的大讨论,不过是非正式会面,出现了临时调动。李大人被更高 级的人物喊走了,于是实际上的会面时间只有两个上午和一个晚上。于是剩下的自由时间非常多。哈哈,好事情,俺就不客气的出去看看首都了。双脚勉勉强强的踏 过了北航,北大,清华,中科院,前门,天安门,故宫,奥体中心,可惜脚力不行,不然要去压更多的马路。首都真的是个好地方。

感谢:感谢老板给我这个机会开阔眼界,感谢那只正宗烤鸭,感谢表妹陪我游玩,感谢祖哥,感谢中科院的同学们,感谢老马同学还有罗博士让我蹭了饭。感谢首都的司机叔叔,让我顺利的赶上了回程的火车。

November 17

我的移动硬盘好像丢了

找不到了,扔在实验室一段时间不用找不到了...可怜我的移动硬盘...最重要的是我的备份都没有了,最最最最重要的是我高中时代做的一大堆乱七八糟的程序(姑且成为游戏)就这样丢了,丢的干干净净...珍贵的回忆啊...希望它们还躺在家里的硬盘上面..大学时代的程序重要的在我的笔记本上还有原份,不至于那么悲惨壮烈...
November 12

闲来感悟一下

今天早上去浦口监考,在煎熬了50分钟的汽车之后觉身心疲惫不堪,脑子里蹦出一个词组worn out。今天坐大巴不知为何如此难受,就好像已经煎熬忍受了N年之久。清晨的路上看着奔流不息的汽车,突然觉得这个所谓现代化的物质世界非常虚幻,突然为每辆车中的每个人他们到底在这么拼命什么感到不解。似乎人在身体痛苦的时候最容易觉察到意识的存在,感受到意识想丢弃这个脆弱的身体~好奇怪,下了车,上了个厕所,身体恢复起来,再也没有那么灵魂出窍般的感受了。

监考本身是件轻松的事情,比较好笑的事情是发现我制作考卷的时候把装订栏放在了B4卷面的中间了,因为做的时候是A4纸张,压根就没有考虑到..看起来诡异之极,还好只是个形式而已,并非真的需要装订后阅卷。

回来的路上看着哗啦哗啦奔跑的车辆,看到建造中的摩天轮,看着一个个聚精会神开车的司机。又开始思考我自己的生活。再想我到底向往什么样子的生活呢,那肯定不是西装笔挺的出没于大大小小会议,也不是焦头烂额的跟老板讨价还价,实际上我想如果有这样子的机会希望能住在一个小小的村庄,有个小小的房子,有个小小的家庭,能跟邻里热闹的扯扯淡。可以学最最简单的东西也是最最有美感的东西,譬如耕种,书法,武术等等~这些大概是人们非常原始的乐趣了,比起这个完全人造的现代化社会有趣得多。好像扯远了,好吧,事实上是因为我是一个不负责任毫无意志力的懒汉,才会有这样子的想法。当然生活中的重中之重是,是能够好好自由自在的感受计算机科学的内涵,因此我再考虑是不是要往这样的假想生活中补充一台电脑。唉~~贪心就是这个样子。假想完了我也终于又会到学校了。

实际上有一样东西我觉得更加有意义,我发觉纯粹意义的上没有物质目的的学习是人类精神世界最最伟大的东西,不是为考试而学,不是为论文而学,不是为所谓将来的发展而学,而是纯粹去感受一样东西,感受思维的最最优美的结晶,感受它从无到有的过程,并且亲身去体验一下,将古人数百年乃至数千年摸索而得东西从头到尾的学会,那才是一件快乐的事情。学习应当是人的天性,只是很大程度上社会将它扭曲了。

对了,在车上七魂丢了六魄的时候,还有想到可爱的某人~~想来应该还在呼呼睡觉,只是最近自从说是要反省之后说话不知为啥常常会有一句没一句的~~某人将跑腿先生交由在下喂养打理,小白我肯定是义不容辞的。某人说我吃的太多,太费钱,唉唉,其实我吃的一点都不多,就是把每个月的补贴钱统统吃光而已..我妈说啥都能省,但是吃不要省,我是乖孩子,我听从妈妈的教导。某人还老是要介绍个姑娘给我,最最把盼盼都搬出来了,但是小白我实在是■■■■(黑屏了黑屏了,抠掉点字)╮(╯_╰)╭但是呢,只要将盼盼交托在下,我是肯定一定以及确定会好好照顾嗒,不能辜负某人的厚望啊。天冷了,要多穿点衣服呀,不要冻着了~~还有再辛苦一些日子,好好加油~↖(^ω^)↗

October 25

smith number

To write a haskell program to find the smith number is not difficult, but finding a efficient algorithm is quite a challenge. The key problem are the sparse smith numbers and no efficient algorithm has been found for factorization.

module Main where

ld n = ldf 2 n
    where ldf k n | n `mod` k == 0 = k
                  | k^2 > n = n
                  | otherwise = ldf (k+1) n

prime n = ld n == n

factorization 1 = []
factorization n = p : (factorization (div n p) )
    where p = ld n

sumN n = sum (decompose n)
    where decompose 0 = []
          decompose n = n `mod` 10 : (decompose (n `div` 10))

nextSmith n = head $ filter smith [n+1..]
    where smith n = not (prime n) && sumN n == (sum . (map sumN) . factorization) n


October 24

Solve the pcp instance with 24 line's of code

I'm deeply impressed again by Haskell this afternoon. I was thinking about and sovling an install of PCP problem.
To find a sequence (i1,i2,i3...,in) such that s[i1]s[i2]...s[in] is the same as t[i1]t[i2]...t[in]. where
-----------------------------
| s | 001 | 01  | 01  | 10  |
| t | 0   | 011 | 101 | 001 |
-----------------------------
Here comes the solution in Haskell.

module Main where

import Data.List(isPrefixOf)

gS = ["001","01","01","10"]
gT = ["0","011","101","001"]

bfs :: (a->[a])->a->[a]
bfs f x = bfs' [x]
    where bfs' [] = []
          bfs' xs = xs ++ bfs' (xs >>= f)

expand (s,t) = [(s ++ fst x, t ++ snd x) | x<-zip gS gT, valid (s ++ fst x) (t ++ snd x)]
    where valid x y = isPrefixOf x y || isPrefixOf y x

main = let seq = bfs expand ("","")
           result = head $ filter (\(s,t) -> s==t) (tail seq)
       in putStrLn (show result)

This piece of code can solve this problem in 5 seconds, but unfortunately with over 70MB memory. What worth mentioning is clean way of expressing the breadth first search(the function bfs).
July 26

"The Last Lecture" of Randy Pausch

 
 
by 
by 
by 
by 
by 
by 
by 
by 
by 

Windows Media Player