数据分析 算法练习1(R语言循环与函数)
·
这是美团招聘数据分析的两道算法题:一、污水处理问题;二、棋盘颜色翻转。
解决思路是R语言的循环与函数。
一、【污水处理问题】一家污水处理厂通过去掉污水中有害的污物来净化水质,生产出用于灌溉使用的水源。该处理过程每小时可以去掉处理池中剩余污物的12%。
问:1.一天后处理池中将大概处理掉百分之几的污物?2.要多长时间才能把污物的量减少一半?
#1
x<-0
for (i in 1:24) {
x<-x+(1-x)*0.12
}
#一天后可处理95.3%的污物
#2
n<-1
x<-0
while (x<0.5) {
x<-x+(1-x)*0.12
n<-n+1
}
#6个小时候污物的量少于50%,准确的说,污物处理掉了53%
二·、【棋盘颜色翻转问题】 在4*4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。
输入例子:
[[0,0,1,1],[1,0,1,0],[0,1,1,0],[0,0,1,0]]
[[2,2],[3,3],[4,4]]
输出例子:
[[0,1,1,1],[0,0,1,0],[0,1,1,0],[0,0,1,0]]
x<-c(0,0,1,1,1,0,1,0,0,1,1,0,0,0,1,0)
xm<-matrix(x,4,4,byrow = T)
turncolor<-function(t1,t2,xm){
k<- c("l","r","d","u");m<-c(t1,t1,t1-1,t1+1);n<-c(t2-1,t2+1,t2,t2)
for (i in 1:4) {
test<-try(xm[m[i],n[i]])
if("try-error" %in% class(test))
{
print(paste(k[i],"没有,不用换色"))
}else{
print(paste(k[i],"换色"))
xm[m[i],n[i]]<-1-test
}
}
print(xm)
return(list(xm_t=xm))
}
TC1<-turncolor(2,2,xm)
TC2<-turncolor(3,3,TC1$xm_t)
TC3<-turncolor(4,4,TC2$xm_t)
更多推荐
所有评论(0)