我明天参加一个大型的编程竞赛,在那里我使用R.
时间是主要因素(7个编码问题仅2小时).问题与数学有关.
我定义一个函数时,我想写"f"而不是"function".这可以完成,我有代码这样做,但我失去了它,无法找到它.
我在哪里找到sin()函数用于度输入,而不是弧度?
(可选)是否有任何特定于算法的任务视图或库.
编程竞赛的任何提示?
我为比赛准备了以下备忘单:http: //pastebin.com/h5xDLhvg
========编辑:==========
所以我终于有时间写下我的经验教训了.
编程比赛非常有趣,但遗憾的是我得分不是很高.我排在前50%,但我的目标是进入前25%.
主要问题是编程时间很短,总共只有2个小时.但我必须阅读问题描述,而且我还需要一些时间将结果粘贴到网络表单等等,所以它更像是90分钟的编程.
希望12月的下一场比赛将延长时间,比如3-4个小时.组织者说也许会是这样的.
此外,比赛没有互联网访问,我的移动接待并没有真正起作用.
对我来说,主要的教训是你必须使用你日常使用的语言才能获得真正的机会.特别是,如果只有大约90分钟的时间来编程.由于我在日常工作中使用的是haskell而不是R,我认为R不是最好的选择.在比赛期间,我混淆了haskell和R函数定义,并且我编写了太多小错误来编程足够快.
比赛的好处在于,大约80名参赛者共获得了大约2万美元的奖金.因此,前25%的参与者每人获得500至1500美元.此外,我认为前15%的人能够立即获得一家赞助商IT公司的工作.
所以这是一个双赢的局面.这很有趣,而且你可以获得奖金.此外,IT公司非常高兴,因为他们可以访问顶级程序员.
我利用这个机会与IT决策者交流.其中一个来自一家大银行.我大胆地建议他们考虑转换到Scala进行开发(来自Java的转换).还要考虑使用R和Haskell.很有趣,他们甚至说他们已经看过Scala了!
值得注意的是,我最好的朋友之一在比赛中表现非常出色.他只有19岁,但他在前20%中排名第一,获得了500美元的奖金.他打败了我和我的6所大学,他们都拥有可敬的计算机科学学位.我的朋友程序更像是黑客风格,但他的速度非常快.
使用前10名的人:1)Java 2)C#和3)C++(前10名中没有其他编程语言!).我认为唯一合理得分的编程语言是Ruby.
对于下一次比赛,选择的编程语言可能是haskell.出于一个原因,为haskell找到2个队友比为R编程更容易.最多可以有3人组成一个团队.
我的理想情况是一个非常轻量级的框架,我可以同时使用多种编程语言进行比赛.这样,主代码可以用haskell编写(所有队友都可以编程).一些特定的函数可以用R,Mathematica,甚至其他编程语言(如python/sage)编程.
这听起来有点矫枉过正.但我认为这将是非常有用的.就像一个函数,它有一个矩阵作为参数并返回一个矩阵.然后这个框架工作从R代码自动生成RESTful服务,所以我可以从任何编程语言调用R函数.矩阵只是作为JSON数据(或其他一些序列化)传递.好的,但这不是主题......
最后一些经验教训作为子弹列表:
非常感谢'Iterator'的帮助!
Ite*_*tor 23
我将回答一个相关但不同的问题.没有冒犯,但你的原始建议对于编程竞赛来说似乎并不明智.在这种情况下花费的大部分时间是设计答案和调试(或者更好,避免调试的需要).
相反,我将回答这个问题:"R中哪些关键资源对快速原型设计有用,重点是能够快速查找资源,能够快速调试,以及能够快速调查数据吗?如果我需要使用数值优化方法和代数系统,我应该调查什么?"
以下是我的答案:
example(),确定在哪里获得小插曲和教程(来自CRAN的软件包页面),并简要介绍一下demo().sos库和master findFn.Rprof().先把它旋转一下.compiler如果您的代码涉及很多迭代,您也可以从使用该包中受益.简而言之:您不想在电脑上等待. 您也可以查看foreach和/ doSMP或doMC是否可以将作业分配到不同的核心.要聚合结果,熟悉plyr和类似的方法ldply,以及标准*apply函数,如lapply和apply; 另一个值得了解的好事rapply.(如果你有很多东西要处理,需要一些时间,请查看函数mclapply的.parallel参数或参数plyr.)debug()和browser().hash包(类似于Perl和Python哈希表)并学习使用digest太长而无法使用的键hash(请参阅此问题以获取参考)plot或ggplot2与沿hist,boxplot以及其他一些人.如果您还不知道ggplot2,那么推迟,但您应该熟悉它.如果你碰巧使用了大量数据,那么一定要知道hexbin.如果你将不得不与数据交互,然后去了解iplots和有趣的工具出现,比如iplot,ihist和平行坐标图(ipcp).plyr转换和操作其中一些对象.)data.table()- 它对于您可能对数据框架和矩阵执行的许多操作非常有效.RSQLite和sqldf,虽然这些可能不相关的数学竞赛.对于(1),你可以做类似的事情
f <- function(..., body)
{
dots <- substitute(...)
body <- substitute(body)
f <- function()
formals(f) <- dots
body(f) <- body
environment(f) <- parent.env(environment())
f
}
Run Code Online (Sandbox Code Playgroud)
这让你写,例如,g <- f(x, y, body=x+y)但我不知道你能走多远.