首页 > 知识库 > 正文

Piet是什么语言 Piet历史来源详解

Piet 是一种非常深奥的编程语言,使用颜色编写代码。由David Morgan-Mar,其方案是位图,看起来像抽象艺术设计。编译指导图像周围移动,从一个连续颜色的区域下的一个“指针”。通过一个地区的指针退出时的程序进行。

特点

有20种颜色,指定哪些行为:18“彩色”的色彩,这是由6个步骤色调循环和3级亮度周期有序;和黑白没有下令。当退出“多彩”色,进入一个又一个,执行程序是由色调和亮度变化的步骤数。黑人不能进入;当指针试图进入一个黑色的区域,选择下一个块的规则,而不是改变。如果尝试了所有可能的规则,程序终止。黑色也被视为图像的边界以外的地区。白不执行操作,但允许指针,以“通过”。留给编译器的颜色比其他的20个指定的行为。

变量存储在内存在一个堆栈符号整数。该堆栈上最指定的程序与业务处理,输入/输出和别人的规则,编译的指针移动。

皮特被命名后的荷兰画家蒙德里安。原定的名称, 蒙德里安已被接受。  

介绍

Piet是一个看起来像在用抽象画编程的语言。这个语言被命名以Piet Mondrian,开创了现代抽象艺术领域的人物。我本来想叫这个语言叫Mondrian,但有人告诉我这个名字被一个平凡无聊的脚本语言使用了。喔,我想我们不能全部成为深奥语言作者。
  设计原则
  程序代码表现为抽象艺术的形式
  语言概念
  调色板

#FFC0C0
  light red
#FFFFC0
  light yellow
#C0FFC0
  light green
#C0FFFF
  light cyan
#C0C0FF
  light blue
#FFC0FF
  light magenta
#FF0000
  red
#FFFF00
  yellow
#00FF00
  green
#00FFFF
  cyan
#0000FF
  blue
#FF00FF
  magenta
#C00000
  dark red
#C0C000
  dark yellow
#00C000
  dark green
#00C0C0
  dark cyan
#0000C0
  dark blue
#C000C0
  dark magenta
#FFFFFF white #000000 black

有六种彩色,每种三种渐变形式。加上黑白共20种颜色。

色相渐变:red->yellow->green->cyan->blue->magenta->red
  亮度渐变:light->normal->dark->light
  注意light比dark更dark,反之亦然(这是计算差值方法的需要,如green比yellow dark 1,cyan 比 yellow dark 2 但yellow 比 cyan dark 4)。亮度规则也类似。
  白色黑色不纳入渐变规则。
  也可以使用20这种外的颜色,但这些颜色会被当做这20种颜色中的一种,具体是哪一种依赖具体实现。一般是白,也可能是黑。
  codel
  Piet代码是认可的颜色组成的图形。在语言中,每个单独的像素有其功能,所以编程中常将图形放大以方便的操作和观察每个一个像素。此时出现像素有两个意思,一个是一块很多像素组成的图形表示的原图的一个像素;另一个则是放大图的像素本身(元素一个像素放大图的众多像素之一)。术语codel指代前者,即原图的像素而不是显示的像素(虽然显示的像素有时候就是原图的像素)
  色块
  Piet的简单代码单位是色块。一个色块是一个由任意数量相邻的codel组成的形状,被其他颜色分隔。只是对角连接不算相邻。一个色块可以是任意形状,也可以有洞在里面,这个洞对有洞的色块本身没有任何影响。
  Stack
  Piet使用stack储存所有数据。数据只有整数,虽然这些整数可以被读取或以unicode之类的格式被合适的命令打印出来。
  程序执行
  Piet解释器由图形左上角的codel开始执行。解释器维护一个方向指针(DP),被初始化为向右。DP指针可以指向上下左右。解释器还维护一个codel选择器(CC),初始指向左。CC可以指向左或右。DP和CC指针常常改变程序的流程。
  解释器按照以下规则遍历色块:
  1.解释器按照DP指针所指的方向选择当前所在图形的在此方向最远的边(如对正方形DP指针向右,就是选择到正方向最右的一列codel)
  2.按照CC指针偏移的DP指针所指定的方向,选择到这个边在这个方向的最远的codel。(继承上述例子,若CC指针向左,则选择最右一列codel的最上的codel。因为向右的左是向上)
  3.选择了一个codel,这个codel的DP指针方向的前一个codel应该是另一个色块。将程序转移到这个新的色彩格,这将引发命令的执行等。
  (总之,你可以想象自己站在程序上,先按DP指针走到当前所在色彩格上最远的一排/列codel。然后按CC指针转向,继续往前走到一个特定的codel。再转回DP指针向前踏出一步)
  以上流程不断重复直到程序结束。
  语法成分
  数字
  每个非黑或白的色块的codel总个数代表一个数字。注意非正整数不能被以这样的方式直接表示出来,虽然它们可以被命令构造出来。当解释器遇到一些数字时,并不直接做任何事,尤其注意不会把数字自动压入stack里,压入操作是一个明确的命令。
  黑色色块和边
  图形边缘视为黑色色块。黑色色块限制程序的运行。当程序尝试按照一组DP/CC指针进入一个黑色色块时。动作将停止并将CC指针调换(左->右或右->左)并再次尝试。若一个DP指针的两种CC指针都导致进入黑色色块,则将DP指针顺时针旋转90度再次尝试,包括对此的DP指针的CC指针两种情况。如此这般若8个可能的选择都将进入黑色色块,程序终止。
  白色块
  跳转判定的第三阶段,若跳转进的是一个白色codel,不立即取得当前codel代表的色块像正常流程那样,而是继续向前(即DP的指向)一直移动。若移到一个彩色codel,完成流程。若移到一个白色codel,继续移动。若移到一个黑色codel,返回上一个移动到的白codel,并将这个codel视为一个只有一个codel的色块,重新进行跳转转移的三步直到结束或到达一个色块。
  但这个“视为”对命令的执行无影响,做改变量计算的仍是最开始移动的色块。
  命令
  一个色块跳转发生后,一个命令被执行。跳转前的色块的codel个数可以作为命令的参数。具体哪个命令被执行则由跳转前的块和跳转后的块色相的渐变的变化量和亮度的渐变的变化量两者一同决定。见表


  
