1. Qiita
  2. 投稿
  3. R

Rでズンドコキヨシ関数を

  • 13
    いいね
  • 0
    コメント

元ネタ

コード

kiyoshi.R
kiyoshi<-function(){
  x <- c()
  repeat{
    x<-c(sample(c("ズン","ドコ"), 1,replace=T),x)
    print(x[1])
    if(length(x)>4&prod(x[1:5] == c("ドコ","ズン","ズン","ズン","ズン"))==1){
      cat("キ・ヨ・シ!(", length(x),"回ズンドコしました)\n",sep = "")
      break
    }

    if(length(x)>999){
      print("キ・ヨ・シ!はできませんでした")
      break
    }
  }
}

結果(画像)

test.JPG

要約

Rではsample関数によって復元抽出を行うことができます。
選ばれた"ズン" あるいは"ドコ" を用意したベクトルの先頭に挿入します。
"キ・ヨ・シ!" への分岐条件は、ベクトルの最初の5つの要素と
"ズン" "ズン" "ズン" "ズン" "ドコ" を逆さまにしたベクトルを比較することで行います。
この比較の結果はベクトルで返されるので、if文にあてはめるためにprod関数でベクトル内の要素を全てかけ合わせます。
TRUE = 1, FALSE = 0なので"ズン" "ズン" "ズン" "ズン" "ドコ" 全てがマッチしたときだけ1になります。
結果はcat関数で、せっかくなのでズンドコした回数もベクトルの長さを取得して出力します。

余談

Rはこういう仕事向いていないんじゃないかなあ

先人

http://qiita.com/y__sama/items/7c451dfd706f9b36729d

Comments Loading...