裏 RjpWiki

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

分数の計算(和)(その2)

2015年04月01日 | ブログラミング

AWK(GAWK) で書いてみた。

このような場合は AWK の方がすっきり書ける。

#!/usr/local/bin/gawk -f
function euclid(m, n,     temp) {
  while ((temp = n % m) != 0) {
    n = m
    m = temp
  }
  return m
}

function prog(s1, s2,     a, b, gcm, denominator, numerator) {
  split(s1, a, "/")
  split(s2, b, "/")
  denominator = a[2] * b[2]
  numerator = a[1] * b[2] + b[1] * a[2]
  gcm = euclid(denominator, numerator)
  denominator = denominator / gcm
  numerator = numerator / gcm
  if (denominator == 1)
    print numerator
  else
    print numerator "/" denominator
}

BEGIN {
  prog("5/6", "1/10") # 14/15
  prog("1/3", "2/3")  # 1
  prog("1/3", "2/7")  # 13/21
  prog("2/8", "3/5")  # 17/20
  prog("3/10", "1/6") # 7/15
  prog("3/4", "5/8")  # 11/8
  prog("2/5", "2/3")  # 16/15
}

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 整数問題 3 題(その2) | トップ | ggplot2 »
最新の画像もっと見る

コメントを投稿

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