小编Apo*_*isp的帖子

超级搜索

我正在寻找一种算法来在合理的时间内解决以下问题.

给定一组集合,找到作为给定集合的子集的所有这样的集合.

例如,如果您有一组搜索术语,如["堆栈溢出","foo bar",...],则给定文档D,找到所有搜索词,其所有词都出现在D.

我找到了两个足够的解决方案:

  1. 使用位向量列表作为索引.要查询给定超集,请为其创建位向量,然后迭代列表,对列表中的每个向量执行按位OR运算.如果结果等于搜索矢量,则搜索集是由当前矢量表示的集合的超集.该算法的O(n)位置n是索引中的集合数,而按位OR非常快.插入是O(1).警告:为了支持英语中的所有单词,位向量需要数百万位长,并且需要存在单词的总顺序,没有间隙.

  2. 使用前缀树(trie).在将它们插入到trie之前对它们进行排序.搜索给定集时,请先对其进行排序.迭代搜索集的元素,激活匹配的节点,如果它们是根节点的子节点或先前激活的节点的子节点.通过激活节点到叶子的所有路径表示搜索集的子集.该算法的复杂性O(a log a + ab),其中a是搜索集的大小和b被索引集的数目.

你的解决方案是什么?

language-agnostic algorithm indexing set data-structures

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

Scala中有一个等价于Python的更通用的地图功能吗?

我知道Scala的列表有一个带签名的map实现和带签名(f: (A) => B):List[B]foreach实现,(f: (A) => Unit):Unit但我正在寻找接受多个iterables的东西,就像Python map接受多个iterables一样.

我正在寻找具有特征(f: (A,B) => C, Iterable[A], Iterable[B] ):Iterable[C]或同等特征的东西.是否存在存在这样的库或类似的类似方法?

编辑:

如下所示,我可以做到

val output = myList zip( otherList ) map( x => x(0) + x(1) )
Run Code Online (Sandbox Code Playgroud)

但这会在两个步骤之间创建一个临时列表.如果评论员会发帖,我可以赞成他(提示,提示),但还有另一种方式吗?

python iterable scala applicative

9
推荐指数
2
解决办法
2478
查看次数

我可以将这个异步java网络API转换为monadic表示(或其他惯用语)吗?

我已经获得了一个java api,用于通过基于回调的样式连接和通过专用总线进行通信.我目前正在scala中实现一个概念验证应用程序,我正在尝试研究如何生成一个稍微更惯用的scala接口.

典型(简化)应用程序在Java中可能看起来像这样:

    DataType type = new DataType();
    BusConnector con = new BusConnector();
    con.waitForData(type.getClass()).addListener(new IListener<DataType>() {
        public void onEvent(DataType t) {
            //some stuff happens in here, and then we need some more data
            con.waitForData(anotherType.getClass()).addListener(new IListener<anotherType>() {
                public void onEvent(anotherType t) {
                    //we do more stuff in here, and so on
                }
            });
        }
    });

    //now we've got the behaviours set up we call
    con.start();
Run Code Online (Sandbox Code Playgroud)

在scala中,我可以明确地定义从(T => Unit)到IListener的隐式转换,这肯定会使事情变得更简单:

