如果代码很难遵循,我道歉.这是经典的餐饮哲学家问题,有5位哲学家正在吃饭,但只有5支 - 你需要两只才能吃.
如果有人有兴趣,这些是说明:http://www.kth.se/polopoly_fs/1.260940!/ Menu/general/column- content/attachment / philosophers.pdf
无论如何,这里是代码,筷子过程代码:
-module(chopstick).
-export([start/0]).
start() ->
spawn_link(fun() -> init() end).
init() ->
available().
available() ->
receive
{request, From} ->
From ! granted,
gone();
quit ->
ok
end.
gone() ->
receive
returned ->
available();
quit ->
ok
end.
Run Code Online (Sandbox Code Playgroud)
哲学家流程代码:
-module(eater).
-import(timer, [sleep/1]).
-import(random, [uniform/1]).
-export([start/5, dream/5, eat/5, wait/5]).
start(Hungry, Right, Left, Name, Ctrl) ->
dream(Hungry, Right, Left, Name, Ctrl).
**%This was wrong, it should say start(Hungry, Right, Left, Name, Ctrl) …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的java字符串:
String string = "I <strong>really</strong> want to get rid of the strong-tags!";
Run Code Online (Sandbox Code Playgroud)
我想删除标签.我有一些标签更长的其他字符串,所以我想找到一种方法来删除"<>"字符之间的所有内容,包括那些字符.
一种方法是使用内置字符串方法将字符串与regEx进行比较,但我不知道如何编写它们.
我正在尝试学习 Erlang,来自 C++/Java 背景。这迫使我重新思考我所有的方法。
现在我正在尝试编写一些返回列表的前 N 个元素的东西。现在看起来像这样,虽然我不能在守卫或 if 表达式中调用函数。这样做的 Erlang 方式是什么?
take([Xh|Xr],N,Xn) ->
if
len(Xn) /= N -> take(Xr,N,app(Xh, Xn));
len(Xn) == N -> Xn
end.
Run Code Online (Sandbox Code Playgroud)
我之前也尝试过调用该函数,但这也不起作用:
take([Xh|Xr],N,Xn) ->
G = len(Xn);
if
G /= N -> take(Xr,N,app(Xh, Xn));
G == N -> Xn
end.
Run Code Online (Sandbox Code Playgroud) 我想检查是否x是嵌套列表的成员,以便
member(x,[a,b,[c,d],[e,[f,g],[x,i]]])
Run Code Online (Sandbox Code Playgroud)
返回True,False如果没有x。这有可能吗?
我试图将一个小矩阵(比如2x2)中的每个元素与一个大矩阵中的每个位置(比如说4x4)相乘,逐个元素.
所以我想:
1 2 3 4 1 0 3 0
1 0 1 2 3 4 0 0 0 0
0 0 'x' 1 2 3 4 = 1 0 3 0
1 2 3 4 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
小矩阵在其适合的情况下应用多次,并且乘法是逐个元素的.我尝试了一堆循环,但在MATLAB中感觉不对,必须有更漂亮的方法吗?
这个递归的结果树不是我的东西,这可能证明我不完全理解递归中列表/元组的行为.如果有人可以解释我在这个例子中做错了什么,并解释了正确的思考方式,我会非常感激.
move([],{Main, One, Two}) ->
{Main, One, Two};
move([X|Xr], {Main, One, Two}) ->
[{Main, One, Two}, move(Xr, single(X, {Main, One, Two}))].
Run Code Online (Sandbox Code Playgroud)
期望的结果(一个包含3个元组的列表):
[{[a,b],[],[]}, {[a],[b],[]}, {[],[b],[a]}, {[b],[],[a]}]
Run Code Online (Sandbox Code Playgroud)
实际结果(包含元组和列表的列表,包含元组和列表...):
[{[a,b],[],[]},[{[a],[b],[]},[{[],[b],[a]},[{[b],[],[a]}]]]]
Run Code Online (Sandbox Code Playgroud) 在我的活动中,我通过一堆控件(输入字段),并创建一个
for(ControlTemplate field: fieldMap.get(string))
{
View view = field.getFieldControl(true, this);
l.addView(view, new PredicateLayout.LayoutParams(2, 0));
}
Run Code Online (Sandbox Code Playgroud)
ControlTemplate的getFieldControl包含一个switch语句,该语句应该返回不同类型的视图.
case LABEL:
view = new TextView(context);
view.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
((TextView) view).setText(value);
break;
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够从xml定义创建视图,但这是不可能的,因为该类不是活动,因此它没有布局.我想做的是这样的事情:
case TEXTBOX:
view = (EditText) passedActivity.findViewById(R.id.edit_message);
break;
Run Code Online (Sandbox Code Playgroud)
其中passedActivity是创建ControlField类的活动.有没有办法将当前活动作为参数传递,或者可能只传递其布局资产?
我有一个应用程序目前在 Play 商店中,我想发布一个更新,将现有应用程序替换为另一个应用程序,该应用程序是旧应用程序的改进版本。它们是分开开发的,所以这两个应用程序有很大的不同,尽管它们的目的都是一样的。
新版本和旧版本中需要相同才能发布的内容是更新而不是全新的应用程序?
这种数据结构是不是一种糟糕的设计选择?基本上每个地图都是一个用户,它有许多不同类型的字段.每种字段都是地图中的一个键,并且具有这种字段的列表(ControlTemplate).
protected ArrayList<Map<String, List<ControlTemplate>>> doInBackground(Void... params)
{
.
.
.
}
Run Code Online (Sandbox Code Playgroud)