Hamamatsu.rb #55

作成日:2015/08/22
最終更新日:2020/07/09

Hamamatsu.rb #55

作成日:2015/08/22
最終更新日:2020/07/09

概要

やったこと

  • 自己紹介
  • CodeKataKata
    • 小学生がひらめきで解く算数の問題を大人げなくコンピュータで解く!
    • または個人でもくもく
  • LT
    • @risgkさんによる シンセサイザー のLT
    • Langurによる エミュレータ のLT
    • @ke_tachibanaさんによる Rails5 のLT
  • KPT

CodeKataKata

算数オリンピックの問題の続きを選択しました。 今回は2問を実施しました。 私は2問目に入ったところで時間切れでした。

今回、筆記用具を忘れたため考えずにコードを書いたのが反省点です。

問題は以下のとおりです。

  1. Aは0でない整数とし、<A>はAの約数の和を表すものとします。 たとえば、<8>=1+2+4+8=15 です。
    • <16>-<25>を求めなさい。
    • <A>=24 となるA は全部で 3個あります。すべて答えなさい。
  2. 7けたの整数2004□□□は2,3,4,5,6,7,8すべての倍数です。 □□□に入る3けたの整数を求めなさい。

1問目

ソース1. math6_langur.rb
class Math6
  def initialize(a)
    @a = a
  end
  def isDivisor(x)
    return FALSE if (@a.modulo(x) != 0)
    return TRUE
  end
  def calc
    result = 0
    @a.times { |n|
      x = n + 1
      if (isDivisor(x))
        result += x
      end
    }
    return result
  end
end

def q1(x, y)
  obj1 = Math6.new(x)
  obj2 = Math6.new(y)
  return obj1.calc - obj2.calc
end

def q2(x, y)
  result = Array.new
  num = 1
  cnt = 0
  printf("Q2.\n")
  while (cnt != y) do
    obj = Math6.new(num)
    if (obj.calc == x)
      printf("\t%d\n", num)
      cnt += 1
    end
    num += 1
  end
end

printf("Q1. <%d> - <%d> = %d\n", 16, 25, q1(16, 25))
q2(24, 3)

LT

ARMのエミュレータが欲しくなって、練習としてTD4のエミュレータを書いてみました。 結構大変でしたが、RubyでのThreadや同期処理の理解が深まりました。

TD4でも心が折れそうだったので、ARMのエミュレータを本当に作るかどうかは判りません...

資料は後日UPします。

KPT

hmrb55 KPT

感想

今回は、多い会でした。

  • 参加人数が多い
  • 初参加の方が多い
  • LTが多い

どれも嬉しい多いです。

@ke_tachibanaさんの発表は、次回続きを聞きたいです。