月薪 0 狗飘过
今天学会了 facebook 在你登出以后还能追踪你访问过的网站的技巧
就 3 个人,今天我们聊 javascript 了,以后都不聊 haskell 了
大概就两三个人的样子 XD
学习 scala 的时候,如果没有学过 haskell 并获得代数数据类型的相关知识,是搞不定的
其实 ruby 比 awk 强...
ruby -pne '$.%100==0 or $_=""' data.txt > result.txt
代码中
$.
是行号$_
是当前行Ruby 参数中
p
处理后打印 $_
n
把每行放在 $_
中处理e
执行紧接的字符串而不是文件题外:如果 ruby 参数中加了 a
, 那么也能接受和 awk 一样的 -F
参数,然后 $F
中可以访问拆分的部件,ruby --help
可以看到各种参数的作用
看标题还以为把演 AV 的 Julia 用分形打印出来了呢...
我在玩 drb 时遇到过,想序列化一个 lambda 的时候出现的,另外 binding 也不能持久化...
重现:
Marshal.dump ->{}
实际出现这个问题往往是要序列化的对象或者哈希中带了一个 lambda 成员
自从 redcar 转到 swing 后就再也不关注了
标题...就是明天晚上吧?
有兴趣可以先装上 haskell-platform (linux 和 windows 见链接):
brew install haskell-platform
交互解释器 ghci (glasgow haskell compiler's interpreter)
# 可以行内用 :: 指定类型
alias ghci='ghci -XScopedTypeVariables'
源文件扩展名是 .hs
, literate programing style 的扩展名是 .lhs
. literate programing 是 RMS 在写 emacs 时发明的编程风格,代码和文档是反过来的,而且文档可以安排代码的顺序.
这是一个打印阶乘的程序 `fac.lhs`
首先我们引入 List 模块, 里面包含了我们想要用的库函数 foldl, 注意 `>` 开头的行会被编译
> import Data.List
`foldl` 相当于 ruby 里的 `reduce` 或者 `inject`, 但是 lambda 放前面而不是后面, 用来实现阶乘就像这样:
fac n = foldl (\x y -> x * y) 1 [1..n]
所有运算符都是 lambda / 函数, 上面的 lambda 中的乘号用前缀写法的话就是:
\x y -> (*) x y
这个 lambda 和 `(*)` 没什么区别, 直接用 `(*)` 好了, 代码就变成了:
> fac n = foldl (*) 1 [1..n]
打印结果:
> main = do { print (fac 12) }
编译执行:
ghc --make fac.lhs
./fac
bash:
export PS1='\w [$(rvm-prompt)] $'
zsh:
RPROMPT='$(rvm-prompt)'
一般和 git 状态一起显示更好,网上有不少介绍,可以搜 git rvm prompt 看看
#5 楼 @bhuztez 去掉这个要求是可以的... 不过总次数变成最多 20, 去掉这个要求而修改的程序如下
def calc seq, rest_sum
if seq.size == 10
p seq if rest_sum == seq.count{|i|i>9} and (0..9).all?{|i| seq.count(i) + 1 == seq[i]}
else
1.upto 10 do |i|
break if rest_sum < i
calc seq + [i], rest_sum - i
end
end
end
calc [], 20
$ ruby sum.rb
[1, 7, 3, 2, 1, 1, 1, 2, 1, 1]
[1, 10, 1, 1, 1, 1, 1, 1, 1, 1]
每个数字至少出现 1 次,一共 20 个数字,所以填的数字的和是 20, 有了这两个条件,就好办了:
def check seq
0.upto 9 do |i|
return false if seq.count(i) + 1 != seq[i]
end
true
end
def calc seq, rest_sum
if seq.size == 10
p seq if rest_sum == 0 and check seq
else
1.upto 9 do |i|
break if rest_sum < i
calc seq + [i], rest_sum - i
end
end
end
calc [], 20
按照上下文看大概是 macbook pro 不是 macpro ?
话说有没有 GUI 测试的经验分享?