小编gru*_*ewa的帖子

这个P!= NP证明缺少什么?

我试图恢复密码.考虑到这一点,我认识到"密码恢复"这个问题是NP问题的一个很好的例子.如果您知道密码,则很容易在多项式时间内验证密码.但是如果您不知道密码,则必须在整个空间内搜索可能显示为指数时间的可能解决方案.

现在我的问题是:这不是证明P!= NP,因为"密码恢复"是NP的一个元素,可以显示需要多于多项式时间来运行?

computer-science-theory p-np

9
推荐指数
3
解决办法
1652
查看次数

使用Scalas动态类型的动态代理

是否可以使用Scalas新的动态类型功能创建类似拦截器的AOP?例如:是否可以创建一个通用的秒表拦截器,它可以与任意类型混合以分析我的代码?或者我还需要使用AspectJ吗?

scala scala-2.9

6
推荐指数
1
解决办法
584
查看次数

Serializable和AnyVal

我正在搜索一个带有函数func和参数arg的方法的正确签名,将它们通过网络复制到远程计算机并返回结果.目前签名如下:

def invokeRemote[A,B](address: String, func: A => B, arg: A): B
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,如果参数不是Serializable或Java的原始类型之一,则该方法抛出NotSerializable Exception.

我想出了以下解决方案,以便在编译时捕获此错误...

type Func = (A => B) with Serializable

def invokeRemote[A <: Serializable, B <: Serializable](address: String, func: Func, arg: A): B
Run Code Online (Sandbox Code Playgroud)

...但现在不可能再传递AnyVal类型的参数,如Int,FloatDouble,它们没有显式实现Serializable.

方法签名应该如何看起来只接受Serializable对象或AnyVal类型的对象作为参数?

scala

6
推荐指数
1
解决办法
1482
查看次数

如何使用 Scala-native 构建静态链接的可执行文件?

我想使用 Scala Native 编写一个程序,但它必须在带有非常旧的 glibc 的 linux 主机(centos 6.5)上运行。所以我想将该程序部署为静态链接的可执行文件,例如 golang。

如何使用 Scala-native 构建静态链接的可执行文件?是否可以?如果是,我该怎么做?如果没有,为什么不呢?

scala static-linking scala-native

6
推荐指数
1
解决办法
255
查看次数

scala中不再支持递归结构类型吗?

有些人声称如果使用scalac的-Yrecursion选项,scala能够处理递归结构类型.不过我的简约例子不会编译:

type Num = {
  def +(n: Num): Num
}
Run Code Online (Sandbox Code Playgroud)

编译产量:

$ scalac -version
Scala compiler version 2.8.0.final -- Copyright 2002-2010, LAMP/EPFL
$ scalac -Yrecursion 100 Num.scala 
Num.scala:3: error: recursive method + needs result type
def +(n: Num): Num
               ^
one error found
Run Code Online (Sandbox Code Playgroud)

这改变了吗?这个例子不应该编译吗?

scala

5
推荐指数
1
解决办法
650
查看次数

如何在OCaml中下载,解压缩和处理gzip文件?

我希望我的ocaml应用程序能够直接下载,解压缩(gzip),然后逐行处理生成的文本文件,而不使用临时文件和外部程序.

我看过的库是cohttp,ocurlcamlzip.不幸的是,我找不到让他们一起工作的好方法.

OCaml实现这一目标的方式是什么?

ocaml

3
推荐指数
1
解决办法
204
查看次数

使用*ocaml_tar*创建TAR文件时出现End_of_file异常

当我尝试使用ocaml_tar库创建一个TAR文件时,我得到一个End_of_file异常.

我的代码......

#require "tar";;
#require "tar.unix";;
let f = Unix.openfile "test.tar" [ Unix.O_RDWR; Unix.O_CREAT ] 0o600;;
Tar_unix.Archive.create ["write_ex.ml"] f;;
Unix.close f;;
Run Code Online (Sandbox Code Playgroud)

...生成以下堆栈跟踪:

$ utop write_ex.ml
Exception: End_of_file.
Raised at file "lib/tar.ml", line 549, characters 36-47
Called from file "lib/tar.ml", line 460, characters 4-11
Called from file "stream.ml", line 149, characters 33-38
Called from file "lib/tar.ml", line 578, characters 6-28
Called from file "toplevel/toploop.ml", line 180, characters 17-56
Run Code Online (Sandbox Code Playgroud)

有谁知道什么是错的?

ocaml

2
推荐指数
1
解决办法
113
查看次数

如何在Scala中的泛型类型上为Float和Double绑定类型?

我正在编写一些简单的Vector和Matrix类。他们看起来像这样:

// Vector with Floats
case class Vector3f(x: Float, y: Float, z: Float) {
  def +(v: Vector3f) = Vector3f(x + v.x, y + v.y, z + v.z)
}

// Vector with Doubles
case class Vector3d(x: Double, y: Double, z: Double) {
  def +(v: Vector3d) = Vector3d(x + v.x, y + v.y, z + v.z)
}
Run Code Online (Sandbox Code Playgroud)

如果我继续使用Point3f / d,Vector4f / d,Matrix3f / d,Matrix4f / d等其他方法和类,这将需要大量工作。Uff ...所以我认为泛型可以在这里提供帮助,并从我的代码库中删除冗余。我想到了这样的事情:

// first I define a generic Vector class
case class Vector3[@specialized(Float, Double) T](x: T, y: …
Run Code Online (Sandbox Code Playgroud)

generics scala type-bounds

1
推荐指数
1
解决办法
623
查看次数