小编pas*_*qui的帖子

最接近一组点的线

鉴于一组points S (x, y).

找出line所有点的距离最小?也就是说,最小化每个点和最佳线之间的距离之和(绝对值或平方).

距离我指的是点和线之间的最短距离.也就是最常见的一个,即欧几里德空间中的欧氏距离.

我试过谷歌搜索但找不到任何相关的结果,是否有任何行扫描算法可以完成任务?

c++ algorithm geometry

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

Java Generic类扩展了参数化类型

假设以下现有类:

class A { 
  public void foo() { ... };
  ...
}

class A1 extends A  { ... };
class A2 extends A  { ... };
...
class A1000 extends A  { ... };
Run Code Online (Sandbox Code Playgroud)

现在,我们需要创建一个覆盖"foo"方法的每个Axx类的变体.基本想法是:

class B<T extends A> extends T {
  @Override public void foo () { ... };
}
Run Code Online (Sandbox Code Playgroud)

但似乎不可能从一个参数类型中扩展一个类.

目标是不再需要遵循新代码:

class B1 extends A1 { @Override public void foo() { ... }; }; 
class B2 extends A2 { @Override public void foo() { ... }; }; 
.... …
Run Code Online (Sandbox Code Playgroud)

java

6
推荐指数
2
解决办法
217
查看次数

Prolog:缺少功能?

任何在Prolog有一定经验的程序员都知道使用一元符号表示数字的优点.例如,如果我们将数字表示为1"("4"是列表"[1,1,1,1]"等等)的列表,我们可以定义:

unary_succ(X,[1|X]).
Run Code Online (Sandbox Code Playgroud)

以下查询执行预期的操作:

?- X=[1,1],unary_succ(X,Y).
X = [1, 1],
Y = [1, 1, 1].

?- unary_succ(X,Y),X=[1,1].
X = [1, 1],
Y = [1, 1, 1].

?- unary_succ(X,Y),Y=[1,1].
X = [1],
Y = [1, 1].
Run Code Online (Sandbox Code Playgroud)

通过这种方式,语句unary_succ(X,Y)以一种方式"绑定"X和Y,如果在声明事实之后,这些变量中的一个绑定到一个值,另一个绑定到一个值.

但是,如果我们使用内部数字表示,则无法执行此操作:

?- X=2,succ(X,Y).
X = 2,
Y = 3.

?- succ(X,Y),X=2.
ERROR: succ/2: Arguments are not sufficiently instantiated

?- succ(X,Y),Y=2.
ERROR: succ/2: Arguments are not sufficiently instantiated
Run Code Online (Sandbox Code Playgroud)

在我看来,先前的陈述和类似的陈述是预期的,这将是非常有用的.也就是说,我们需要以一种方式链接两个变量,当其中一个变量绑定到一个值时,另一个变量遵循先前建立的规则.

我的问题是:

a)在Prolog中做一些简单的方法.

b)如果不可能,支持此功能的任何其他编程语言?

欢迎任何评论.

感谢大家.

*附录I*

另一个例子是:

user_id(john,1234).
user_id(tom,5678).
Run Code Online (Sandbox Code Playgroud)

和查询:

X=john,user_id(X,Y).
user_id(X,Y),X=john
Run Code Online (Sandbox Code Playgroud)

目前通过回溯解决.

prolog

5
推荐指数
0
解决办法
207
查看次数

读取-N和IFS

根据手册页中的“读-N”描述:

-N nchars仅在完全读取了NCHARS个字符后才返回,除非遇到EOF或读取超时,而忽略任何定界符

但是,请回答以下命令:

$ echo 'a b' | while read -N1 c; do echo ">>>$c<<<"; done
>>>a<<<
>>><<<
>>>b<<<
>>><<<
Run Code Online (Sandbox Code Playgroud)

在命令中,空格和换行符都已转换为空字符串,而在命令中:

$ echo 'a b' | while IFS= read -N1 c; do echo ">>>$c<<<"; done
>>>a<<<
>>> <<<
>>>b<<<
>>>
<<<
Run Code Online (Sandbox Code Playgroud)

空格和换行符已正确存储在变量中。

因此,似乎分隔符在“读取”或“同时”命令中仍有一些处理,我不理解。

我们可以将这些结果与使用“ read -n”的结果进行比较,该手册描述为:

-n nchars在读取NCHARS字符后返回而不是等待换行符,但是如果在分隔符之前读取的字符少于NCHARS,则使用分隔符

$ echo 'a b' | while read -n1 c; do echo ">>>$c<<<"; done
>>>a<<<
>>><<<
>>>b<<<
>>><<<

$ echo 'a b' | while IFS= read -n1 c; do echo ">>>$c<<<"; done …
Run Code Online (Sandbox Code Playgroud)

bash ifs

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

Cloudfront Distribution S3 日志记录不起作用

一年前我已经建立了一个cloudfront发行版...并且我在其上启用了s3日志记录,并链接了一个名为“cloudfront-s3”的s3存储桶。

  • 现在我回去检查,发现日志根本没有发送到那个存储桶。

  • 我似乎找不到问题或原因。

  • 任何帮助,将不胜感激。

logging amazon-s3 amazon-web-services amazon-cloudfront

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

两个或多个枚举中的所有元素集

假设我们有两个或多个枚举和一个包含所有枚举元素的Set,如:

import java.util.Map;
import java.util.Set;
import java.util.HashSet;

public class Foo {

    interface FooEnum {}

    enum FooEnum1 implements FooEnum {
        K1,
        K2
    }

    enum FooEnum2 implements FooEnum {
        K3,
        K4
    }


    static public Set<FooEnum> all = new HashSet<FooEnum>();

    public static void main(String [] args) {
      Foo it = new Foo();

      it.all.add( FooEnum1.K1 );
      it.all.add( FooEnum1.K2 );
      it.all.add( FooEnum2.K3 );
      it.all.add( FooEnum2.K4 );

      for( FooEnum k : it.all ) {
        System.out.println( k.toString() );
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

all对于每个集合成员,每个枚举(在枚举本身之外)没有一个"添加" 就可以填充集合吗?也就是说,在枚举构造函数或静态代码中填充它?

**附录**

换句话说,目标是添加一个枚举元素或添加一个实现FooEnum的新枚举不需要新的代码行来填充集合(程序员可能会忘记导致错误).

更好的是,如果在构造函数或静态代码中完成"add"的初始化. …

java enums set

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

具有字符串成员的类的 C++ 移动构造函数

我用以下代码编写了一个类:

class Test {
public:
...
    Test( const Test &&that ) : i(that.i), s(std::move(that.s)) {
        cout << "move contructor." << endl;
    }
...
private:
    int i;
    std::string s;
};
Run Code Online (Sandbox Code Playgroud)

如果我反汇编生成的代码,我会看到:

        .type   Test::Test(Test const&&), @function
Test::Test(Test const&&):
...
       call    std::remove_reference<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>::type&& std::move<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
        movq    %rax, %rsi
        movq    %rbx, %rdi
.LEHB3:
        call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@PLT
Run Code Online (Sandbox Code Playgroud)

它的调用让我感到惊讶,basic_string<...>::basic_string( basic_string<...> const&)因为我期望调用 basic_string 的移动构造函数basic_string<...>::basic_string( basic_string<...> &&)

我以错误的方式实现了移动构造函数?

c++ move-semantics

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