七周七語言 Erlang第二天自習

2021-06-28 15:21:48 字數 1468 閱讀 8717

題目:考慮包含鍵-值元組的列表,如[, ]。寫乙個函式,接受列表和鍵為引數,返回該鍵對應的值。

get_value(map, key) ->

element(2, hd(lists:dropwhile(fun()-> key /= k end, map) ++ )). %% ++為列表拼接

lists:dropwhile拿掉與給定key不符合的元素,然後取列表的第乙個元素,就是要找的鍵值對。注意找不到對應的key的處理,上述**在列表尾加上空元組,減少判斷。

題目:考慮形如[, …]的購物列表。寫乙個列表解析,構建形如[, …]的商品列表,其中total_price是quantity乘以price

compute_price(shopinglist) ->

[ || <- shopinglist].

簡單的列表解析。||語法與lists:map等價。

題目:讀取乙個大小為9的列表或者元組,表示井字棋(tic-tac-toe)的棋盤。若勝負已定,則返回勝者(x或o);若再沒有可走的棋,則返回cat;若兩方都還沒贏,則返回no_winner。

tictactoe(board)->

dealboard = board

++ fun([[a1, b1, c1],[a2, b2, c2],[a3, b3, c3]])-> [[a1, a2, a3], [b1, b2, b3], [c1, c2, c3]] end(board)

++ fun([[a1, _, c1],[_, b2, _],[a3, _, c3]])-> [[a1, b2, c3], [a3, b2, c1]] end(board),

funcheckdealboard([[x, x, x] | _], _) -> x;

checkdealboard([[o, o, o] | _], _) -> o;

checkdealboard(, true) -> no_winner;

checkdealboard(, false) -> cat;

checkdealboard([hd | tail], canwin)

->

%% if 使用的是哨兵,不能在其中呼叫函式,以免產生***

ifcanwin -> checkdealboard(tail, true); %% 匿名函式遞迴

true -> checkdealboard(tail, not lists:any(fun(x)-> true; (o)->true; (_)->false end, hd))

endend(dealboard, false).

輸入的是乙個3*3的二維列表,先對列表進行處理,在列表尾拼接乙個轉置的棋盤,再拼接斜對角線的兩組。此時處理好的列表包含8組元素,依次遞迴檢查,注意對於是否有棋可走的判斷,如有某行某列某對角線只有一種棋子,就認為有棋可走,用canwin來記錄標示是否有棋可走。

七天用Go寫個docker(第二天)

linux cgroup提供了對一組程序及子程序的資源限制,控制和統計的能力,這些資源包括cpu,記憶體,儲存,網路等。通過cgroup,可以方便的吸納之某個程序的資源占用,並且可以實時監控程序和統計資訊。cgroup完成資源限制主要通過下面三個元件 說半天概念,估計大家也是雲裡霧裡,我直接在liu...

ESC七天訓練營 第二天

詳見部落格,一下略過.https www.劉竹.cn 290.html 使用lamp來搭建 ubnutu16.04 apache php7.1 linux apache httpd mysql php 在映象中選擇lamp環境 ubnutu16.04 apache php7.1 或者 更換系統盤la...

C語言第二天

故天將降大任於是人也,必先苦其心志,勞其筋骨,餓其體膚,空乏其身,行拂亂其所為,所以動心忍性,曾益其所不能。任務所有程式語言學習的第一步都是列印 hello,world 所以我們的第一步就是列印hello,world 開啟我們的devc 輸入以下 include intmain include in...