裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

CodeIQ 7 を数える(2)

2014年10月28日 | ブログラミング

CodeIQ 7 を数える」を任意の数字の個数を数えることができるように,再帰関数として定義した。

count2 = function(s, n) {
  if (nchar(s) == 1) {
    return((as.integer(s) >= n)+0)
  } else {
    left = as.integer(substring(s, 1, 1))
    s = substring(s, 2, nchar(s))
    count = left*nchar(s)*10^(nchar(s)-1) - (n == 0)*10^(nchar(s))
    if (left == n) {
      count = count + as.integer(s)+1
    } else if (left > n) {
      count = count + 10^nchar(s)
    }
    return(count + Recall(s, n))
  }
}

count = function(s, n) {
  sum(unlist(strsplit(as.character(0:as.integer(s)), "")) == n)
}

> count2("649", 1)
[1] 235
> count("649", 1)
[1] 235

> count2("3649", 0)
[1] 1025
> count("3649", 0)
[1] 1025

これをベースにして他の問題を解こう。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 円周上に並んでいる個体を 1 ... | トップ | 整数 a から 整数 b までに数... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事