介绍
这个站点正在迅速建立庞大的代码片段数据集,所以让我们来做点什么吧!
这是一个数据文件。它包含用于113种语言的9,066个唯一的语言+代码段对,所有这些对均来自本网站。格式以制表符分隔(语言TAB片段),摘要中的所有换行符均替换为<LF>
,所有制表符均替换为4个空格。每种语言至少有5个摘要。
[更新:我对数据文件做了微小的更改,以合并以前错过的一些Python和RegExp版本-上面的链接已更新]
挑战
编写一个带有代码段并输出其编写语言的程序或函数(有关详细信息,请参见下文)。源+您需要的任何数据的总大小必须为300字节或更小,并且在给定其自己的源代码时,程序必须输出正确的语言。最高的准确性(上述数据集上最正确的答案)获胜。
规则
- 源代码,资源和任何必需的编译/运行时标志的总大小不得超过300个字节。
- 您的答案将根据上面的数据集进行测试;系统会根据数据集将“摘要”值之一作为输入,并将其输出与“正确”输出进行比较。将对数据集中的所有条目重复此操作,正确答案的最终数量是您的分数。
- 您可以选择输入编码-我假设使用UTF-8,因此,如果您需要其他编码,请在答案中指定它。
- 您不需要将
<LF>
换行符用于换行符;如果您的条目希望接收换行符作为文字换行符(字符10),请在您的答案中指定它。 - 您的条目必须输出认为输入代码段所用的语言。为避免压缩大量语言字符串,我将允许映射(如果您要为“ Java”输出3,就可以了)。只需记下答案中的映射即可。
- 每种语言只能有1个输出映射(即,如果3表示“ Java”,则也不能有4表示“ Java”)。
- 当给出其自己的源代码时,您的程序必须产生正确的答案(必须输出其编写语言)。
- 您不需要支持数据集中的所有语言,并且可以根据需要支持其他语言(例如,如果您输入的内容不是数据集中的一种语言)。
- 您的程序必须是确定性的(两次提供相同的输入必须产生相同的输出)。
打破领带
- 将通过减少数据集直到赢得一项来决定联系。通过删除最流行语言的所有代码片段(例如,由于稀有语言的准确性而导致的联系中断),将减少数据集。例如,如果A和B在整个数据集中的得分为70%,则所有Python代码段都将被删除。如果A和B现在都获得60%的分数,则将删除CJam。如果A现在得分50%,而B得分55%,则B是赢家。
- 如果达到100%的准确性,则将使用包含相同语言的更多样本的第二个(盲)数据集来确定联系。
例子1
Python脚本:
print("python")
如果提供了自己的源代码,此脚本会成功生成“ python”,因此它是有效的。在数据集上,它的得分为1008/9066 = 11.1%
例子2
JavaScript函数:
function f(s){return /function/.test(s)?1:2}
使用映射1→javascript,2→python。再次,它成功为其自己的源生成了1(“ javascript”),并且在数据集上的得分为1092/9066 = 12.0%
数据来自哪里?
我创建了SEDE查询,以从此站点的[code-golf]挑战中抽取样本。从得到的10,000个答案中,我使用了一个被黑的python脚本来查找每个脚本的代码和语言名称,然后用少于5个示例过滤掉任何语言。数据不是100%干净的(我知道它提取了一些非代码片段),但应该足够好。
受到今年早些时候的挑战的启发:谁这么说?2016年总统选举
还与什么是语言有关?