鉴于一组points S (x, y).
找出line所有点的距离最小?也就是说,最小化每个点和最佳线之间的距离之和(绝对值或平方).
距离我指的是点和线之间的最短距离.也就是最常见的一个,即欧几里德空间中的欧氏距离.
我试过谷歌搜索但找不到任何相关的结果,是否有任何行扫描算法可以完成任务?
假设以下现有类:
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) 任何在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)
目前通过回溯解决.
根据手册页中的“读-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) 一年前我已经建立了一个cloudfront发行版...并且我在其上启用了s3日志记录,并链接了一个名为“cloudfront-s3”的s3存储桶。
现在我回去检查,发现日志根本没有发送到那个存储桶。
我似乎找不到问题或原因。
任何帮助,将不胜感激。
假设我们有两个或多个枚举和一个包含所有枚举元素的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"的初始化. …
我用以下代码编写了一个类:
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<...> &&)。
我以错误的方式实现了移动构造函数?