2018年9月27日,星期四

一些结而不是结

以下是使用上述在线工具制作的一些打结图案 一些帖子回来。对于每个结,还显示了用于在编辑器中创建结的“网格图案”。首先,简单 不知所措.

不是一个结

所罗门的结
紧接着,我们有了一个绝不打结的漂亮图案: 所罗门结 是赋予这个互锁链主题的名称。

所罗门怪人

顺便说一句,您可以制作看起来像 所罗门结 拖船瓷砖:

牛车钩索罗门怪兽

三叶结
三叶 是我们可以绘制的最简单的实际结,但是有几种绘制视觉上不同但本质上等效的三叶草的方法,第一种被认为是“基础”凯尔特结:

三叶草1

这是另一种形式:

三叶草2

还有一个鲜为人知的:

三叶草3

约瑟芬结
约瑟芬(Josephine)是另一个非打结(但非常具有装饰性),它由两个交错的链节组成,似乎是手工艺者(在皮带,手镯和花边上使用它的人)的最爱:

约瑟芬链接

图八结
三叶形是在最小平面图中唯一具有3个交叉点的数学上独特的素结,并且 图8 是唯一带有4的版本。此版本很好地说明了其名称:

图八1

在这里,有点偏斜:


图八2

三转
仅有五个交叉点的两个主要结之一,即三捻(或 5_2)看起来很像图8。您可以看到删除图8网格图案中的一条线是如何允许形成该结的附加扭曲的。

三捻

十八岁
我不知道 8_18,但这是一个漂亮的结,因此应该有一个结。这是它的两个演示:

八十八1

八十八二


尝试这些和其他 这里.

2018年9月26日星期三

多项式除法练习页

我添加了一个新的多项式除法页面,该页面生成随机问题,并要求您一次填写一个答案。该页面是 这里及其合作伙伴-多项式除法 计算器示例生成器.

该页面向您显示一个随机生成的问题,如下所示:


设置一个初始网格,除数写在左侧的第一栏中。其他一切都是未知的。


这是用于多项式乘法的网格,但是我们只有一个多项式-我们不知道在其他被乘数的顶部放什么。如果我们将除法问题视为N / D = Q(分子除以分母得到商),则相应的乘法问题为DxQ = N,我们得到D(分母或除数),我们想找到要放入的Q沿着顶部,以便网格的内容使我们得到N(分子或被除数)。 

我们从N级最高的术语开始。该页面提供以下提示:


在网格方面,系统会要求您提供将在第一行的最左侧空白单元格中使用的项的系数。


正确的输入是-2。这样可以填充网格的另一列:



现在,根据此提示,我们来看下N中的下一项:


事实证明,解决方案中不需要1度项,因为我们已经在网格中拥有了所有需要的条件。手动执行这些操作时,您可以继续使用常数项,但是在此页面上,您实际上需要在1度列中输入0。


转到N中的下一项,我们得到以下提示:


由于表中没有2级项,因此所需系数为4。


...事实证明,线性项也可行,因为在这种情况下没有余数。 

试用多项式除法练习页 这里,然后访问 这一页 有关该主题的其他帖子和资源的链接。



2018年9月25日星期二

通常是几号?

在“健忘森林”中,爱丽丝试图找出今天是什么日子,而森林中不可靠的居民对此无济于事。狮子位于星期一,星期二和星期三,而独角兽则位于星期四,星期五和星期六。更重要的是,他们每个人都只发表一个声明,并且爱丽丝必须从中做出演绎。

插图作者 约翰·特尼尔 (public domain)

您可以尝试解决其中一些难题 这里,并了解如何解决这些问题 这里.

受到原始拼图的启发 这本书的名字是什么? 狮子和独角兽会说:“我昨天说了实话”或“明天是我撒谎的日子之一”。

