启动Wolfram挑战网站

Wolfram挑战

计算思维越多,做得越好。今天我们将推出Wolfram挑战网站为每个人提供了一个基于沃尔夫拉姆语.用它们来学习。用它们保持锋利。用它们来证明你有多伟大。

挑战的形式通常是:“编写一个函数来做x”。但是因为我们使用的是Wolfram语言,它内置了计算智能,所以很容易让x变得非常复杂。

该网站有一系列的挑战。有些对初学者有好处,而其他人则需要付出巨大的努力,即使是对于经验丰富的程序员和计算思想家。通常,每个挑战都至少有一些已知的解决方案,最多是几行Wolfram语言代码。但是这些代码行是什么?

对于特定的挑战,可能有许多不同的方法,导致非常不同的代码类型。有时代码会变小,有时会跑得更快,等等。对于每个挑战,网站维护排行榜这表明谁拥有最小的,最快的,等。解决方案。

如何才能应对网站上的挑战?如果你读过我的Wolfram语言简介,例如,您应该做好充分的准备,有时还可以从主要的Wolfram语言文档获得一些额外的帮助。但即使你是一个初学者,你仍然可以做一些简单的挑战,也许你需要的时候可以看看我的书。(如果你是一个有经验的程序员,一个很好的自我启动方法是看看程序员快速入门

它是如何工作的

网站上有很多不同的挑战。每个挑战都标有主题区域。在首页有许多“轨迹”,你可以用这些轨迹作为相关挑战序列的指南。以下是真实世界数据轨道:

现实数据挑战

点击你想尝试的一个,你会得到一个解释挑战的网页:

海平面以上或以下的反极挑战

现在您可以选择将挑战笔记本下载到桌面,或者直接在Web浏览器中打开它钨云.(可以免费使用Wolfram云,尽管您必须登录,否则系统将无法为您解决的挑战提供支持。)

这是这个特定笔记本的云版本:

挑战云笔记本

您可以在草稿区构建解决方案,试试看。当你准备好了,把你的代码放在上面写着“在这里输入你的代码”的地方。然后按提交。

Submit的作用是将您的解决方案发送到Wolfram云,在那里测试它是否正确。如果不正确,你会得到这样的结果:

错误代码

但如果它是正确的,你会明白的,你将能够进入排行榜,看看你的解决方案与其他人的相比如何。您可以根据需要提交相同的挑战。(顺便说一下,您可以从“个人资料”选项卡中选择排行榜的名称和图标。)

挑战排行榜

挑战的范围

无论是难度水平还是主题,网站上的挑战范围都很广。(并且,顺便说一句,我们计划逐步扩大网站,尤其是通过外部贡献者的材料。)

下面是一个简单挑战的例子,例如,我可以在几秒钟内亲自解决:

蝴蝶弦挑战

这是一个非常复杂的挑战,我花了整整15分钟才解决了问题:

巴贝奇广场挑战赛

有些挑战在某种意义上是“纯算法挑战”,不依赖任何外部数据:

最大连续和挑战

其中一些挑战是“现实世界”,并利用Wolfram知识库

国家链挑战

其中一些挑战是“数学-Y”,利用Wolfram语言的数学能力:

阶乘零挑战

计算方块数挑战

上市前体验

多年来,我们一直计划推出一个类似Wolfram Challenges的网站,但只是现在,在沃尔夫拉姆云的当前状态下,我们已经能够像今天一样设置它,这样任何人都可以打开网页浏览器开始解决挑战。

仍然,我们已经有大约三年的未经宣布的初步版本,现在完成了稳步增长的挑战。徳赢彩票游戏事实上,共有270人发现了初步版本,并生产了不少于11400种的解决方案。有些人已经多次解决了同样的挑战,提出逐渐缩短或加快的解决方案。其他人则面临着不同的挑战。

有趣的是,即使是一个单一的挑战,解决方案也有多多样化。以下是解决三个不同挑战所使用的功能的词汇云:

Wolfram挑战中使用的函数

当涉及到解决方案的长度(这里用代码的字符表示)时,对于特定的挑战,可能会有很大的变化:

Wolfram挑战的解决方案长度

以下是在预发布期间提交的所有解决方案的解决方案长度分布,对于所有挑战:

提交解决方案的解决方案长度

目前还不清楚这是一种什么样的分布(尽管它似乎接近对数正态分布)。但真正好的是,它是如何集中在解决方案上,而这些解决方案的长度不超过一行。(81%的用户甚至可以在280个字符的tweet中使用!)

事实上,我们所看到的可以被看作是对沃尔夫拉姆语言的一种巨大贡献。在任何其他编程语言中,如果能做到这一点,大多数挑战都需要几页代码。但是在Wolfram语言中,即使是复杂的挑战也可以通过推特长度的代码来解决。

为什么会这样?好,基本上,这是因为Wolfram语言是一种不同的语言:它是一种基于知识的语言,其中大量有关计算和其他事物的知识都是直接嵌入到语言中的(这要归功于我们30多年的努力工作)。徳赢彩票游戏

但挑战仍然是“真实”的吗?当然!只是Wolfram语言让人在更高的层次上操作。我们不必担心写出即使是复杂操作如何实现的低级机制,我徳赢彩票游戏们只需专注于如何完成挑战的纯高级计算思维。

罩下

好啊,那么,在建立Wolfram Challenges网站时遇到了哪些挑战?可能最重要的是如何检查特定的解决方案是否正确。毕竟,我们不仅仅要求计算某个结果(比如,42)我们很容易与之相比。我们要求创建一个函数,它可以接受可能无限多的参数,在每种情况下给出正确的结果。

那么,我们如何知道函数是否正确呢?在一些简单的情况下,我们实际上可以看到函数的代码是否可以通过保留意义的方式转换为我们已经知道是正确的代码。但大多数时候,就像在大多数实际的软件质量保证中一样,最好的事情就是尝试测试用例。一些将是决定性的选择,比如说基于检查简单的或拐角的情况。其他的可能是概率产生的。

但最终,如果我们发现函数不正确,我们想给用户一个简单的例子来说明这一点。在实践中,我们通常会首先在一些相当复杂的情况下看到故障,但是系统会尽量简化故障。

好啊,另一个问题是:如何判断函数的某个特定值是否正确?如果值只是一个整数(比如,或者一根绳子(比如,“嗨”那很容易。但是如果它是一个近似的数字(比如,3.141592……?好,然后我们必须开始担心数字精度。徳赢彩票游戏如果它是一个数学表达式(比如,1±1X)?我们应该在表达式上允许什么转换?

还有很多其他情况。如果是网络,如果它与我们所期望的是同构的(即对重新标记节点也是如此)。如果是图形,如果它的视觉效果和我们预期的一样,我们可能会说它是正确的,或者至少离得足够近。如果我们处理的是现实世界的数据,然后我们必须重新计算我们的预期结果,考虑到我们知识库中的数据由于现实世界中的变化而发生了变化。

好吧,假设我们已经得出结论,一个特定的函数是正确的。现在好了,要填写排行榜,我们必须对它做些测量。第一,密码有多长?

我们可以将代码格式化为输入形式,然后计算字符数。这给了我们一个尺度。你也可以申请字节计算只计算函数定义中的字节数。或者我们可以申请叶数,为定义计算表达式树中的叶数。排行榜单独跟踪所有这些“代码大小”度量值。

好啊,那么代码的速度徳赢彩票游戏如何?好,这有点棘手。首先,因为速度不是抽象的,比如“图灵机器上的操作总数”,而是运行计算机的实际速度。所以它已经被标准化为计算机硬件的速度。然后它必须以某种方式丢弃在特定测试运行中看到的特性(比如与缓存相关的特性)。通过实现重复定时.哦,更重要的是,它必须决定要测试哪个函数实例,以及如何平均它们。(它必须确保它不会浪费太多时间来寻找一个极其缓慢的解决方案。)

好,做这些事,一个人必须做出一系列具体的决定。最后,我们所做的就是把所有的事情都打包成一个单一的“速度分数”,我们在排行榜上报告。

排行榜的最后一个指标是“内存效率”。比如“速度得分”,这是从函数的实际测试运行中以稍微复杂的方式推导出来的。但关键是在狭小的范围内,结果应该在相同的解决方案之间重复。(并且,对,当使用新版本的Wolfram语言运行时,速度和内存排行榜可能会发生变化,徳赢中国使用不同的优化。)

幕后故事

我们首先开始测试Wolfram挑战网站沃尔夫拉姆暑期学校在2016年,很快就可以清楚地看到,许多人都发现我们已经开发出的各种挑战相当吸引人。起初,我们不确定要多久,也许是异想天开地去迎接挑战。我们尝试在每个挑战中都有完整的“故事”(比如一些数学竞赛之类的欧拉计划做)。但很快,我们决定将挑战限制在相当短的时间内,尽管有时会给它们起一些异想天开的名字。

我们在2017年Wolfram暑期学校再次测试了我们的挑战,以及在沃尔夫拉姆高中夏令营-我们发现这些挑战足够让人上瘾,以至于有些人系统地尝试解决所有这些问题。

我们最初不确定允许哪种形式的挑战。但过了一段时间,我们做出选择(至少在最初)集中精力“编写一个函数来做X”,而不是,例如,只需“计算x”。我们的基本原因是我们希望对挑战的解决方案更加开放。

如果挑战是“计算X”,通常只有最后一个答案,一旦你拥有了它,你明白了。但是“写一个函数来做X”,总是有一个不同的函数可以更快地编写,更小的,或者只是不同。在实践层面上,有了“计算X”,在网上发布答案更容易“破坏乐趣”。使用“编写函数”,对,对于发布在某个位置的函数,可能有一个版本的代码,但总会有其他版本需要编写,如果你总是提交以前见过的版本,很快就会很明显你必须从某个地方复制它们。

事实证明,实际上,我们对“compute x”格式有相当多的经验。因为在我的书中Wolfram语言简介所有655个练习的基本形式都是“编写代码来计算x”。在这本书的在线版本中,所有这些练习都是自动评分的。

自动分级

现在,如果我们只是做“便宜”的自动评分,我们只需查看代码在运行时是否产生正确的结果。但这实际上并没有检查代码。毕竟,如果答案应该是42,有人可以把42(或者41+1)作为“代码”。

我们实际的自动评分系统要复杂得多。它当然关注代码运行时会出现什么(注意不要盲目地评估退出在一段代码中,考虑随机数、图形或数字精度等因素)。但是系统真正的核心是对代码本身的分析,以及它运行时发生的事情。

因为Wolfram语言是象征性的,“代码”与“数据”是同一类东西。自动分级系统广泛使用这一点,尤其是在应用符号代码转换序列以确定输入的特定代码是否等同于已知代表适当解决方案的代码。(系统也可以处理“完全新颖”的代码结构。)

代码等价是一个难题(事实上,一般来说,不可判定的)问题。一个稍微容易一点的问题(尽管一般来说还不确定)是数学表达式的等价性。我们广泛使用这种等价物的地方是Wolfram问题发生器

当然,我们究竟希望允许什么样的等价性,可能取决于我们正在生成的问题的类型。通常我们要1个+XX+1视为等效。但是(1)X/X可能或可能不希望被视为等同于1+1/X.要把这些事情搞好并不容易(许多在线评分系统对此做得很糟糕)。但是通过使用Wolfram语言中的一些复杂数学和符号转换功能,我们已经在Wolfram问题生成器中成功地实现了这一点。

贡献新的挑战!徳赢中国

Wolfram挑战网站,因为它今天的存在只是一个开始。我们打算让它成长。最好的方法是让它像我们的长跑一样成长沃尔夫拉姆示范项目-是为了让人们为我们带来巨大的新挑战。徳赢中国

在Wolfram Challenges主页的底部,您可以下载Challenges创作笔记本:

挑战创作笔记本

填好这个,按“提交挑战”-然后关闭,这将进入我们的审查。

超越挑战

我并不惊讶Wolfram挑战似乎吸引了那些喜欢解决数学难题的人,纵横填字游戏,脑筋急转弯,数独之类的。我也不惊讶他们吸引了喜欢游戏和编码比赛的人。但就个人而言,无论好坏,我都不适合这类人。事实上,当我们第一次考虑创建Wolfram挑战时,我说“是的,很多人会喜欢的,但我不会成为他们中的一员。

好,我不得不说我错了。徳赢彩票游戏因为事实上我真的很喜欢做这些挑战,我发现我必须避免开始做这些挑战,因为我会一直这样做(而且,对,我是一个终结者,所以有一个风险,我可以一直走,直到我把它们都做完,这将是一个非常重要的时间投资)。

那么这些挑战有什么不同呢?徳赢彩票游戏我认为我的答案是他们感觉更真实。对,他们被编造成挑战。但是,解决这些问题所需要的思考本质上与我最终一直在“真实环境”中进行的思考是一样的。所以当我处理这些挑战时,我不觉得我在“做些娱乐性的事情”;我觉得我在为现实生活磨练自己的技能。

现在我很容易认识到并非每个人的动机结构都是一样的,许多人会喜欢把这些挑战当作真正的娱乐。但我认为,挑战也能帮助培养真正的技能,这很好。当然,如果你看到有人做了很多这样的挑战,这表明他们有一些真正的技能。(并且,对,我们开始用挑战来评估申请人,说,为了我们暑期班

值得一提的是,Wolfram语言还有其他一些不错的“潜在的娱乐性”用法。

一个例子是竞争性的LiveCoding。Wolfram语言是一种独特的语言,在这种语言中,有趣的程序可以以足够快的速度编写,观看起来很有趣。这些年来,我已经做了大量(非竞争性)的LiveCoding亲自畜禽养殖.但是在过去的几年里,我们一直在发展一种新的运动,即竞争性生活编码的概念。徳赢中国

Wolfram技术会议

我们已经在我们的Wolfram技术会议-我们正在努力制定强有力的规则和程序。到目前为止我们所做的,典型的挑战是“计算X”形式,人们需要几秒钟到十分钟的时间来完成这些挑战。我们用了现在的沃尔夫聊天分发挑战并让参赛者提交解决方案的功能。我们使用自动化测试方法和人工“裁判”来评判比赛。

Wolfram语言的另一种娱乐应用是Twitter A程序服务,2014年发布.这里的想法是编写足够短的Wolfram语言程序(当我们启动tweet-a-program时,这意味着只有128个字符),并使它们产生尽可能有趣的输出:

tweet-a-程序输出

在我们的Wolfram技术会议上,我们也进行了一段时间的现场模拟:我们的年度单程比赛.我不得不说,尽管我(大概)很了解Wolfram语言,我总是惊讶于人们只使用一行Wolfram语言代码就可以做到什么。

在我们最近的Wolfram技术会议上,认识到我们在机器学习方面的进步,我们决定也做一个机器学习艺术竞赛“-使最有趣的事情成为可能重新造型“沃尔夫”:

Wolfie提交

未来,我们计划将机器学习挑战作为Wolfram挑战的一部分。事实上,我们希望增加几类挑战。我们已经面临利用Wolfram知识库的挑战,以及它包含的内置数据。但我们也计划增加使用外部数据的挑战Wolfram数据存储库.我们想增加挑战,包括创造像神经网络这样的东西。

这里出现了一个新的问徳赢中国题,它实际上与一大类可能的挑战有关。因为大多数情况下,像神经网络,人们不再期望生成一个明确“得到正确答案”的函数。相反,人们只需要一个在特定任务上尽可能做到最好的功能。

我们可以想象,有许多挑战的例子涉及到寻找“成本最低的解决方案”,或“最适合”。这与典型的机器学习任务类似:找到一个在分类某个测试集时表现最好的函数(比如基于神经网络的函数)。等。

而且,对,Wolfram挑战的基本结构已经建立好,可以处理这样的情况。只是它没有明确地告诉你,你已经为一个特定的挑战找到了一个正确的解决方案,它只会告诉你你的解决方案相对于排行榜上其他人的排名。

Wolfram Challenges网站中的挑战总是有非常明确的最终目标。但是,关于Wolfram语言的一个伟大之处是,使用它以开徳赢彩票游戏放的方式进行探索和创建是多么容易。但作为一种挑战的模拟,人们总能为这一点埋下种子。一个例子是探索在里面Wolfram编程实验室.其他的例子是我们为我们的暑期班.

开放式勘探的正确产出是什么?我认为在很多情况下一个好的答案是计算性论文,写在Wolfram笔记本里,以及“讲故事”,混合了普通文本和Wolfram语言代码。当然,与挑战不同,当一个人在做一些机器要检查和分析的事情时,计算文章从根本上讲是关于与人类交流的,没有正确或错误的“答案”。徳赢彩票游戏

前进的道路

我创建Wolfram语言的首要目标之一是将计算知识和计算思维带给尽可能多的人。WolframChallenges网站的推出是这一漫长旅程中的最新一步。

这是一个与编程和计算思维相结合的好方法。它被设置为总是让你知道你的进展。你解决了那个挑战吗?相对于其他解决了这个挑战的人,你是怎么做的?

我期待着看到有多小和有效率的人能够解决这些挑战。(并且,对,大量的等效解决方案为在程序转换和优化方面进行机器学习提供了大量的原材料。)

谁将是沃尔夫拉姆挑战排行榜的领导者?我认为会有很多不同背景和教育背景的人。有些人会很年轻;有些会变老。其中一些将来自世界上科技含量最高的地区;一些,我希望,将来自技术落后地区。一些人已经是沃尔夫拉姆语言社区的积极贡献者;其他的,我希望,将通过挑战来到Wolfram语言,甚至可能被“发现”为天才程序员和计算思想家这样。

但最重要的是,我希望很多人能从Wolfram的挑战中得到很多乐趣和满足感,并有机会体验到这种兴奋感,因为你可以找到一个特别聪明和强大的解决方案,然后在你的电脑上运行。

评论.显示全部

  1. 提交我的解决方案后,我如何才能看到最佳解决方案?

  2. 这是个好主意。在Project Euler上做过一些问题。在这里你可以学到更多,人们提交他们的代码,一个人可以学习其他人是如何做到的。

    在解决了一些挑战之后,我来到Tomorescode并提出了一些建议。应该有一种方法不同意这些测试。如果验证应该是休闲编码,那么它应该做“快乐案例”。如果你想雇用某人,那么输入验证是一件好事。在这种情况下,代码通过字符串“they're”进行测试,该字符串应该生成包含撇号的莫尔斯码。文本周围有空格不是“快乐案例”编码的一部分。有人可能会说这应该是结果的一部分,或者不是,但是,必须修剪或不修剪输入并不是大脑取笑的一部分。

    尝试在Mathematica中提交结果通常会导致401 HTTP错误代码,即使有正确的证件。

    “评估框”不允许我复制结果,例如做弥撒

    匿名的
    • 我们很高兴你喜欢Wolfram挑战!

      tomorescode测试的问题已经解决。

      我们正在努力解决在Mathematica中提交结果时导致错误代码的问题。

      Wolfram Cloud笔记本目前不支持CopyToClipboard,这就是为什么复制结果时可能会遇到问题。

      感谢您的反馈!

      行政
  3. 感谢您在“引擎盖下”一节中描述检查。
    此检查机制是否可供用户使用(例如,创造自己的挑战)

    猛撞
    • 你好,猛撞!检查解决方案的代码(您所指的部分中描述的除外)对公众不可用。感谢您的关注!

      行政
  4. 我只是喜欢学习

    杰克斯瓦茨
隐藏注释»

?斯vwin中国蒂芬·沃尔夫拉姆,有限责任公司 条款γ RSS