裏 RjpWiki

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

変進小数の足し算

2016年08月10日 | ブログラミング
締め切りが 8/10 10.00 AM なのでその一分後に掲載されるように予約登録

変進小数の足し算
【概要】

小数の足し算をして下さい。ただしこの小数は、

小数第 n 位 が 11-n 進数

という不思議なルールになっています。例えば、小数第1位は 10進数、小数第9位は2進数です。
このルールを「変進小数」と呼びます。



【入出力】

入力は
8.622+3.177
こんな感じです。
2個の変進小数が「+」で区切られて並んでいます。

 

出力は、
11.811
のように、足し算の結果を変進小数で出力して下さい。


素直にプログラム

conv = function(s) {
    s = unlist(strsplit(s, "\\."))
    t = as.numeric(unlist(strsplit(s[2], "")))
    c(as.numeric(s[1]), c(t, rep(0, 9))[1:9])
}
deconv = function(x) {
    for (i in 10:2) {
        if (x[i] >= 12-i) {
            x[i-1] = x[i-1]+1
            x[i] = x[i]-(12-i)
        }
    }
    as.numeric(paste(x[1], ".", paste(x[2:10], collapse=""), sep=""))
}
x = "8.622+3.177"
options(scipen=100)
a = unlist(strsplit(x, "\\+"))
deconv(conv(a[1])+conv(a[2]))

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村