如果我们生成一堆谜题,其中X表示“昨天Y是谎言,明天是明天”,我们最终将使每个生物都能做出12条陈述(对动词时态作了一些修正后)。这些陈述中有两个“今天我会讲真话”(可以在任何一天说)和“今天我会讲谎言”(永远不能说), 所以我们从每个生物那里得到10条陈述,总共有100个可能的谜题。但是,事实证明,这些组合中只有43种最终会产生良好的困惑(使语句产生独特解决方案的困惑)。这套解决方案是什么样的?从解决方案的数量中我们知道,一周中的7天没有平等地代表。频率如下所示:


在解决方案集中,狮子的第一天(星期一)和独角兽的最后一天(星期六)只出现一次,狮子的最后一天(星期三)和独角兽的第一天(星期四)每次出现10次。 最常见的一天是他们俩诚实的日子,星期日是21岁。在这个森林里,从来没有星期二或星期五。

为什么不星期二或星期五?
这暗示了一个元难题:为什么星期二或星期五永远都不是难题解决方案之一?如果我们看看这几天狮子和独角兽所说的话,我们就会明白为什么会这样。让我们以周二为例-这是狮子的卧日,它恰好在狮子的卧日中间(星期二,昨天,今天和明天都是卧日)。因此,这意味着Lion可以做出以下陈述(所有谎言):

我今天说了实话
明天我会说实话
我昨天说了实话
独角兽今天告诉谎言
独角兽昨天告诉谎言
独角兽明天会说谎

对于独角兽来说,这是一个讲真话的日子,他可以说以下话:

我今天说了实话
明天我会说实话
我昨天说了实话
狮子今天说谎
狮子昨天说谎
狮子明天会说谎

在星期二,狮子和独角兽都可以发表完全相同的陈述……也可以在星期五发表完全相同的陈述。因此,鉴于这些陈述中的任何一对,都无法区分星期二和星期五,也无法分辨谁在撒谎,谁在说真话。因此,由这些语句集形成的36个难题(可能大约在星期二或星期五)都不是形式正确的难题(具有独特的解决方案)。

为什么在难题解决方案集中如此好地代表了星期日?我们非常接近一半的难题都将星期日作为解决方案(21/43)。 这是一个例子 这些难题之一,和 这是另一个.

通过列出当天可能做出的陈述,以及陈述之间的相互作用,我们可以看到星期日如何获得21天。在每个声明之后的方括号中,我们列出了可以进行声明的所有日期(星期日,在某些情况下还包括其他日期)

狮子的星期天声明(全部正确)
我明天(星期三,星期三)说谎。[5]
我昨天(星期天,星期二,星期三,星期五)说了实话[3]

独角兽今天(星期天)说了实话[5]
独角兽在昨天(周日,周一,周二,周三,周五,周六)说谎。[3]
独角兽将于明天(星期日,星期三)讲真话[5]

独角兽的星期天声明(也都是如此)
我明天(星期日,星期一,星期四,星期五)说实话
我昨天(星期天,星期四)说谎

狮子今天(星期天)说了实话
狮子昨天(星期天,星期四)说了实话
狮子将在明天(周日,周一,周二,周四,周六)说谎

在Lion的声明旁边,在方括号中,列出了除星期日外没有其他共同日的独角兽声明的数量。在Lion的声明“明天我会说谎”(只能在星期日和星期三说)时,可以将独角兽的所有五个陈述配对使用,以解决唯一的解决方案是星期日的难题(也无法做出独角兽的星期日陈述)在星期三)。从上面的列表中算出所有配对,我们得到5 + 3 + 5 + 3 + 5 = 21。


填补空白

我们希望有更多的谜题,每天都有代表,并且没有那么多的星期日。首先,我们可以通过允许每个生物简单地说“今天是星期一”或一周中的其他几天来获得更多困惑。添加这些语句将有效的难题数增加67至110个难题(可能的17 ^ 2 = 289条语句组合)。

星期日的频率增加了一倍以上,现在有47次,而星期二和星期五则有6次。星期一和星期六还有10次发生,而星期三和星期四有26次。