Lightness change
Hue change None 1 Darker 2 Darker
None
  
push pop
1 Step add subtract multiply
2 Steps divide mod not
3 Steps greater pointer switch
4 Steps duplicate roll in(number)
5 Steps in(char) out(number) out(char)


  命令的解释见下:
  push:将跳转到的色块的codel值加入stack。
  pop:将stack弹出并丢弃。
  add:将stack顶两个值弹出后将其相加和压回。
  subtract:将stack顶两个值弹出后将其相减差压回。
  multiply:将stack顶两个值弹出后将其相乘积压回。
  divide:将stack顶两个值弹出后将其相除商后压制。
  mod:求余,同上,
  not:弹出stack顶的值,若此值为0,压回1.否则压回0.
  greater:弹出stack顶的两个值,若顶第二个值大于顶第一个值则压回1,否则压回0.
  pointer:弹出stack顶值并将DP顺时针旋转90度值数。若为负值,则逆时针旋转其绝对值数的次数。
  switch:弹出stack顶值并将CC指针转换数值的绝对数值的次数。
  duplicate:弹出stack顶值,复制一个后将两个压回去。
  roll:弹出stack顶两个值(记为x1,x2),在新stack的x1后的位置插入x2.
  in:输入一个数字或字符(数字被当做字符与被当做字符是不一样的)并压入stack中。分为两个模式。
  out:以数字或字符形式(同上)输出从stack顶弹出的值。 

声明:本网内容收集自互联网,旨在传播知识仅供参考,不代表本网赞同其观点,文字及图片版权归原网站所有。

更多精彩内容推荐:

嫁北京人多久户口可以落户,可以享受北京哪些福利待遇?

  按照标准是,一方是京籍,结婚满十年才可以落户北京。 具体哪些途径能取得北京户口?  1.新生儿  目前北京新增户籍最多的情况。父母一方为京籍,就可以为新生儿申报北京户口。  2.高端人才  主要是指被列入“千人计划”的高层次海归、博士后等特殊人才。  3.应届毕业生  应届毕...

为什么说买手动挡的都是聪明人?

买手动挡的都是聪明人,这一说法显然是站不住脚的嘛。买手动挡还是自动挡,看的是个人需求,和是不是聪明人能扯上什么关系?手动挡和自动挡只不过是汽车两种不同的换档方式而已,没有绝对的好坏之分,自动挡就是手动挡的升级版本,开车时不用频繁的换档,让驾驶者更能专注处理路面上的各种状况。在所有...

“三一重工”为什么离开湖南?

是因为中联重科排挤吗?...

孙正义的商业帝国有多大?

