未交叉骑士之旅
问题J.无交叉骑士之旅。 一个著名的谜题是使用骑士“巡游”8×8棋盘上的所有方块,骑士是一块只能在一个方向上跳跃一个方块,在正交方向上跳跃两个方块的棋子。 骑士必须访问棋盘的每一个方格,不得重复,然后返回其起始方格。 有很多方法可以做到这一点,棋盘的大小是可控的,所以这是一个人类可以解决的合理难题。
然而,你可以使用电脑,并且有一些编码技能! 因此,我们将在矩形m×n棋盘上为您提供此问题的更难版本,并附加一个约束条件:骑士可能永远不会穿越自己的路径。 如果你想象它的路径由直线段组成,这些直线段连接着它所跳跃的方块的中心,那么这些线段必须形成一个简单的多边形; 也就是说,没有两个线段相交或接触,除非连续的线段在它们的公共端点接触。 这个限制使得不可能访问每个方块,因此您必须最大化骑士访问的方块数。 我们保留骑士必须返回起始方格的限制。 图J.1显示了第一个样本输入的最佳解决方案,即6×6电路板。
输入由包含两个整数m(1≤m≤8)和n(1≤n≤10)的单行组成 15 ),给出矩形棋盘的尺寸。
问题。 在一个5×8的矩形内,Bart绘制了沿着1×2矩形对角线的闭合路径。 找到尽可能长的路径。
Alexey的对话
数字福克斯 成功的狐狸所知道的一定比刺猬所知道的总和还要多,因为它必须知道事物之间的联系。 这一事实是设计用于解决某些问题的计算机系统的关键。 阅读更多信息 -
自动微分简介 自动微分可能是你从未听说过的最好的科学计算技术之一。 如果你同时使用计算机和实数,我认为你至少会从对AD的基本理解中受益,我希望本文能提供这一点; 阅读更多信息 -
论编译人员的聪明 “足够聪明的编译器”已经成为Lisp社区中的一个比喻:一个神话般的野兽,它承诺语言和界面设计者几乎无限的自由,并让他们的输出因其外观而陷入性能困境。 几年前,我还年轻,参加了一个研究项目,建造了一个这样的东西。 忽略了大量的星号、脚注和警告,我们最终做出了一些本质上令人印象深刻的东西:你为编译时资源中的抽象边界付费,但它们最终在运行时是免费的。 一个 原型 最近刚刚开源,所以现在是谈论它的好时机。 阅读更多信息 -
编译器的聪明2:如何 这个 编译器的聪明 这篇文章用广义的、哲学的笔触描述了过度激进的编译游戏的名称。 在这里,我想详细介绍一下Mandelbrot示例,以便感兴趣的读者可以看到一种特定的方法来实际完成该级别的优化。 阅读更多信息
我最喜欢的帽子拼图
一位苏丹决定对他的100位圣人进行测试。 先哲们会一个接一个地排成一行,这样最后一个人就能看到其他人。 苏丹有101顶帽子,每顶帽子都有不同的颜色,圣人知道所有的颜色。 苏丹把所有的帽子都戴在圣人头上,只有一顶没有戴。 圣人只能看到他们面前人们帽子的颜色。 然后,按照他们想要的任何顺序,每个智者都会猜测自己头上帽子的颜色。 每个人都能听到之前所有的猜测,但除此之外,圣人无法说话。 他们不允许重复已经宣布的颜色。 每个猜错颜色的人都会被砍下脑袋。猜对的人就可以自由了。 测试规则在测试前一天发给他们,届时他们有机会就一项策略达成一致,该策略将最大限度地减少测试期间死亡的人数。 这个战略应该是什么?
雇佣世界上最聪明的人
有一个数组包含从1到的所有整数 n个 以某种顺序,除了缺少一个整数。 建议一个有效的算法来查找缺失的数字。
有一个数组包含从1到的所有整数 n个 按照一定的顺序,除了一个整数缺失,另一个整数重复。 建议一个有效的算法来找到这两个数字。
一辆汽车在一条有几个加油站的环形道路上。 加油站的汽油不足,加油站和车内的总可用汽油量正好足以让汽车绕马路行驶一圈。 道路上真的有一个地方可以让汽车开始行驶,在每个加油站停下来加油,这样汽车就可以完成一整圈而不会耗尽汽油吗? 假设汽车油箱足够大,不会出现限制。
联锁Polyminos
魔方游戏
猜西装
一副由36张扑克牌组成的扑克牌(四副牌,每副9张)面朝下躺在一个通灵者面前。 通灵者命名上层卡片的花色; 之后,卡片被翻过来给他看。 然后通灵者命名下一张牌的花色,依此类推。通灵者的目标是尽可能多次正确猜测花色。 卡片的背面是不对称的,所以每张卡片可以通过两种方式放置在卡片组中,通灵者可以看到顶部卡片的方向。 通灵者的助手知道牌组中牌的顺序; 他不被允许改变顺序,但他可以用这两种方式中的任何一种来调整任何卡片的方向。 灵媒有可能在助手了解牌的顺序之前,提前与助手进行安排,以确保至少(a)19张牌,(b)23张牌的花色能够被正确猜测吗? 如果你为超过19张的卡片设计了一个猜测策略,也要解释一下。
二元牛市解释
维克多正在接受的测试包括 n个 “真”或“假”问题。 起初,维克多不知道任何答案,但他被允许参加多次相同的测试。 每次完成测试后,维克多都会得到分数,也就是正确答案的数量。 维克多利用这个机会重新测试,找出所有正确的答案。 我们表示为 a(n) 维克多需要参加测试的最少次数,以确保他能找出所有答案。 证明这一点 a(30)≤24 、和 a(8)≤6 .
如果有一种非自适应方法来计算测试 n个 问题由 k个 尝试,然后有一种非自适应的方法用2计算测试 n+k−1 问题由2提出 k个 尝试。
没有奶牛的二元公牛
一个测试由30个正确或错误的问题组成。 测试结束后(回答了所有30个问题),维克多得到了分数:正确答案的数量。 维克多不知道答案,但被允许参加多次相同的测试。 维克多能想出一个策略来保证他能在第29次尝试后找出所有答案吗? 在第24次尝试之后?