狮子和独角兽还能说些什么?我们希望他们能够发表声明,为今天的候选人提供几天的时间。一个示例是允许他们说“今天是工作日”或“今天是周末”。您可以尝试以下难题之一 这里 (狮子说是周末,独角兽说是星期五)。

将这两个语句相加会将语句组合的数量扩展到19 ^ 2 = 361,并将有效拼图的数量扩展到132。位于周末的某一天),解决方案的分布不再对称。


星期一出现12次,星期二6,星期三38,星期四42,星期五10,星期六13和星期天54次(下降到大约41%)。

我们能想到狮子和独角兽的更多说法吗?当然。但是有132个难题需要解决,让我们现在就停止在这里。更改解决方案数量及其分布的其他有趣方法是,更改对我们的森林朋友来说最“真实”的日子-如果他们更诚实,怎么办?如果说谎的日子重叠了怎么办?您可以通过修改笔记本来解决这些问题 这里.

2018年9月15日星期六

用集合解决(一些)逻辑难题

您可能已经注意到, 去年这个时间前后,我一直在根据Raymond Smullyan的某些书中发现的谜题进行游戏。这包括 骑士和小刀, 波蒂亚的棺材, 检查员克雷格的案卷文件, 老虎与宝藏梦之岛。拼图之间的一些区别是肤浅的:例如,“ Portia's Casket”拼图可以改写为“ Knights and Knaves”拼图。尽管这些谜题都有一些共同的深层结构,但我发现有时在编写解算器或生成器时,谜题类型需要采用不同的方法。

我一直喜欢的最新拼图类型是基于Smullyan的拼图中发现的一些拼图 这本书的名字是什么?. “狮子与独角兽”拼图围绕着刘易斯·卡罗尔的角色  透过窥镜,以及爱丽丝在那里发现的东西对于这种逻辑难题,我发现使用 为难题建模(而不是说, 命题, 真值表, 要么 图表)似乎最有意义。

狮子与独角兽合影
在 东座 

如第47章所述 爱丽丝与健忘森林,
当爱丽丝进入健忘森林时,她并没有忘记一切,只有某些事情。她经常忘记她的名字,而她最容易忘记的一件事是星期几。现在,狮子和独角兽是森林的常客。这两个是奇怪的生物。狮子位于星期一,星期二和星期三,并在一周的其他日子讲真话。另一方面,独角兽在星期四,星期五和星期六,但在一周的其他日子说实话。
有一天,爱丽丝遇到了狮子和独角兽,它们都躺在一棵树下。他们发表了以下声明: 
狮子:昨天是我说谎的日子之一。 
独角兽:昨天也是我说谎的日子之一。
爱丽丝必须知道:今天是几号? 
如果您认为有解决方案,请在以下位置进行测试 互动版拼图.