implicit def func2Ilistener[T](f: (T => Unit)) : IListener[T] = new IListener[T]{
  def onEvent(t:T) …
Run Code Online (Sandbox Code Playgroud)

monads scala scalaz

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

有没有办法在Java中实现代数类型?

在Java中,是否有可能强制某个类具有一组特定的子类而没有其他子类?例如:

public abstract class A {}
public final class B extends A {}
public final class C extends A {}
public final class D extends A {}
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式强制执行不能创建A的其他子类吗?

java abstract-class final class adts

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

scala中高阶多态的常见实践

我试图通过实现一个描述monad的非常基本的接口来掌握scala中的高阶多态性,但我遇到了一个我不太了解的问题.

我用C++实现了相同的代码,代码如下所示:

#include <iostream>

template <typename T>
class Value {
private:
  T value;
public:
  Value(const T& t) {
    this->value = t;
  }

  T get() {
    return this->value;
  }
};

template < template <typename> class Container >
class Monad {
public:
  template <typename A> Container<A> pure(const A& a); 
};

template <template <typename> class Container>
  template <typename A>
Container<A> Monad<Container>::pure(const A& a) {
  return Container<A>(a);
}

int main() {
  Monad<Value> m;
  std::cout << m.pure(1).get() << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当尝试使用scala执行相同操作时,我失败了:

class Value[T](val …
Run Code Online (Sandbox Code Playgroud)

polymorphism monads types scala higher-kinded-types

7
推荐指数
2
解决办法
1478
查看次数

Subversion创建具有过于严格权限的修订目录

今天早上,我尝试对Subversion进行修订,发现突然间我没有这样做的许可.

Can't move '/svn/db/txn-protorevs/21000-ga9.rev' to '/svn/db/revs/21/21001':
Permission Denied

看一下revs目录,我注意到有人提交了第21000个修订版,并且由于某种原因缺少新目录的组写权限.

    drwxrwsr-x  2 svn    svn  24K 2008-10-27 10:04 19
    drwxrwsr-x  2 svn    svn  24K 2008-12-18 07:13 20
    drwxr-sr-x  2 jeff   svn 4.0K 2008-12-18 11:18 21

在该目录上设置组写权限允许我提交,所以我很适合另外1000个修订.但为什么会发生这种情况,我可以改变什么以确保它不会再发生?

linux svn permissions posix

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

是否可以将GROUP BY与绑定变量一起使用?

我想发出如下的查询

select max(col1), f(:1, col2) from t group by f(:1, col2)
Run Code Online (Sandbox Code Playgroud)

哪里:1是绑定变量.使用PreparedStatement,如果我说

connection.prepareStatement
  ("select max(col1), f(?, col2) from t group by f(?, col2)")
Run Code Online (Sandbox Code Playgroud)

我收到DBMS抱怨的错误,f(?, col2)它不是GROUP BY表达式.

如何通常在JDBC中解决这个问题?

java sql oracle jdbc prepared-statement

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

Scalaz`Tag.apply`:它是如何工作的?

嗨,我正在研究高级Scala书,我在使用scalaz源代码中修改这段代码时遇到了一些麻烦:

object Tag {
  /** `subst` specialized to `Id`.
    *
    * @todo According to Miles, @specialized doesn't help here. Maybe manually specialize.
    */
  @inline def apply[@specialized A, T](a: A): A @@ T = a.asInstanceOf[A @@ T]

  // ...
}
Run Code Online (Sandbox Code Playgroud)

它怎么样?a.asInstanceOf[A @@ T]不应该用ClassCastException失败吗?

使用的一个例子是:

Multiplication(2) |+| Multiplication(3) 
Run Code Online (Sandbox Code Playgroud)

在这种情况下a是一个Int如何将它转换为@@[Int, Multiplication](Tagged[Int, Multiplication])

谢谢您的帮助.

scala scalaz monoids

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

获取N的素数列表

我正在尝试编写一个函数,该函数接受一个I​​nt并返回直到该Int的所有素数。

例如“ 8的素数列表” = List(3,5,7)

这是我到目前为止所拥有的:

  def isPrime(i: Int): Boolean = {
    if (i <= 1)
      false
    else if (i == 2)
      true
    else
      !(2 to (i - 1)).exists(x => i % x == 0)
  }                                               //> isPrime: (i: Int)Boolean

    def getListOfPrimesToN(n : Int) = {

    }
Run Code Online (Sandbox Code Playgroud)

对于功能getListOfPrimesToN,我打算1.创建一个大小为n的列表“ l”,并使用介于0到n之间的元素填充它。2.调用“ l”的映射函数,并为List中的每个元素调用isPrime。

如何创建元素1到N的列表?

用于返回所有质数直至(包括Int N)欢迎数的任何其他解决方案。

primes scala

3
推荐指数
2
解决办法
4074
查看次数

如何按类型查找 Unison 函数?

假设我想搜索类型类似于 的函数[k] -> Set k。我正在尝试使用findUCM 的命令,但这只能让我按名称搜索。如果我知道我正在寻找的函数的名称,我就不必搜索它

有类似 Haskell 的Hoogle 的东西吗?

unison-lang

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