仍然解析的最丑陋的R代码行是什么?


19

目标是产生一行R代码,该代码可以:

  1. 尽可能少地做
  2. 尽可能多的字符(最多100个字符)
  3. 并且尽可能丑陋(其中“丑陋”可以表示低效的计算策略,诸如终止号的多余字符等)。

做你最坏的,绅士!

获胜的客观标准

胜出的答案将根据以下得分标准进行判断(得分最高的答案将获胜):

  • 生成从0到10的序列(100分)
  • 尽可能多的字符(N)
    • 如果N = 100,则为0分
    • 如果N <100,则获得N-100分(例如,每100个字符以下的人损失1分)
    • 如果N> 100,则获得2(100-N)分(即,每超过100个字符,损失2分)
  • 使用从许多负面例子ř地狱尽可能
    • 每个引用的示例6分
    • 每个示例仅计数一次。之所以如此,是因为“一个被囚禁在[火中的坟墓中的异教徒””只能被囚禁一次。因此,您的代码行中的两个全局分配只能使您获得6分。

没有客观的获胜标准。请参阅常见问题解答。
dmckee,2011年

4
您@dmckee的常见问题解答:)标准很客观
Tomas

我试图使标准更加明确。如果条件3仍然不够客观,我可以消除它,尽管我很喜欢它。
阿里·弗里德曼

我完全不了解新的评分系统。目标2越长越好(最多100个字符),对于接近100的点,您给出的点数会减少(并为长度超过100 ??!的程序指定点数);目标3尽可能丑陋,而您为丑陋的程序提供了更多分数。那么分数应该是好是坏?!
彼得·泰勒

@PeterTaylor编辑指出,目标2的两个公式都产生负值。得分很好:“得分最高的答案胜出”。
Ari B. Friedman

Answers:


25

72 96个字符。

`c`<-function(...){list(...)[[-1]];}->>`c`;`[`=0;`]`=10;c(c,c)(c,c)(c,invisible)(`[`[]:`]`[])[];

丑陋:

  • 重用标准函数名称
  • 使用符号作为变量名
  • 全局分配
  • 正确的分配
  • 功能的自定义
  • 不必要的尾随分号
  • 不必要的下标数字
  • 不必要的变量名引用
  • 使工作空间处于几乎肯定会中断任何后续代码运行的状态

生成序列0-10(这要归功于Andrie的想法)。

输出:

 [1]  0  1  2  3  4  5  6  7  8  9 10

4
那确实是痴呆。这是我第一次用这个词来称赞。另一方面,对于某人而言,消除混淆并从仔细的批评中吸取教训是一项出色的工作。辛苦了
Iterator

辉煌。在我的头顶上,地狱中有丑陋的数字3、4、5、8、9。因此,按照评分标准,这是96 + 6 * 5 = 126分。
阿里·弗里德曼

出色的解决方案。添加了另外一个丑陋+ 100个字符。替换所有的“用单引号有嵌入的问题。"<-"("c",function(...){list(...)[[-1]];}->>"c");"["=0;"]"=10;c(c,c)(c,c)(c,invisible)("["[]:"]"[])[]
VLO

7

生成一个从0到10的序列。

100个字符

{.=0;for(`~1` in c(1,2,3,4,5,6,7,8,9,10)){.=c(., `~1`,recursive=F)};print(unname(.[drop=T]));rm(.)}
 [1]  0  1  2  3  4  5  6  7  8  9 10

5

100个字符: 生成一个从1到10的序列。

请注意,数字2-10不在代码中...-奖励积分?:-)

另请注意,它lapply用于最大程度地提高性能:)

unlist(lapply(LETTERS[-(11:26)],function(x) as.integer(charToRaw(x))-as.integer(charToRaw('A'))+1L))
#[1]  1  2  3  4  5  6  7  8  9 10 

2

100个字符

assign("a",1:10);b<<-paste(c(a),collapse=";");unlist(lapply(strsplit(b,";")[[1]],function(c)c[[1]]))

不知道lapplyon strsplit是否是一个负面示例,但可以肯定。

以字符形式返回:

 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

1
I(cumsum(Reduce("sum", replicate(paste0(as.integer(T),as.integer(T)), T), accumulate=1-F) - T >0))

应该少于100个字符,并以某种方式产生0:10


1
我通过算了98个nchar空格。虽然在我的系统replicate上不能将字符向量作为长度参数。
阿里·弗里德曼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.