如果我们使用集合建模, 话语世界 因为这个问题是星期几。
$$ \begin{split} Days =&\ {\ textrm {星期一,星期二,星期三,} \\ &\ textrm {星期四,星期五,星期六,星期日} \} \end{split} $$ We consider the set L 狮子躺着的日子 U 独角兽撒谎的日子
$$ \begin{split} L =&\ {\ textrm {星期一,星期二,星期三} \} \\ U =&\ {\ textrm {周四,周五,周六} \} \end{split} $$
每套动物的补语中都列出了动物讲真话的日子。
$$ \begin{split} \overline{L} =&\ {\ textrm {星期四,星期五,星期六,星期日} \} \\ \overline{U} =&\ {\ textrm {星期日,星期一,星期二,星期三} \} \end{split} $$ 这两个集合有一个空的交集-这两个字符永远不会同时说谎。然而,他们讲真话的日子交集并非空无一物:两者都每周一次在同一天讲真话。
$$ \begin{split} L \cap U =& \emptyset \\ \ overline {L} \ cap \ overline {U} =&\ {\ textrm {星期日} \} \end{split} $$ The set 是具有结构的场景,日子是有序的场景-狮子和独角兽可以谈论“昨天”和“明天”。对于任何几天,我们都可以要求它的“明天”-下一天的集合,或者它的“昨天”的集合,即前几天的集合。当狮子说“我昨天说谎”时,这可以翻译成“今天是我其中一个说谎日子的明天”。 Lion的声明涵盖的日期为:
$$ S_L = t(L)= \ {\ textrm {星期二,星期三,星期四} \} $$ 但是,狮子的声明所涵盖的日子是否与他讲真话的日子相吻合?要相信他关于今天是哪一天的陈述,它必须描述他实际上是在真实地讲话的一天。如果狮子说的是实话,那一定是在狮子声明中的日子与狮子的真实日子相交的一天。
$$ S_L \ cap \ overline {L} = \ {\ textrm {星期四} \} $$ 但是,狮子可能在撒谎。如果Lion在撒谎,那么今天就不在Lion陈述的日子与Lion撒谎日子的交集中。
$$ \ overline {S_L} \ cap L = \ {\ textrm {星期一} \} $$ 由于我们不知道狮子是在说真话还是在撒谎,因此我们必须考虑这两种可能性,因此仅基于Lion的陈述,它可能存在的日子就是: $$ \begin{split} D_L &=(S_L \ cap \ overline {L})\ cup(\ overline {S_L} \ cap L)\\ &= \ {\ textrm {星期一,星期四} \} \end{split} $$ 通过类似的过程,我们可以根据独角兽的陈述获得另一组日子。
$$ \begin{split} D_U&=(S_U \ cap \ overline {U})\ cup(\ overline {S_U} \ cap U)\\ &= \ {\ textrm {星期日,星期四} \} \end{split} $$ 来自狮子的场景 独角兽提供的集合可能是今天的解决方案-如果交叉路口是空的,那么就没有解决方案,如果交叉路口有几天,那么难题就很模糊了,如果交叉路口只有一天,那是今天:
$$ \begin{split} D &= D_L \cap D_U \\ &= [(S_L \ cap \ overline {L})\ cup(\ overline {S_L} \ cap L)] \ cap [(S_U \ cap \ overline {U})\ cup(\ overline {S_U} \ cap U )] \\ &= \ {\ textrm {星期四} \} \end{split} $$ 这种表示法可能会使这种思维方式看起来很困难-这是一个更明确地说的过程(请参见上面的公式...):

1.考虑狮子。狮子的声明指的是哪几天?
2.在这些日子里,哪一天与狮子的真实日子相吻合?
3.狮子会的声明不涵盖哪几天?这些与狮子的说谎日子相吻合吗?
4.合并狮子的这两天清单。
5.为独角兽执行第1步至第4步,以列出独角兽可能的日子。
6.如果有一天既在狮子的清单上又在独角兽的清单上,那就是解决方案。

我们可以通过改变狮子和独角兽的说法来解决这个难题。与其说“我昨天讲过谎”,不如说“我明天会讲实话”或“今天是工作日”,甚至“今天是星期三”。其中一些会产生很好的困惑(最后一组中的一个元素),而其他则可能不会。

可以找到生成此类132个谜题的Jupyter笔记本 这里,您可以解开谜题 在这里.

2018年9月6日,星期四

产生凯尔特结图案

这篇文章介绍了一种生成算法 凯尔特结模式 - 布置在网格中的装饰性结,链节和辫子,如下图所示:


如果您不希望阅读这些内容的生成方式,而是开始尝试创建上述模式,请尝试使用 编辑随机结模式发生器 我已经张贴在我的 的github 页数.

我尝试了各种生成这些模式的策略(例如,  使用 瓷砖),但此处所述的方法与我喜欢手工绘制的方法最为接近,就像艾丹·米恩(Aidan Meehan)在书中所描述的那样, 凯尔特人设计:打结-抄写员的秘密方法。 此处提供的变体旨在建议如何根据Meehan的书中技术的简化版本编写程序来生成这些模式。

