R에 익숙해지려면 함수을 많이 써봐야하는데 뭔가 재밌는 주제를 선택하고 싶었고 게임 정답 맞추는 것을 생각하게 되었습니다.
만들기 전 생각을 해봅시다.
1. for 문을 이용해서 1부터 시작해 값을 1씩 증가시키면 되고
2. 증가시킨 숫자들 중 3, 6, 9가 들어가 있는지 확인하고
3. 있다면 '박수'를 치게 만들면 됩니다.
숫자들에서 3, 6, 9가 있는지 확인한다면 제가 주로 쓰는 함수는 strsplit입니다.
strsplit(문자,split="분리하려는 구분자")이므로 strsplit(as.character(숫자),split="")으로 두면 숫자가 문자로 바뀐 뒤 각각 분리 됩니다.
분리되고 나면 list가 되기 때문에 unlist를 해주면 백터가 됩니다.
정리하면
unlist(strsplit(as.character(i),split=""))
정리된 코드를 number_split에 저장하겠습니다.
number_split<-unlist(strsplit(as.character(i),split=""))
이제 number_split에서 3, 6, 9가 있는지 확인을 해야합니다.
저는 number_split가 3인지 6인지 9인지 확인할 것이고 확인한 뒤에는 논리 연산자가 되기 때문에 더하면 3, 6, 9가 있는 갯수가 됩니다.
정리하면
sum(number_split==3 | number_split==6 | number_split==9)
정리된 코드를 have369에 저장하겠습니다.have369<-sum(number_split==3 | number_split==6 | number_split==9)
마지막으로 if문을 이용해 have369가 0이상이면 박수가 출력되게 하고 아니면 그냥 숫자가 출력되도록 하겠습니다.
이제 for 문을 이용해 숫자를 1씩 증가하게 하면 되는데 출력되는 속도가 너무 빠르므로 for 문 안에 시간을 약간 주려고 합니다. Sys.sleep(0.1)을 하면 0.1초의 간격을 준다는 의미입니다. for문 맨 마지막에 넣겠습니다.
최종 코드는 다음과 같습니다.
# 3,6,9 game
number<-1000
for(i in c(1:number)){
number_split<-unlist(strsplit(as.character(i),split=""))
have369<-sum(number_split==3 | number_split==6 | number_split==9)
if(have369>0){
print("박수")
}else{
print(i)
}
Sys.sleep(0.1)
}
0 개의 댓글:
댓글 쓰기