2022-07-04 分类: 网站建设
人的思想是世界上无法研究明白的,有的人喜欢简单,有的人就喜欢复杂,所谓的想太多
每个人的想法都不一样的,世界大同了,那么只需要活一个人便好了,想开些,你提这个问
题本身就是复杂了。
这段时间互联网上火热的流传着一个智力测试题。题目出现的形式有多种,但大多看起来是这个样子:如果是学龄前儿童,5-10分钟能解决这个问题,普通程序员要1个小时,受过更高教育的人…
8809=6
7111=0谜底揭示 …
期实答案很复简单,答案跟每个数字里有多少个圈圈有关。在形状上,8有2个圈,所以记两次。0是一个大圈,记1次。所以2581=2。很有趣,不是吗?这是一种通过隐含的计算方式得出的另一种数值对应关系。
而困扰着我的却是如何能以一种不基于数字形状的方法来找到这种数值对应关系。我如何能编程让计算机来解决这个问题?我认真思考了一下,因为我喜欢自 认为是一个计量经济学家,这道题看起来颇像一个可以通过一个OLS(ordinary least squares)表达式来解决的联立方程式。那么,如何能讲将这个问题和涉及到的数据转化成一个小小的OLS表达式呢?我需要将每行的数字队列转换成一个 描述数字出现频率的表格。这样,对于8809=6来说,我需要重构出来的数据应该类似于这样:
1,0,0,0,0,0,0,0,2,1 = 6
在这种形式的公式中,9个数字分别代表着数字1-9在每串数据中出现的次数。我不知道如何得出这张频次表,于是,按照我的习惯,我把这个问题做了一个简洁的描述,张贴在StackOverflow.com上,如我愿的得到了一个极好的方案。一旦我建好了频次表,问题就变成了一个简单的关于10个独立变量的线性表达式。
## read in the training data ## more lines than it should be because of the https requirement in Github temporaryFile <- tempfile() download.file("https://raw.github.com/gist/2061284/ 44a4dc9b304249e7ab3add86bc245b6be64d2cdd/problem.csv", ## munge the data to create a frequency table freqTable <- as.data.frame( t(apply(series[,1:4], 1, function(X) table(c(X, 0:9))-1)) ) destfile=temporaryFile, method="curl") series <- read.csv(temporaryFile) names(freqTable) freqTable$dep <- series[,5] four + five + six + seven + eight + nine, data=freqTable) ## now a simple OLS regression with no intercept myModel <- lm(dep ~ 0 + zero + one + two + three + round(myModel$coefficients) <- c("zero","one","two","three","four","five","six","seven","eight","nine")
最终的输出结果如下:> round(myModel$coefficients) zero one two three four five six seven eight nine 1 0 0 0 NA 0 1 0 2 1
你可以看到,0,6和9对应的值是1,而8对应的值是2。其它数字对应的都是0。而4得出的是NA,这是因为数字序列中没有出现4。
这个世界上永远有两种人,一种人总希望把问题简单化,一种人则总喜欢把简单的问题复杂化。
分享文章:我们多少问题都复杂化了
文章起源:https://www.cdcxhl.com/news9/174309.html
成都网站建设公司_创新互联,为您提供品牌网站设计、网站设计、微信公众号、企业网站制作、外贸建站、全网营销推广
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
猜你还喜欢下面的内容