结状图案由代表线或弦的股线以及编织股线之间的间隙组成。下述技术实际上涉及到绘制间隙,使股线从间隙之间的负空间中出来。本质上,绘制点网格,并在相邻点之间有选择地绘制线-这些线成为线束之间的间隙。应用了附加规则以连接点以创建编织效果,并且将点替换为多边形以 创造出更具风格化的效果。

1.定义主网格点
使用一组在水平和垂直方向上以一个单位距离设置的“主要”点,将结状图案布置在正方形坐标系上。我们说(0,0)是网格的左上角, x 方向是正确和积极的 y direction is down. 主网格的尺寸必须为奇数(两个像素中的点总数必须为奇数) xy 指示)。因为我们从左上角的(0,0)开始,所以右上角的点(x,0)必须具有x偶数(在下面的示例中为4),并且左下角的点(0,y)必须具有y偶数(在下面的示例中为6)。

主网格

(注意:在Meehan的帐户中,事物的分层略有不同,因此我们称其为主网格称为三级网格。)

2.识别辅助网格点
网格上的某些点很特殊-它们构成了辅助网格。特殊的辅助网格点是那些 xy 值是偶数,或者都是奇数。

二次电网

在下面的步骤4中,辅助网格指向 xy 甚至被称为 偶数节点,以及同时具有 xy 奇数将称为 奇数节点。需要确保主网格具有奇数维(步骤1),以确保图案的角都是次要点。

3.在节点周围绘制四边形
每个节点都将成为节点图案中的一个间隙-间隙的基本形状是四边形,其顶点位于每个节点的上方,下方和左侧和右侧的1/4单位。

基本节点多边形

为节点绘制所有多边形后,我们得到一个“菱形”网格,如下所示:

为之绘制的节点多边形
二次网格点


4.从节点多边形顶点延伸线
为了创建编织效果,我们从每个节点多边形的顶点延伸线


对所有节点执行此操作将创建如下图像。

从节点延伸的线
多边形顶点

如果交换奇数节点和偶数节点的规则,则最终会得到正确的“相反”编织:穿过的股反而越过了,反之亦然。

5. 放置障碍物,下降线
在上图中,简单的编织图案似乎从侧面延伸。为了为图案创建边缘边界,并创建更多有趣的曲折,我们遵循一些绘制边界的规则。

边界规则1:只要不违反规则2,边界就可以连接任意两个非对角相邻的节点(第二点)。边界线段的中点将是主要点。

边界规则2:一个主要点不能超过一个边界。

下面的示例显示了沿着图像边缘绘制的边界以及一些内部边界。
法律边界示例,显示
主要和次要点
(节点多边形被隐藏)

现在,我们已经介绍了边界,我们将改进如何绘制从节点中绘制的线(调整步骤4):

节点线规则:仅在节点的顶点没有边界的情况下才从节点顶点绘制一条线。

应用节点线规则并绘制多边形(并删除主网格点),我们得到的图像如下图所示,其中编织遵循边界-出现的股线(白色)似乎从边缘反弹,并且扭转以避免内部边界。

节点多边形,边界和线 

6.细化节点多边形
我们可以应用一些样式规则以使图案看起来更平滑-对原始节点多边形的这些更改(第3步)将基于节点附近是否存在边界。

节点样式规则:截断(切掉)边界附近的节点多边形的顶点。

下面是与上面相同的模式,但是节点多边形遵循节点样式规则。通过查看图像边缘附近的节点,尤其是角节点,可以最清楚地看到规则的效果。

模式使用截断
节点多边形

可以对如何绘制节点和线进行进一步调整,以创建更平滑的结型。我做了一些实验,但没有取得很好的结果。这是上面相同模式的一个示例,用于调整节点多边形和线宽:

应用的样式略有不同
结型

我希望您喜欢玩这个游戏-自己执行上述过程或玩这个游戏 .