毕达哥拉斯三元数组
所谓毕达哥拉斯三元数组就是描述三角形三角边,满足AA +BB =C*C;
bdgls(N) ->
[
{A,B,C} ||
A <- list:seq(1,N),
B <- list:seq(1,N),
C <- list:seq(1,N),
A+B<C,
A*A +B*B = C*C
].
简单解释一下,A,B,C从(1,N)中取,满足A+B<C且AA+BB=C*C的要求即可。
回文构词
所谓回文构词就是探索字符串的字符所能组成的排列方式。构词
perms([]) -> [[]];
perms(L) -> [H|T || H <- L,T <- perms(L--[H])].
L-- [H] 是列表移除操作符,将元素H从列表中L移除
H<-L 从L中取出元素H
总体来说就是抽掉L中的某一元素,对剩下的元素进行排列组合然后再讲H放进去,以此类推。
归集器
程序只遍历列表一次,能将程序列表中的元素按奇偶数分开并放入新列表中,这种列表叫做收集器
odds_evens_nums(L)->
odds_evens_nums(L,[],[]).
odds_evens_nums([H|T],odds,evens) ->
case (H rem 2) of
1 -> odds_evens_nums(T,[H|odds],evens);
0-> odds_evens_nums(T,odds,[H|evens])
ends;
odds_evens_nums([],odds,evens) ->
{odds,evens}.
这里最后的时候最好将结果反转一下list:reverse(odds).