MeetingC++ 是欧洲最大的 C++ 会议,也是全球第二大 C++ 会议,上周在柏林举行。与之前的会议一样,组织得非常出色,有很多有趣的演讲和很棒的环境。

我们希望参与其中,因此加入了作为银牌赞助商,并且还组织和赞助了一场 C++ 竞赛,在美味的披萨和意面自助餐后于晚上举行。

这项活动似乎非常受欢迎。非常感谢许多参加并参与竞赛的人!

竞赛规则

规则非常简单:猜测 10 个代码片段的输出结果,所有代码都保证可以编译和运行,并打印一行最多 10 个字符的文本。每个问题在代码投影到屏幕上后必须在 3 分钟内解决。每个正确的字符得 1 分,这意味着最高得分可以达到 100 分。

参加者最多可以组成 6 人一队。我们鼓励他们互相交流和认识,而不是只和同事待在一起。每个队伍收到一张纸质答题表,并且不允许使用任何电脑或设备(除了他们的大脑)来完成任务。

我最喜欢的规则是竞赛代码不需要可移植、现代、有意义、最佳实践,甚至不需要在其他机器上运行。我可以说 **在我的机器上能运行就行**。程序员的天堂 :) 如果你打算复制代码,我使用的是装有 Win10 的 MBP,Visual Studio 14u2,构建为 Release 和 64 位,使用 CMake 提供的标准构建“add_executable”命令。

代码和答案

我必须承认,这次竞赛并不简单。我担心其他人会答对所有问题,所以我设计了一些疯狂的练习,有些很简单,但有些却相当复杂。以下是代码片段,来吧,在 3 分钟内解决每一个!

我们希望练习既有趣又娱乐,所以在代码之外还有更多幻灯片!显然,你只有亲自参加才能享受这部分内容,所以如果你想玩得开心,确保不要错过任何即将举行的 MeetingC++ 会议。

有一些技巧,比如将 unsigned int i=4i > -1 进行比较,这是错误的!其他练习则更常规,比如递归可变参数模板,从某种意义上说,唯一的挑战是跟踪模板的求值,没有任何技巧。一些竞赛问题包含了现代 C++ 特性,比如 lambda 表达式,而其他问题则使用了可怕的遗留元编程宏、STL、委托构造、带屏障的线程、移动语义……有争议的做法,比如在移动对象后使用它(不,这不是未定义行为),或者猜测 random_shuffle 的结果,所有这些都为竞赛增添了一些趣味。

获奖者!

我们没想到会有这么多人参加,所以一些志愿者帮忙批改了答题表,非常感谢他们。

我们印象深刻,并且完全被参赛者的专业水平所震惊。75 分的平均分甚至高于预期,所有分数都在 60 分以上。祝贺他们!

我们仍然不敢相信,但获胜者获得了完美的 100 分!!他们是一个只有 2 人的团队,但证明了他们非常有才华:来自 think-cell 的 Rostislav Khlebnikov 和来自 JetBrains ResharperC++ 团队的 Ivan Sorokin。祝贺!

以下是获得荣誉的团队,MeetingC++2016 竞赛名人堂

第一名:(100 分)“SPb”

第二名(96 分):“Operator ++”

第三名(86 分):“reinterpret_cast<cpp>(Java)”

这里缺少一些姓名!请查看您的电子邮件,或为本文贡献 PR。

还要特别感谢“; drop table *”和“Number 1”这两个团队,他们非常接近第三名。

奖品

获胜者获得了一个全新的创新益智玩具:一个定制的魔方,比原始魔方更具挑战性,除了颜色和字母之外,方块还需要正确的方向。

我们也会寄给第二名团队成员,如果您是其中一员,请查看您的电子邮件!

竞赛结束后

竞赛结束后,我们都参加了 MeetingC++ 组织的非常棒的派对,在那里我们喝了饮料,玩得很开心。我们坚信,这些会议中最好的部分是与其他开发者面对面交流,结识新朋友,分享经验,当然,派对也同样重要。我们不会用任何东西来交换它!非常感谢 Jens 组织了如此精彩的会议。

我们认为大多数人都玩得很开心,我们自己也玩得很开心,所以我们肯定会建议明年再举办一次!今年没有参加 MeetingC++?您绝对应该尝试参加明年的会议。希望在那里见到大家 :)