我正在使用Akka 2.2 contrib的项目ClusterSingletonManager来保证集群中始终只有一个特定类型的actor(master).但是,我观察到了一种奇怪的行为(顺便提一下,这可能是预期的,但却无法理解为什么).每当主服务器退出群集并稍后加入时,就会发生以下操作序列:
[INFO] [04/30/2013 17:47:35.805] [ClusterSystem-akka.actor.default-dispatcher-9] [akka://ClusterSystem/system/cluster/core/daemon] Cluster Node [akka.tcp://ClusterSystem@127.0.0.1:2551] - Welcome from [akka.tcp://ClusterSystem@127.0.0.1:2552]
[INFO] [04/30/2013 17:47:48.703] [ClusterSystem-akka.actor.default-dispatcher-8] [akka://ClusterSystem/user/singleton] Member removed [akka.tcp://ClusterSystem@127.0.0.1:52435]
[INFO] [04/30/2013 17:47:48.712] [ClusterSystem-akka.actor.default-dispatcher-2] [akka://ClusterSystem/user/singleton] ClusterSingletonManager state change [Start -> BecomingLeader]
[INFO] [04/30/2013 17:47:49.752] [ClusterSystem-akka.actor.default-dispatcher-9] [akka://ClusterSystem/user/singleton] Retry [1], sending HandOverToMe to [None]
[INFO] [04/30/2013 17:47:50.850] [ClusterSystem-akka.actor.default-dispatcher-21] [akka://ClusterSystem/user/singleton] Retry [2], sending HandOverToMe to [None]
[INFO] [04/30/2013 17:47:51.951] [ClusterSystem-akka.actor.default-dispatcher-20] [akka://ClusterSystem/user/singleton] Retry [3], sending HandOverToMe to [None]
[INFO] [04/30/2013 17:47:53.049] [ClusterSystem-akka.actor.default-dispatcher-3]
...
[INFO] [04/30/2013 17:48:10.650] [ClusterSystem-akka.actor.default-dispatcher-21] [akka://ClusterSystem/user/singleton] Retry …Run Code Online (Sandbox Code Playgroud) 有没有办法约束一个方法,只有两种类型被证明不相等才有意义?
trait Something[A, B] {
// I can only be called if type A is the same as type B
def ifEqual(implicit ev: A =:= B)
// Now I cannot be called if type A is proven to be the same as type B
def ifNotEqual(implicit ev: A ??? B)
}
Run Code Online (Sandbox Code Playgroud) 假设我们有以下内容:
edge(a, 1, 10).
edge(b, 2, 20).
edge(c, 3, 30).
edge(d, 4, 40).
Run Code Online (Sandbox Code Playgroud)
我想提取M这些事实的矩阵表示(),这样
M = [[a,b,c,d],[1,2,3,4],[10,20,30,40]]
Run Code Online (Sandbox Code Playgroud)
这是一个简单的解决方案:
edgeMatrix(M) :-
findall(A, edge(A, _, _), As),
findall(B, edge(_, B, _), Bs),
findall(C, edge(_, _, C), Cs),
M = [As, Bs, Cs].
Run Code Online (Sandbox Code Playgroud)
但是,这种方法存在一些问题,即:
所以问题是:在Prolog中实现这一目标最常用的方法是什么?
所以,我试图通过转换99个Haskell问题中的一些Haskell代码来学习Purescript ,并且很快就遇到了我知道如何解决它的情况,但它太简单了.这是问题10,11和12的Haskell代码; 基本上是一些RLE编码和解码功能:
-- Problem 10
rle :: Eq ? => [?] -> [(Int, ?)]
rle [] = []
rle (x:xs) = let (h, t) = span (== x) xs
in (length h + 1, x) : rle t
-- Problem 11
data RleItem ? = Pair Int ? | Single ? deriving (Show)
encode :: Eq ? => [?] -> [RleItem ?]
encode = map unpack . rle
where unpack (1, x) = …Run Code Online (Sandbox Code Playgroud) 假设我有一个无限的东西列表.在这个列表中,我有时会有一些东西表明隐藏的消息即将开始,然后是消息长度,crc,然后是结束令牌.然后列表继续,在某处,会出现一条新消息:
a :: b :: start :: 3 :: 1 :: 2 :: 3 :: 4FAA :: end :: x :: y :: z :: ....
Run Code Online (Sandbox Code Playgroud)
match将这种模式匹配到以下结构的最惯用(使用,我认为?)是什么?
size = 3
payload = 1 :: 2 :: 3
crc = 4FAA
Run Code Online (Sandbox Code Playgroud)
另外,考虑到令牌"start"可能出现在有效载荷内部,因此必须依赖"完全匹配".
我试图使用scikit-learn与.arff文件.请考虑以下代码:
from sklearn.ensemble import RandomForestClassifier
from scipy.io.arff import loadarff
import scipy as sp
import numpy as np
dataset = loadarff(open('iris.arff','r'))
target = np.array(dataset[0]['class'])
train = np.array(dataset[0][['sepallength', 'sepalwidth', 'petallength', 'petalwidth']])
rf = RandomForestClassifier(n_estimators = 20, n_jobs = 8)
rf.fit(train, target)
Run Code Online (Sandbox Code Playgroud)
它返回以下错误:
ValueError: need more than 1 value to unpack
Run Code Online (Sandbox Code Playgroud)
我假设这与train一个元组数组而不是列表(或数组?)的事实有关; 检查sklearn.datasets.load_iris()显示一个列表(数组?)的数组成功地与RandomForestClassifier.
我正在尝试实现一个简单的子类Iterable[String],我遇到的东西对我来说似乎有点奇怪.我的代码如下:
class ItString[String] extends Iterable[String]{
override def iterator: Iterator[String] = new Iterator[String] {
def hasNext = true
def next = "/"
}
}
Run Code Online (Sandbox Code Playgroud)
我的IDE抱怨它期望a String但它实际上是类型String,并且在尝试编译时,它进一步揭示问题是它需要String但文字实际上是类型java.lang.String.现在,我可以通过更改它来修复此问题"/".asInstanceOf[String],但我想知道为什么Scala无法正确识别类型.
我正在寻找一种方法来复制下面显示的加热表类型R(可能还有ggplot2).具体时间轴无关紧要; 任何矩形表都应该这样做.

我试着搜索Heat map和Heat table谷歌,但找不到该诀窍任何[R包.
思考?
我正在寻找一种简单的方法来为一个数学表达式赋予一个数字,比如介于0和1之间,这表达了表达式的简化程度(完全简化为1).例如:
eval('x+1') 应该返回1.
eval('1+x+1+x+x-5')应该返回一些小于1的值,因为它远非简单(即,它可以进一步简化).
参数eval()可以是字符串或抽象语法树(AST).
我想到的一个简单的想法是计算运算符的数量(?)
编辑:让简单等同于一个系统如何接近一个问题的解决方案.例如,给定代数问题(即极限,导数,积分等),它应该分配一个数字来说明它与解决方案的接近程度.
最接近的比喻我可以想出一个数学教授如何看待一个不完整的问题并进行心理评估,以便说明学生与解决方案有多接近.就像在数学考试中一样,学生没有完成一个价值20分的问题,但教授分配了20分中的8分.为什么他会提出8/20,我们可以编程这样的东西吗?
我正试着把头包裹在CLP(FD)周围.这是一个简单的例子,我不确定最常用的方法.假设我们有一个数字列表(L),其中一些数字已经填充,就像这样.
L = [_, _, _, 3, _, _, _, 4, _, _, 2, _]
Run Code Online (Sandbox Code Playgroud)
我想说的是,固定的数字左右两边的数字必须总结这个数字.上述可能的解决方案是:
L = [0, 0, 1, 3, 0, 1, 1, 4, 2, 0, 2, 0]
Run Code Online (Sandbox Code Playgroud)
当然,还有其他解决方案.我的第一种方法是:
Append 两个名单;sum/3,将结果列表约束#=为数据透视表.这会是意识形态的吗?我错过了一些更明显的东西吗?
2级.我认为谓词sum/3完成了大部分工作.让我们稍微改变一下这个问题:
枢轴左侧和右侧的连续弦1必须与枢轴相加.
所以这个:
L = [_, _, _, 3, _, _, _, 5, _, _, 2, _]
Run Code Online (Sandbox Code Playgroud)
一个可能的解决方案是:
L = [0, 0, 0, 3, 1, 1, 1, 5, 1, 1, …Run Code Online (Sandbox Code Playgroud)