小编Nik*_* B.的帖子

用HTF测试

在HTF上有一个令人难以置信的缺乏体面的文档.我所能找到的只是一个教程,它没有提供以下任何真正重要的信息:

  1. 如何创建一个自动执行包中所有测试的测试套件?
  2. 究竟什么是HTF的"黑盒测试",我该如何创建它们?
  3. 基于HTF(源根,包和模块结构,cabal)设置测试套件的实际标准是什么?

testing haskell htf

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

将Python输入字符串限制为某些字符和长度

我刚开始学习我的第一个真正的编程语言Python.我想知道如何将用户输入限制raw_input为特定字符和一定长度.例如,如果用户输入的字符串包含除字母以外的任何内容,我想显示错误消息,如果a-z用户输入超过15个字符,我想显示一个错误消息.

第一个似乎是我可以用正则表达式做的事情,我知道一点,因为我在Javascript中使用它们,但我不确定如何在Python中使用它们.第二个,我不知道如何处理它.有人可以帮忙吗?

python string user-input limit

14
推荐指数
2
解决办法
8万
查看次数

用bash替换另一个单词

我想更改文本中与某个单词匹配的所有单词与bourne shell中的另一个单词.例如:

hello sara, my name is sara too.
Run Code Online (Sandbox Code Playgroud)

变为:

hello mary, my name is mary too.
Run Code Online (Sandbox Code Playgroud)

有谁能够帮我?
我知道grep找到类似的单词,但我想用其他单词替换它们.

linux bash terminal sh

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

具有NULL名称的对象上的all.equal导致'错误:与STRSXP不兼容' - 错误或预期?

在下面的示例中,当名称设置为NULL,all.equalthrows 'Error: not compatible with STRSXP'
但是,如果将名称设置为NA(或某个其他值),则all.equal正常工作.
这是预期的行为还是一个错误?

## SAMPLE DATA
set.seed(1)
x <- data.frame(LETTERS[1:3], rnorm(3))
names(x) <- NULL

x
#   NA        NA
# 1  A -0.626454
# 2  B  0.183643
# 3  C -0.835629

all.equal(x, x)
# Error: not compatible with STRSXP

# add names back in, even 'NA'
names(x) <- c(NA, NA)
all.equal(x, x)
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

解决图形游戏

我在编程竞赛(安德鲁·斯坦克维奇竞赛21)中遇到一个关于如下游戏的问题时遇到了困难:

尼克和彼得喜欢玩以下游戏[...].他们在一张纸上绘制一个无向二分图G,并将一个标记放在其顶点之一上.之后他们轮流行动.尼克先行动.

移动包括沿着图形边缘移动令牌.之后,在移动之前令牌所在的顶点以及与其相关的所有边缘都将从图形中移除.没有有效动作的玩家输掉游戏.

给出了图表,现在的任务是找到给定的起始节点,如果两个玩家都以最佳方式玩,则起始玩家是赢还是输.总结一下

  • 二分图
  • 我们给出了起始节点(比如在左侧)
  • 我们轮流移动,移动包括跟随边缘,但我们无法访问已经访问过的节点
  • 无法移动的球员输球

由于图表是二分图,Nick(第一个玩家)将始终从左侧移除一个节点,Peter将始终从右侧移除一个节点.

图表最多可以有1000个节点(最多500每侧)和50000个边缘,所以需要一个很好的多项式时间算法(这里的时间限制为2秒解决所有首发位置,但我认为我们可以分享很多不同起始位置之间的信息).

我很确定这可以简化为某种顶点覆盖或打包问题,因为图是二分的,但我找不到与这些相关的策略.

我知道一个特殊情况的解决方案:假设两侧分别有n 1n 2个顶点.如果匹配大小为min(n 1,n 2)并且如果较小侧的玩家开始,则存在获胜策略:他只需跟随匹配的边缘并自动获胜.

有任何想法吗?

algorithm graph game-theory bipartite

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

在向sys.stdout写入换行符时,使Python停止发出回车符

我在Windows和Python(非常有效)阻止我'\n'向STDOUT 发送独立字符.例如,以下内容将输出foo\r\nvar:

sys.stdout.write("foo\nvar")
Run Code Online (Sandbox Code Playgroud)

如何关闭此"功能"?首先写入文件不是一种选择,因为输出是通过管道传输的.

python windows python-2.7

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