孙正义最成功的一笔投资,当然就是阿里巴巴,当年他向阿里巴巴注资2000万美元,最后换来了240亿美金的回报,成为一段佳话,但是除了投资阿里巴巴,孙正义的商业帝国究竟还有哪些呢?下面带大家一起揭开孙正义商业帝国的神秘面纱:孙正义的商业帝国孙正义的祖籍在中国福建莆田(也有很多人说是在...

天津大港区未来发展如何?

经济天津市大港区现隶属于滨海新区,滨海新区是天津市原塘沽区、汉沽区、大港区三个行政区合并而来,核心区以塘沽为主,主要经济围绕塘沽的天津港、新建的经济开发区行以及大港、汉沽的油田、石化、水电厂等大型国企为主。政领导班子合并后,大港区领导多被为管委会一级,话语权有限。大港区的经济主要...

皮蛋对身体有害吗?

很喜欢吃皮蛋,几乎每天都要吃一个,这种食物对身体有害吗?...

我前段时间办了ETC,如果长时间不上高速,ETC还有用吗?

我发现今年ETC的热度非常高,如此看来往后去ETC会越来越普及。不过ETC在使用过程中有一些注意事项也是需要了解的,今天就来说一说关于ETC应该了解的基本知识。1、ETC有效期目前ETC设备有效期基本上是10年,在有效期内只要设备正常、卡里有钱、高速公路不倒闭你就可以一直用,哪怕...

除了西湖,杭州还有哪些地方值得一去?

小马是杭州农村人,在杭州市区工作也有4-5年,所以从一个新杭州人来给大家分享一些关于杭州旅行的攻略。朋友来杭州第一时间都会去西湖,其实对于常驻杭州的人来说,我是非常不建议大家去西湖常规的旅游线路,这里不论是平日还是周末,游客都非常多,严重影响了旅游体验。所以每次我都会跟他们推荐一...

济宁最穷的县是哪里?你怎么看?

大汶上县,没有之一为什么这样说呢!是因为,我们工资低,没有什么企业。外企来投资!挣得都是本地人的钱最贫困的县,物价能和二线城市持平!房价最便宜6600,一个月拿着两千的工资,普通幼儿园1万五。好的两万多,最便宜的幼儿园一万学费高中人家兖州都免费了!我们这里的高中也在一万左右老龄化...

每天坚持喝枸杞水,坚持喝一个月会有什么好处?

枸杞是中药中一味应用广泛的药物,同时也是一种药食同源的植物果实,由于新鲜果实很难保存,因此一般都是在阴凉处晾置后再暴晒至外皮干硬,这样就得到枸杞子。根据中医理论,枸杞子性平,味甘,归肝、肾经,具有滋补肝肾和益精明目的作用,也就是说长期食用枸杞子对于补肾有好处。但是枸杞用于补肾一般...

性在夫妻之间起到多大的作用?

性,是夫妻间的调和剂,但又却是一件奢侈的事!先看下一则报道:有报道称,我国现有近三分之一的夫妻身处无性婚姻中,他们年龄集中在30—50岁之间。这其中,又属城市夫妻性生活频率最低。过半数的人每月夫妻生活少于1次,仅1/4每周有1次以上的夫妻生活"···异性之间相互吸引的本能就是性,...

清远长隆是不是骗局?

在清远长隆最初动工的时候,我听到的消息---包括长隆内部员工---所说的是:在清远长隆完工后,广州番禺长隆的野生动物园部分将取消,其功能将由清远长隆代替,而原长隆动物园地块,将转型为新奇特互动项目为主的旅游项目。这其实是一个非常符合内在逻辑的想法。对于广州和清远的经济发展,还有长...

老婆身材好是什么体验?

第一: 增加自己的优越感,带出去这么好的老婆,在朋友面前也可以好好的牛逼一下,让他们真真的羡慕你一把。第二: 费钱,真的很费钱,既然身材有料就不想浪费啊。所以有新的时装上市,都想为其买来上身,让其更加漂亮和时尚。第三: 偶尔也很生气啊,穿的那么漂亮,带出去自己都害怕。路人那么多的...

你看过最性感的电影是什么?

有最恐怖的,最唯美的,最劲爆的,有最性感的电影吗?...

什么样的天然奇石能让你百看不厌?

谢谢邀请,我是奇石哥,很荣幸回答您的问题。先说结论再分析,我的观点是能上手把玩,质色形绝佳,体量适中的奇石才能百看不厌。首先说体量,也就是奇石的大小,如果做到百看不厌一定要体量适中,大小在10~60公分左右。因为这个体量的石头,在人的最佳观赏角度之内,非常便于观察和欣赏,太大或者...

ITP开头单词编程英文单词英语计算机语言mary_1980fengfengannzhenzhu19200Rr_fantasywruechuck112281
猜你喜欢
热门推荐
今日推荐 更多
猜你喜欢