参考:表达式运算符

您需要学习如何使用织物图案语言表达式运算符来有效设计织物图案。

织物图案表达式语言是围绕一组值(称为图案的域)来设计的。对于扭曲或横线顺序,域由数字 1 到 8 组成,它们对应于关系中的综和踏板。

由于图案会缠绕它们的域,因此,高于 8 的数字其实是 1,低于 1 的数字其实是 8。这种运算称为模运算。例如,您可以在 5678123 或 3218765 中发现这种运算。

下表定义了一些常用的术语。

术语
定义
操作数
在所有示例中,用于运算符的操作数为数字顺序。不过,操作数可能是从其他运算符创建的其他图案。在这种情况下,请使用括弧来区别操作数。
扩展
指的是从简写图案语言翻译表达式时创建的实际扭曲或横线数字顺序。
长度
描述了扩展顺序中的元素数。例如,(1-4-1)[](1-4-1) 扩展为 1223334444333221(长度为 16)。

运算符用法
简易格式
<图案> 块 <统计>
[]

左侧的操作数是任何长度的顺序。右侧的操作数是用于指定块长度的数字字符(从 0 到 9)的图案。

如果某个操作数短于另一个操作数,则该操作数将(通过重复)扩展到另一个操作数的长度。

随后,在操作数长度相等的情况下,左侧操作数的每个元素都将按右侧操作数中相应位数的值来单独重复。

扩展的长度为(有可能加长的)右侧操作数中的位数之和。

右侧操作数(长度)的单独元素可以替换为 1 到 127 的统计 {数}。

示例
扩展
1234 [] 2
11223344
34512 [] 23
334445511122
12345678 [] 87654321
111111112222222333333444445555666778
12 [] 123494321
12211122221111111112222111221
123 [] 1{12}3
1222222222222333

块表达式

您可以交错格式来使用块表达式。对类似于苏格兰格子呢中所使用的颜色顺序,此表达式特别有用。例如,Drummond 颜色顺序之一的表达如下:

[G 8 R 2 G 2 R 56 G 16 B 2 G 2 B 2 G 36 R 2 G 2 R 8|]。

重复

运算符用法
简易格式
<图案> 重复 <统计>
rep, *

左侧的操作数是任何长度的图案。右侧的操作数是一个整数统计。扩展为 <图案> 重复 <统计> 次。

示例
扩展
1234567 重复 3
123456712345671234567

扩展

运算符用法
简易格式
<图案> 扩展 <统计>
ext, ->

左侧的操作数是任何长度的图案。右侧的操作数是一个解释为长度的整数。左侧的操作数将重塑为右侧的操作数指定的长度。如果左侧的操作数短于所需的长度,则该操作数将通过重复扩展到右侧的长度。如果左侧的操作数较短,它会进行调整。

示例
扩展
123 -> 8
12312312
123456787654321 -> 10
1234567876

连接

运算符用法
简易格式
<图案> 连接 <图案>
,

左侧和右侧的操作数都是任何长度的图案。结果为左侧的操作数与右侧的操作数相连。请注意,拼写图案(例如 1234)时,它的各个成员之间隐含了连接运算(即,1234 相当于 1,2,3,4)。连接运算符仅在需要时(例如,为了分隔括弧中的操作数)才使用。

示例
扩展
(1-4|),(4-1|)
1234321
1-8,(1-8 [] 2)
123456781122334455667788

交错

运算符用法
简易格式
<图案> 交错 <图案>
int, ~

左侧和右侧的操作数都是任何长度的图案。如果某个操作数短于另一个操作数,则该操作数将(通过重复)扩展到另一个操作数的长度。随后,操作数将相互交错。交错运算会交替插入左侧操作数的元素和右侧操作数的元素(就像手指相互交叉一样)。扩展将包含左侧的第一个元素、右侧的第一个元素、左侧的第二个元素、右侧的第二个元素,依此类推。