在未排序的数组中,将第一个较大的元素替换为右边的每个元素

在未排序的数组中,我们必须用右边的第一个元素替换每个元素,该元素大于当前元素.如果右边的元素都不大,那么它应该替换为-1.

例:

3  1  2  5  9  4  8   should be converted to
5  2  5  9 -1  8 -1
Run Code Online (Sandbox Code Playgroud)

我可以想到一个简单的解决方案,我们用整个阵列检查每个元素,这是一个Ο(n²)解决方案.有一个更好的方法吗?

arrays algorithm time-complexity data-structures

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

你是否应该从std :: optional <T>移动,其中T有非平凡的构造函数?

我正在尝试使用clang编译WebKit,并且由于基本上是以下模式而导致编译错误:

#include <iostream>
#include <optional>

struct X {
    X() = default;
    X(const X& other) { }
};

struct Y {
    std::optional<X> x;;
};

int main() {
    Y foo;
    Y bar(std::move(foo));
}
Run Code Online (Sandbox Code Playgroud)

因此,他们使用std::optional<T>T(在他们的情况下WTF::Variant)具有非平凡的复制/移动构造函数,然后使用std::optional移动构造函数.这适用于GCC 8.1.1,但不适用于clang 6.0.1(使用GCC 8.1.1的libstdc ++):

In file included from test.cpp:2:
/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.1.1/../../../../include/c++/8.1.1/optional:276:9: error: call to implicitly-deleted copy constructor of 'std::_Optional_payload<X, true, true, true>'
      : _Optional_payload(__engaged
        ^                 ~~~~~~~~~
/bin/../lib64/gcc/x86_64-pc-linux-gnu/8.1.1/../../../../include/c++/8.1.1/optional:739:4: note: in instantiation of member function 'std::_Optional_payload<X, true, true, true>::_Optional_payload' requested here
        : _M_payload(__other._M_payload._M_engaged, …
Run Code Online (Sandbox Code Playgroud)

c++ webkit optional c++17

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

使用zombie.js进行网站抓取的问题

我需要做一些网络抓取.在玩了不同的Web测试框架之后,其中大部分都是太慢(Selenium)或者太多我的需求(env.js),我认为zombie.js看起来最有希望,因为它使用了一组可靠的库HTML解析和DOM操作.但是,在我看来,它甚至不支持基本的基于事件的Javascript代码,如下面的网页:

<html>
  <head>
    <title>test</title>
    <script type="text/javascript">

      console.log("test script executing...");
      console.log("registering callback for event DOMContentLoaded on " + document);

      document.addEventListener('DOMContentLoaded', function(){
        console.log("DOMContentLoaded triggered");
      }, false);

      function loaded() {
        console.log("onload triggered");
      }

    </script>
  </head>

  <body onload="loaded();">
    <h1>Test</h1>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后我决定手动触发这些事件,如下所示:

zombie = require("zombie");

zombie.visit("http://localhost:4567/", { debug: true }, function (err, browser, status) {

  doc = browser.document;
  console.log("firing DOMContentLoaded on " + doc);
  browser.fire("DOMContentLoaded", doc, function (err, browser, status) {

    body = browser.querySelector("body");
    console.log("firing load on " + body);
    browser.fire("load", body, …
Run Code Online (Sandbox Code Playgroud)

javascript facebook screen-scraping node.js zombie.js

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

如何编写最大集合打包算法?

假设我们有一个有限集S和一个S子集列表.然后,集合打包问题询问列表中的某些k个子集是否成对不相交.问题的优化版本,最大集合打包,要求列表中的成对不相交集的最大数量.

http://en.wikipedia.org/wiki/Set_packing

所以让 S = {1,2,3,4,5,6,7,8,9,10}

and `Sa = {1,2,3,4}`
and `Sb = {4,5,6}`
and `Sc = {5,6,7,8}`
and `Sd = {9,10}`
Run Code Online (Sandbox Code Playgroud)

那么成对不相交集的最大数量是3(Sa,Sc,Sd)

我找不到任何关于算法的文章.你能否对此有所了解?

我的方法:

根据大小对集进行排序.从最小尺寸的集合开始.如果下一组元素没有与当前集合相交,那么我们将该集合统一并增加最大集合的数量.这对你来说听起来不错吗?有更好的想法吗?

algorithm set disjoint-sets

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