erlang函數(二)

2020-08-11 21:09:18

畢達哥拉斯三元陣列

所謂畢達哥拉斯三元陣列就是描述三角形三角邊,滿足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).