示例
扩展
123 交错 76
172637
12345678 ~ 4321
1423324154637281
123456787654321 ~ 121221222
112231425261728272615241322211

等于

运算符用法
简易格式
<图案> 等于 <图案>
<, -

只有在左侧操作数的最后一个元素绝对小于右侧操作数的第一个元素时,"-"才能用作等于运算符。

左侧和右侧的操作数都是任何长度的图案。

扩展为左侧操作数与左侧操作数的最后一个元素和右侧操作数的第一个元素之间的顺序相连,然后再与右侧操作数的其余元素相连。

等于将缠绕域。例如,7 等于 2 将扩展为 7812。

等于运算符后面可以紧跟(没有间隔字符)任何数量的记号 (')。记号表示,在到达右侧操作数之前循环运算域。记号数决定了循环的次数。

示例
扩展
1-8
12345678
1-''5
123456781234567812345
123-765
123456765
2<1
23456781
13 等于'' 5812
13456781234567812345812

下至

运算符用法
简易格式
<图案> 扩展 <统计>
ext, ->

运算符用法:<图案> 下至 <图案> 简易格式:>, -

只有在左侧操作数的最后一个元素绝对大于右侧操作数的第一个元素时,"-"才能用作下至运算符。

左侧和右侧的操作数都是任何长度的图案。

扩展为左侧操作数与左侧操作数的最后一个元素和右侧操作数的第一个元素之间的降序顺序相连,然后再与右侧操作数的其余元素相连。

下至将缠绕域。例如,2 下至 7 将扩展为 2187。

下至运算符后面可以紧跟(没有间隔字符)任何数量的记号 (')。记号表示,在向下到达右侧操作数之前循环运算域。记号数决定了循环的次数。

示例
扩展
8-1
87654321
1-8-1
123456787654321
5-''1
543218765432187654321
567-321
567654321
2>1
21
13 下至'' 5812
132187654321876543218765812

模板

运算符用法
简易格式
<图案> 模板 <图案>
temp, :

右侧和左侧的操作数都是任何长度的图案。

模板可以让主要图案(左侧操作数)与纹理图案(右侧操作数)相连(次级连接)。

模板的第一个元素被视为根。模板顺序中的所有其他元素均按照它们与根之差来看待。例如,如果 342 是模板图案,则第一个元素 (3) 为根 (r)。第二个元素 (4) 为 r+1,第三个元素 (2) 为 r-1。因此,该模板为 r、r+1、r-1。

随后,此模板将应用到左侧操作数中的每个元素,同时,元素的值将替换根。

请记住,这些值将缠绕域。

示例
扩展
1-8 temp 121
121232343454565676787818
1-8 : 12121
1212123232343434545456565676767878781818
12321 temp 878
878181212181878
12321 : 3
34543

回文

运算符用法
简易格式
<图案> 回文
pal, |

此运算符仅使用一个操作数,即左侧的操作数。该操作数可以是任何长度的图案。结果扩展为左侧的操作数与它自身的相反数相连。

不过,中心元素不会重复,而结果的最后一个元素则会自动丢弃。在重复回文顺序时,必须进行此运算,它有助于从织物草稿中去除瑕疵。

回文单词反写或正写都一样,例如"madam"。

示例
扩展
1-8|
12345678765432
1223334444555|
122333444455555444433322

改序

运算符用法
简易格式
<图案> 改序 <改序>
perm

左侧的操作数是任何长度的图案。右侧的操作数是一个改序矢量。

左侧的操作数将扩展为右侧操作数长度的整数倍数的长度。

随后,左侧的操作数将以右侧操作数的长度为单位改序。改序图案的组织将用来重新组织图案的每个块中的元素。

例如,改序为 312 表示"第三个元素排在第一位,第一个元素排在第二位,第二个元素排在第三位"。

示例
扩展
123456787654321 改序 312
312645778465132
1-8 perm 1324
13245768

PBOX

运算符用法
简易格式
<图案> pbox <改序>
取消选择

左侧的操作数是任何长度的图案。右侧的操作数是一个改序矢量。如果需要,它的长度将进行调整,以(通过裁剪或重复)扩展到左侧操作数的长度。

随后,改序图案的组织将用来重新组织图案的元素。

Pbox 将保持左侧操作数图案的长度。

示例
扩展
123456787654321 pbox 21436587
214365878563412
1-'8 pbox 4-18-5
4321876543218765

上下

运算符用法
简易格式
<图案> 上下 <图案>
<>

左侧和右侧的操作数都是任何长度的图案。如果某个操作数短于另一个操作数,则该操作数将(通过重复)扩展到另一个操作数的长度。

随后,上下运算将生成交替的升序和降序排列。该运算将始终生成奇数个排列。扩展将包含从左侧操作数的第一个元素到右侧操作数的第一个元素的升序排列,然后是从上述位置到第一个操作数的第二个元素的降序排列,等等。该运算结束时的排列为:从左侧操作数的最后一个元素到右侧操作数的最后一个元素的升序排列。

上下运算符后面可以紧跟(没有间隔字符)任何数量的记号 (')。记号表示,在完成上下运算之前循环运算域。记号数决定了循环的次数。

示例
扩展
1234 上下 5678
12345432345654345676545678
12 <>' 567
123456781234543218765432345678123456543218765432123456781234567

下上

运算符用法
简易格式
<图案> 下上 <图案>
><

左侧和右侧的操作数都是任何长度的图案。如果某个操作数短于另一个操作数,则该操作数将(通过重复)扩展到另一个操作数的长度。

随后,下上运算将生成交替的降序和升序排列。该运算将始终生成奇数个排列。扩展将包含从左侧操作数的第一个元素到右侧操作数的第一个元素的降序排列,然后是从上述位置到第一个操作数的第二个元素的升序排列,等等。该运算结束时的排列为:从左侧操作数的最后一个元素到右侧操作数的最后一个元素的降序排列。

下上运算符后面可以紧跟(没有间隔字符)任何数量的记号 (')。记号表示,在完成上下运算之前循环运算域。记号数决定了循环的次数。

示例
扩展
1234 下上 5678
18765678121876781232187812343218
12 ><' 567
18765432187656781234567812187654321876781234567818765432187

旋转

运算符用法
简易格式
<图案> 旋转 <数字>
rot, #

左侧的操作数是任何长度的图案。右侧的操作数是一个解释为长度的整数(可以是负数)。旋转运算将从图案的开头获取 <数字> 指定的元素集,然后将它们移动到末尾。如果数字是负数,则该运算将从图案的末尾获取元素集,然后将它们移动到开头。

示例
扩展
12345678 旋转 3
45678123
1-4-1 旋转 -3
3211234

反转

运算符用法
简易格式
<图案> 反转
rev, `

此运算符仅使用一个操作数,即左侧的操作数。该操作数可以是任何长度的图案。结果扩展为反写左侧的操作数。

示例
扩展
1-8 反转
87654321
1223334444555`
5554444333221

优先顺序

如果表达式中使用了多个运算符,则系统将按优先顺序来运算它们。也就是说,某些运算会在其他运算之前执行。下面显示了图案语言的优先级别:

 
等于、下至、连接
 
下上、上下
 
重复、扩展、模板、交错、
 
改序、pbox
 
回文

如果两个运算符具有相同的优先顺序,则系统将按照从左到右的顺序进行运算。

示例
解释为
1-4-2
((1 等于 4) 下至 2)
1234[]4321|
((1234 块 4321) 回文)
1-4 块 4-1
((1 等于 4) 块 (4 等于 1))
(1-4|),(4-1|)|
((((1 等于 4) 回文) 连接 ((4 等于 1) 回文)) 回文)

如果优先顺序出错或者不明确,请使用括弧来标明所需的运算顺序。