作者chung6hc (心比人老)
看板puzzle
标题[心得] 数斜的解法
时间Tue Dec 18 02:20:46 2007
自从看了 brianjim大 介绍的 janko.at(2755篇), 也开始玩起 数斜,
不过我用的是 nakururu大 介绍的 Simon Tatham 的 slant 程式(2361篇),
因为 janko.at 的 java 程式反应实在有点慢...
Simon Tatham 的程式我玩得较多的还有 数回(loopy) 和 数桥(bridges),
它的题目好像真的是用程式出的, 而且难度也不错, 蛮厉害的!
这星期天心血来潮, 决定挑战 janko.at 数斜 最高难度的最右一题(no39),
仔细看了题目名称 "Gokigen Naname" ...., 昏倒!! 这是日文, 不是德文吧?!
正好是日文题名 "ごきげんななめ" 的罗马拼音, 再查 jp yahoo 的辞典,
还真是有 "不爽" 的意思... ^_^!
从中饭前解到晚饭後, 扣掉吃饭和陪小侄女玩其他 game 的时间,
大概花了 4 个小时才解出来吧?! 其中失败重头来过一次...
整理了一些概念和各位同好分享一下:
一. 样式 (pattern)
数斜 规则上每一格都要有线段, 所以有数字的点可以决定周围格子的线段,
角 点 决定 1 格.
边 点 决定 2 格.
中间点 决定 4 格.
基本上用 "不足(线段数)", "超过(线段数)", "造成单位回圈" 三个概念,
用简单的归谬法就可以整理出一些 样式.
比如说:
横直相邻的 1-1, 3-3 (都是中间点)
横直相邻的 (边点)1-3(中间点)
以上是原始状态下的 样式 (原始样式),
这些都可以决定部分的线段, 而且无论周围状况如何都不影响结果.
决定了一些线段後, 就会出现一些 延伸样式.
比如说:
︱ ︱/ /︱ ︱/
—1—3— → —1—3—
︱ ︱\ \︱ ︱\
/︱ ︱ /︱ ︱/
—2—2— → —2—2—
︱ ︱/ /︱ ︱/
/︱ ︱ /︱ ︱/
—┼—3— → —┼—3—
\︱ ︱ \︱ ︱\
其他就不列举了.
总之 样式 和周围无关, 可独立推导出该区域的部分(或全部)的结果.
二. 2 的递延性
和 数回 斜线相邻的 2 类似, 数斜 横直相邻的 2 也有递延性.
(可参考 turing大 "[心得] 关於数回的「碰触」"(2775篇)一文.)
这个递延性的效果, 看起来像复制, 也有点像推骨牌, 姑且称为"骨牌效果".
在上项 一. 各种样式的两数字中间插入 1 个以上连续的 2, 结果还会相同.
三. 回圈与边
数斜 的线可视为两大组, 概念类似西洋棋中的白格主教和黑格主教.
相邻边点延伸的线条不会连在一起, 同一组的线才可能形成回圈.
只要每一条线都能连到边点, 就保证不会有任何回圈.
有些状况会类似 数桥.
比如说
斜线相邻的 1-1 (都是中间点), 它们不能连在一起, 否则会形成回圈(2单位).
这是最简单的例子.(其实也可以视为一个 样式.)
所以回圈的检查, 除了看回圈本身以外, 还可以看线条有没有连到边上.
janko 站上看到最大的题目是 36 x 24, nikoli.com 的 Puzzle Championship
虽没有 数斜, 但大题目多是 45 x 31, 我想应该是有考虑显示器的一般解析度.
要解大题目或许可以用 slant 程式的 Custom 功能 (Type -> Custom...)
设为 45 x 31 试试, 程式会配合解析度自动调整字型大小.
而且 slant 程式会即时检查 线段数 和 回圈, 反应又快,
我觉得顺的时候还有些畅快感.
第一次在本板 po 文, 请多指教, 谢谢!
Chung
--
没有成见是种成见?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.166.58.11
1F:推 brianjim:这样应该差不多把它的解题技巧都说完了 @@ 12/18 02:34
2F:→ brianjim:不过它很麻烦的地方就是不容易看出哪里有回圈 12/18 02:34
3F:→ brianjim:玩起来的痛苦程度就比数回高一点 12/18 02:35
4F:→ chung6hc:差不多吧...希望以後还有新发现. ^_^! 12/18 02:36
5F:→ chung6hc:回圈的确比较难, 大概是分歧的关系, 数回没有分歧. 12/18 02:45
6F:推 puzzlez:大叔,2755篇时,不是就聊到名称是日文了吗?XD 12/18 04:58
7F:推 puzzlez:上次的11与33样式也可考虑加进去,有时挺常见的XD 12/18 05:00
8F:推 puzzlez:骨牌的比喻很不赖耶~不过我喜欢说成骨牌效「应」... 12/18 05:04
9F:推 puzzlez:它也是一种「连锁反应」..... 12/18 05:05
10F:→ chung6hc:一直没有意会过来, 以为是德文好几天... @_@ 12/18 10:26
11F:→ chung6hc:有列11和33, 只是没图示(原始样式)... ^_^! 12/18 10:31
12F:推 puzzlez:哈,真的有耶! 12/18 11:12
13F:→ brianjim:所以我觉得数斜实在很像数回,但是玩起来没那麽爽快 @@a 12/18 12:24
14F:推 puzzlez:数回的线有「有」与「没有」两种变化,数斜的斜也有两种 12/18 14:58
15F:推 puzzlez:所以在「画面」的呈现上,数斜会比较多一点..... 12/18 14:59