最近几天,我已经从主人的研究中勉强自己,并一直专注于这个(看似简单的)难题:
这个10*10网格构成了100个可用场所的正方形.目标是从一个角落开始并遍历所有地方,相对于一些简单的"遍历规则"并达到数字100(如果你是一个程序员,则从99开始,而不是从0开始:)
遍历的规则是:
1.沿着垂直和水平轴跳两个空格
2.沿对角线一个空格跳
3.您只能访问每个方块一次
为了更好地可视化,这是一个有效的示例遍历(直到第8步):
示例Traverse http://img525.imageshack.us/img525/280/squarepuzzle.png
从手动的角度来说,我一直在努力解决这个难题.多年来,我一直试图手工解决它,但我从来没有超过96.听起来容易吗?试试自己,亲眼看看:)
因此,为了解决这个问题,我在Python中开发了一个简短的(大约100行代码)程序.我是这种语言的初学者,我想看看我能做些什么.
该程序只是应用详尽的尝试和错误解决技术.换句话说:蛮力深度首先搜索.
我的问题来自于此:遗憾的是,该程序无法解决问题,因为状态空间太大,以至于搜索永远不会找到解决方案.它可以毫不费力地达到98号(并打印出来),但仍然不是一个完整的解决方案.
该程序还打印出它到目前为止所涵盖的搜索树的长度.在几分钟内,例如,第65个元素的遍历列表将被覆盖到最后,只有一条路径.该数字以指数增加的时间段减少.我已经运行了很长一段时间的代码,并且无法超越50个障碍,现在我确信.
似乎这种简单的方法是不够的,除非我永远运行它.那么,如何才能更快,更高效地改进代码,以便提供解决方案呢?
基本上,我期待看到有关如何:
应用编程技巧/技巧来克服疲惫
..最终实现了一个实质性的解决方案.
提前致谢.
修订
感谢Dave Webb将问题与域名相关联:
这非常类似于Knight's Tour问题,该问题涉及将骑士绕棋盘移动而不重新访问同一个方块.基本上它是相同的问题,但具有不同的"导线规则".
我有以下两个返回计数的PL/SQL Oracle查询:
SELECT count(*)
INTO counter_for_x
FROM Table_Name
WHERE Column_Name = 'X';
SELECT count(*)
INTO counter_for_y
FROM Table_Name
WHERE Column_Name = 'Y';
Run Code Online (Sandbox Code Playgroud)
是否可以编写一个返回计数并填充相应计数器变量的查询?
我正在按照Autotools页面上的使用检查的指示,试图在(当前)小型C项目中构建对单元测试的支持.虽然我使用的是Cgreen而不是Check.
我遇到了第9步的问题,这导致automake发出关于使用'%'的警告 - 样式模式规则是GNU make扩展.
具体的制定规则是:
check_%.$(OBJEXT) : $(srcdir)/%.c
$(COMPILE) -DCHECKING -c -o $@ $^
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种等效的方法来指定不依赖于gnu make扩展的规则.
是否可以通过编程方式直接创建指向Apple iTunes商店中项目的URL?
我注意到last.fm和类似网站有链接,用户可以直接将用户带到iTunes商店的一部分,例如专辑页面.
链接的URL由last.fm创建.以下是此类网址的示例:http://www.last.fm/affiliate_redirect.php? atype = 9&id = 3168755& Supplier = 24
我猜他们在这个链接后面有一些代码,但他们肯定没有手动添加所有项目?
我想知道是否使用腰带和大括号(吊杆)方法进行编程 - 特别是数据验证 - 是不是很好的做法.这来自以下示例.
我正在创建一个表单,并且我将监听器添加到所有字段,这意味着OK只有在表单中的所有字段都具有有效值时才启用该按钮.然后我编写了OK单击按钮时运行的代码.
我悲观的一面决定腰带和大括号从不伤害任何人,如果我的形式逻辑中存在错误,再次验证表格也不会有什么坏处.
但是如果验证失败,我不知道该放什么.如果我做这样的事情:
if (! form.isValid()) {
displayErrorMessage();
}
Run Code Online (Sandbox Code Playgroud)
然后我必须创建代码来显示永远不会显示的错误消息.任何在将来维护此代码的人都会担心并且可能会在理论上对此进行不必要的对话.我想要的最后一件事是有人想知道为什么永远不会显示这个特定的对话框.
规模另一端的选项是:
if (! form.isValid()) {
throw new RuntimeException("This should never happen!");
}
Run Code Online (Sandbox Code Playgroud)
坦率地说,即使打字,我也觉得很脏,但也许有一个很好的理由使用它我错过了.
最后我最终得到了:
assert form.isValid();
Run Code Online (Sandbox Code Playgroud)
然而,它的缺点是它并不是真正的腰带和括号,因为在运行时没有括号,所以如果代码中有一个错误,我的表格的裤子仍然会掉下来.
所以也许我根本不应该进行额外的验证,但仍有一部分人认为它不会受到伤害.
我有兴趣听听你在类似情况下做了什么.
(编辑:问题是询问什么是确保表单返回有效数据的最佳方法.假设表单的输出在数据库结束之前再次验证,依此类推.)
我在这里很傻但是在迭代字符串时我无法获得谓词的函数签名:
bool func( char );
std::string str;
std::find_if( str.begin(), str.end(), func ) )
Run Code Online (Sandbox Code Playgroud)
在这种情况下谷歌不是我的朋友:(有人在这里吗?
我有以下功能:
//Function to get random number
public static int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)
我怎么称呼它:
byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
Run Code Online (Sandbox Code Playgroud)
如果我在运行时使用调试器执行该循环,则会得到不同的值(这就是我想要的).但是,如果我在该代码下面放置一个断点两行,则"mac"数组的所有成员都具有相同的值.
为什么会这样?
时区很难从众多选项中进行选择.我想让这个过程更简单.我在野外看到了一些可以做出最佳猜测的形式.我为一个解决方案着想,但运气不错.有人知道怎么做吗?
从.Net网站中删除所有空格的最佳方法是什么?我发现这个网站空白移除 - 4Wall艺术网站
如果您查看源代码,它显然是.net站点,但删除了所有不需要的选项卡和空格.现在我已经搜索过它似乎是页面渲染上的正则表达式是最好的方法,但有没有人有任何例子?或者对于这是否是最佳方式存在任何矛盾的看法?该网站上的html源代码低至〜30kb,这是我正在努力的方向!
谢谢,史蒂夫
我想对一个位于安全连接上的PHP编写的Web服务进行POST.以下代码只是我经过几个小时的试验和错误后编写的测试控制台应用程序.基本上,我发现了一些使用HttpWebRequest的不同方法,但它们都是相同的.
在Web浏览器上使用"http"测试我的URI,应该返回一个空白的html(带有空体).这在浏览器和我的代码中都可以正常工作.
我继续尝试http://www.google.com,我得到谷歌...(正如预期的那样).当我将URI从http更改为https时出现问题.在Web浏览器上使用"https"测试我的URI ,返回相同的空白html(这是预期的).但是当我在代码中尝试相同的URI时,我得到了404 Not Found.
这是简单的代码(和URI)(取消注释第二个尝试https):
try
{
string lcUrl = "http://servicios.mensario.com/enviomasivo/apip/";
//string lcUrl = "https://servicios.mensario.com/enviomasivo/apip/";
// *** Establish the request
HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUrl);
// *** Set properties
loHttp.Timeout = 10000; // 10 secs
loHttp.Method = "POST"; // I added this for testing, but using GET or commenting this out doesn't change anything.
// Retrieve request info headers ******** HERE I GET THE EXCEPTION **********
HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
// All this …Run Code Online (Sandbox Code Playgroud)