河内之塔是一个难题,如果你不熟悉它,它的工作原理如下:
游戏区域包括3个杆和x个盘,每个盘下一个比前一个更大.可以将这些磁盘放在杆上,这些规则如下:
最后-游戏领域STARTS是这样的:
游戏的目标是将原始"堆叠"的磁盘移动到另一根杆上,即 - 将所有磁盘放在另一根杆上,因此(再次)最大的是在底部,最小的在顶部
您的目标是使用您选择的编程语言编写程序,接受输入(如下所述)并输出解决位置所需的步骤.
一如既往,尽量让它尽可能短.
输入
输入示例:
4-3,7-6-5,2-1
Run Code Online (Sandbox Code Playgroud)
输入是一个字符串,由3个部分组成,以逗号分隔.这些部件是3根杆上每个杆上的磁盘列表.它们也是分开的,这次是连字符( - ),每个子部分都是一个数字,数字越大,磁盘越大.
所以 - 对于上面的输入,这将是一个直观的表示:
. . .
| =====|===== |
===|=== ======|====== =|=
====|==== =======|======= ==|==
ROD 1 ROD 2 ROD 3
Run Code Online (Sandbox Code Playgroud)
产量
正如您在上面的表示中所看到的那样 - 输入的最左侧部分是第一个杆,中间是第二个杆,最后一个是第3个杆.
程序的输出应如下所示:
12,23,31,12,23,13
Run Code Online (Sandbox Code Playgroud)
一个数字列表,用逗号分隔,用于定义应该取出磁盘的磁带,以及磁盘应放在的磁带上.只有3个杆,因此只有6种可能的组合(因为盘必须移动到另一个杆,而不是相同的杆):
12
13
21
23
31
32
Run Code Online (Sandbox Code Playgroud)
输入不必描述处于"原始"状态的字段 - 它可以是中间求解的.
您的程序无法生成空输出.如果输入IS处于原始状态,只需将磁盘放入不同的杆.
输入可以有一个空杆,如下所示:
2-1,3,
,,1
4-3,,2-1
Run Code Online (Sandbox Code Playgroud)
如果输入的格式不是这样,则程序可能会产生未定义的行为.因此,如果输入无效(例如较小的磁盘,丢失的磁盘,无法解决),它就可以. …
假设我们有A级:
class A
{
double x;
double y;
A(double, double);
function <double(void)> F;
};
Run Code Online (Sandbox Code Playgroud)
以下构造函数:
A::A(double a, double b)
{
x = a;
y = b;
F = [this]() { return x + y; };
}
Run Code Online (Sandbox Code Playgroud)
为什么上述构造的工作,而下面的构造会导致编译错误:member A::x is not a variable?(相同的错误y.)
A::A(double a, double b)
{
x = a;
y = b;
F = [x,y]() { return x + y; };
}
Run Code Online (Sandbox Code Playgroud)
我似乎只能捕捉this而不是集体成员.这是为什么?
所以 - 我有这个Socket(不是XMLSocket,只是Socket)客户端.我的服务器上还有一个自定义PHP脚本,它侦听端口X.我的客户端尝试连接到它.
一切正常,安全和沟通,同步和其他任何东西.但是 - Flash Player(实际上是AIR运行时)在尝试连接时会发出错误,但只有当服务器没有运行时......什么?这真的很奇怪 - 错误实际上是由try catch(IOError)处理的,甚至更奇怪,输出中指定的行作为错误行是我刚刚创建Socket的行......?
嗯...
输出:
Error #2044: Unhandled IOErrorEvent:. text=Error #2031: Socket Error.
at ---.server::Client()[---/server/Client.as:167]
at Function/<anonymous>()[---_fla.MainTimeline::frame1:430]
at Function/<anonymous>()
at Function/<anonymous>()[---_fla.MainTimeline::frame1:375]
Run Code Online (Sandbox Code Playgroud)
码:
try {
Sock = new Socket(); // THIS is line 167
} catch (e:IOError){
log("Could not connect!");
status = "disconnected";
}
Run Code Online (Sandbox Code Playgroud)
这并不重要 - 服务器应该仍然在线,错误不会显示......但忽略错误并不好.
还有一件事:当我使用Sock.connect(...)注释掉我实际连接的行时 - 它不会抛出错误,但它显然不起作用...此外,连接部分也在try catch中(IOError)块...
为什么Flash说这个问题出现在第167行,显然是在其他地方?和/或可能是什么问题?
为什么我的getter undefined在下面的代码段中返回第二个参数?它适用于年龄参数,但不适用于身高.如果您使用_param访问它,一切都很好,您可以从下面的输出中看到:
class Person {
constructor(myage, myheight){
this.age = myage;
this.height = myheight;
}
get age(){
return this._age;
}
set age(myage){
this._age = myage;
}
get height(){
this._height;
}
set height(myheight){
this._height = myheight;
}
}
var p = new Person(10, '5 feet');
console.log(p);
console.log(`age = ${p.age} and height = ${p.height}`);
console.log(p.height);
Run Code Online (Sandbox Code Playgroud)
正确生成年龄但不是高度的值
bash-3.2$ node classes.js
Person { _age: 10, _height: '5 feet' }
age = 10 and height = undefined
undefined
Run Code Online (Sandbox Code Playgroud)