引入Tweet-a-Program

Wolfram语言一点代码可以走很长的路要走。并使用这个事实让每个人都有一些乐趣,今天我们正在介绍Tweet-a-Program

编写一个微博长度的Wolfram语言程序,并将其发送到@wolframtap..我们的Twitter Bot将在您的计划中运行您的程序Wolfram云并推文回来。

Hello World from twitter -a- program: geography [Text[Style["World"" title="Hello World from Tweet-a-Program: GeoGraphics[Text[Style["Hello!",150]],GeoRange->"World"]" width="505" height="425" class="alignnone size-full wp-image-9027">

有很多可以用Wolfram语言程序进行很多适合推文。就像这是一个78个字符的程序,它产生由球形制成的颜色立方体:


Graphics3D[表[{RGBColor [{i, j, k} / 5],球体[{i, j, k}, 1/2]},{我5},{j, 5}, {k, 5}]]

制作有趣的图案很容易:

图形(分割[NestList[规模(旋转[#,1。]。9)&、矩形[],40),{黑、白}]]

这是一个44个字符的程序,似乎表达了一个可执行的诗:

Graphics3D@Point@Tuples@Table [[20], {3}]

甚至更短,这是一点点“分形黑客”,只有36个字符:


NestList [Subsuperscript #, # # &, o, 6]

加上一些数学运算,就很容易得到各种复杂的结构和模式:


ContourPlot3D[因为[{x, y, z} /规范({x, y, z}) ^ 2] = = 0, {x, -0.5, 0}, {y, 0, 0.5}, {z, -0.5, 0}]

ReliefPlot [Arg(傅里叶(表[1 / LCM (i, j),{我512},{j, 512}]]]]

你不需要拍照片。例如,这里是π的前1000位数字,大小取决于它们的大小(注意,这里是9 !)

行(风格[#,5 # + 1]& / @First [RealDigits[π,1000]]]

Wolfram语言不仅知道如何计算π,还知道如何计算无数个π其他算法;它也有大量的内置的知识关于现实世界。所以在语言中,你可以谈论电影国家化学物质管他呢。这是一个78个字符的计划,它根据国家/地区划分欧洲旗帜的拼贴画:

ImageCollage [CountryData[“欧洲”、“人口”)——> CountryData[“欧洲”,“国旗”]]CountryData["Europe","Flag"]]" width="505" height="411" class="alignnone size-full wp-image-8996">

如果我们用一些,我们可以把它变得更短自由的自然语言在程序中。在典型的Wolfram笔记本界面中,您可以使用CTRL + =,但是在twitter -a- program中,你可以使用=[…]:

ImageCollage[=[欧洲人群]- > =[欧洲旗帜]]
ImageCollage[=[欧洲人群]- > =[欧洲旗帜]]

Wolfram语言知道很多地理位置.下面是一个程序,它以埃菲尔铁塔为中心,制作一个“10的乘方”磁盘序列:

表[Geographics [Geodisk [= [埃菲尔铁塔],数量[10 ^(n + 1),“米”]],地质扩张 - >“bonne”],{n,6}]"Bonne"],{n,6}]" width="505" height="98" class="alignnone size-full wp-image-9021">
表[Geographics [Geodisk [= [埃菲尔铁塔],数量[10 ^(n + 1),“米”]],地质扩张 - >“bonne”],{n,6}]"Bonne"],{n,6}]" width="505" height="582" class="alignnone size-full wp-image-8998">

有很多,多种现实世界知识内置于Wolfram语言,包括一些漂亮的模糊。这是它在大西洋中知道的所有沉船的地图:

GeoListPlot [GeoEntities[=(大西洋),“海难”]]
GeoListPlot [GeoEntities[=(大西洋),“海难”]]

Wolfram语言也处理图像。这是一个获取图像的程序行星,然后随机争抢他们的颜色,给他们一个更加异落的外观:

ColorCombine [RandomSample [ColorSeparate [#]]] & / @EntityValue(=(行星),“图像”)
ColorCombine [RandomSample [ColorSeparate [#]]] & / @EntityValue(=(行星),“图像”)

这是我的照片,反复检测边缘:

NestList [EdgeDetect =新利app怎么样 (Stephen Wolfram图像)5)
NestList [EdgeDetect =新利app怎么样 (Stephen Wolfram图像)5)

或者,如果你想了解更多的“流行文化”(并准备好进行图像分析等),这里有一组随机的电影海报:

网格[分区[deletemissing [EntityValue [RandalSample [Moviedata [],50],“图像”],6]]

Wolfram语言做得很好语言和文本了。比如,这个程序可以生成一个“信息图”,显示英语和西班牙语单词首字母的相对频率:

行[[#,# 2/70]&@@@Tally风格(包含[StringTake [DictionaryLookup[{#,所有}],1]]]]& / @{“英语”,“西班牙”}

在这里 - 仅在推文中拟合 - 是一个计算a的程序平滑估计“爱丽丝”和“女王”的频率通过文本《爱丽丝梦游仙境》

smoothhistogrographAxis]" width="505" height="360" class="alignnone size-full wp-image-9004">

网络也是推特项目的好素材。比如这是一个生成一系列网络的程序:

表(图(表(i - >国防部(i ^ 2 n),{我n}]], {n, 105110}]

这里——就在推文长度限制之下——是一个生成随机多面体云的程序:

Graphics3D[表[{RandomColor[],翻译[PolyhedronData[所击垮PolyhedronData [[]]] [[1]], RandomReal [20 3]]}, {100}]]

Wolfram语言中最短的“有趣程序”是什么?

在某些语言中,它可能是输出自己代码的“Quine”-A程序。但在Wolfram语言中,Quines是完全微不足道的。由于一切都是象征性的,所以要夸张是一个字符:

x

使用Wolfram语言中的内置知识,您可以制作一些具有有趣输出的非常短的程序。比如,这是一个15个字符的程序,它从内置的关于

KnotData [{8,4}]

一些简短的程序非常容易理解:

网格(数组[次,{12日12}]]

简短的“神秘”计划很有趣。这是做什么的?

NestList (# ^ # & x 5)

这一个

固定点列表[#/。{s [x _] [y _] [z _]  - > x [z] [y [z]],k [x _] [y _]  - > x}&,s [s [s] [S] [S] [S] [k],10] //列

或者更多的挑战性地这一个:

style [\ [incoundcircle],5#]&/ @(如果[#1> 2,2#0 [#1-#0 [#1-2]],1]&/ @范围[50])

事实上,我已经花了多年的时间研究短节目和它们的作用,并建立了一个完整的计算宇宙的科学在我的大书中有描述一种新的科学.这一切都在三十年前开始 - 与a计算机实验我现在只需要发一条推文就可以做到:

GraphicsGrid(分区(表[ArrayPlot [CellularAutomaton [n,{0},{1},{40,所有}]],{n, 0255}), 16]]

我的历史最喜欢的发现tweetable太:

Arrayplot [CellularAutomaton [30,{{{1},0},100]]

如果您出去在计算宇宙中搜索,那么很容易找到各种各样的惊人的东西:

ArrayPlot [CellularAutomaton[{1635年,{3 1}},{0},{1},500],ColorFunction - >(色相(# / 3)&)]

一个终极问题就是在计算宇宙的某个地方是否存在一个代表我们整个物理宇宙的程序。这个程序是否足够短,可以在Wolfram语言中发布tweet ?

但不管怎样,我们已经知道Wolfram语言让我们可以编写关于令人难以置信的事物的惊人的推特程序。Wolfram用了超过25年的时间来建造这个知识和自动化的巨塔。但正是这种丰富性使得在推特的空间里表达如此多的内容成为可能。

在过去,只有普通的人类语言丰富到可以用于有意义的推特。但现在令人兴奋的是,Wolfram语言似乎已经通过了一种通用表达能力的门槛,这也让它成为了有意义的twitter。因为就像普通的人类语言一样,它可以谈论各种各样的事情,代表各种各样的想法。但它也有其他的东西:不像普通的人类语言,它总是有一个精确定义的意义,你写的东西不仅是可读的,而且是可运行的。

普通人语言的推文是(大概)旨在对谁读它们的思想产生一些影响。但效果可能不同于不同的思想,并且通常很难完全清楚地知道它是什么。但是Wolfram语言中的推文具有明确的效果 - 您在运行时看到的效果。

将Wolfram语言与普通的人类语言进行比较是有趣的。像英语一样的普通语言,拥有几十万种合理普通的“内置”的话,不包括正确的名称等。Wolfram语言有关于5000内置名为对象,不包括由专有名称指定的实体等结构。

还有一件事对Wolfram语言很重要 - 它与普通人语言共享 - 这不仅是人类的可写,还可以被他们读。有词汇获得,并且有一些需要学习的原则但这并不需要很长时间,作为人类,一个人可以开始理解典型的Wolfram语言程序。

有时,以普通的人类语言至少提供Wolfram语言程序的粗略翻译(或“解释”)相当容易。但是,Wolfram语言计划非常常见,以表达最难以沟通的东西 - 至少在所有简洁的普通人语言中沟通。不可避免地这意味着有些东西很容易在Wolfram语言中思考,而且很难以普通的人类语言思考。

就像普通的语言一样,Wolfram语言也有语言艺术。还有阅读和理解。还有写作和作文。总是有很多种表达方式,但现在有了精确的正确性概念,以及各种各样的衡量标准,比如执行速度。

和普通的人类语言一样,也有优雅的问题。人们可以看出这两个意义和演示。人们可以想到蒸馏东西的本质,以创造一种“代码诗”。

当我第一次想到twitter -a- program时,它看起来就像一个灵巧的黑客。但我意识到,它实际上是一种新的表达方式的窗口,也是一种人类和计算机可以共享的交流形式。

当然,它也打算很有趣。当然对我来说,在创造一个节目的一个节目的微小,优雅的宝石方面有很好的满足感。

现在我很高兴看到每个人都会做的事情。将创建哪些类型的东西?有什么流行的“代码明信片”会有什么?谁将被鼓励到编码?什么谜题将被提出并解决?将如何定义和赢得哪些比赛?什么伟大的代码艺术家和代码诗人会出现?

现在我们有了可调调节的节目,让我们找到可能的事情......

为…开发和测试程序Tweet-a-Program,您可以自由登录Wolfram编程云,或使用任何其他Wolfram语言系统,在桌面或云中。查看一些细节在这里


要评论,请访问此帖子的副本Wolfram博客»

Baidu