-
Notifications
You must be signed in to change notification settings - Fork 8
議事録(55)
yowasou edited this page Aug 13, 2023
·
2 revisions
議事録(55)
- なかった。
- 初参加者が多いので全員
- いつもより五割くらい多い
- 参加者:Doorkeeeperを参照 https://hmrb.doorkeeper.jp/events/28551
- 和正さん/10perさん:Doorkeeper非登録
- 詳しくはポジションペーパーを参照 https://github.com/hamamatsu-rb/hamamatsu-rb.github.com/wiki/%E3%83%9D%E3%82%B8%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%9A%E3%83%BC%E3%83%91%E3%83%BC
- しばらく来ていなかった人たちが復活してきている。
- Rubyを思い出したい。
- 初参加もいる。
- いつものもいる。常連も初心者!?
- 小木さんが最近の流れを説明
- 時期によってやってることバラバラ
- 今はCodeKataKataがメイン
- LTと告知がある
- 最後にKPT
- Slackおじさん(misogiさん)にお願いしてSlackに登録して頂く。
- 共通問題チームと、バラバラ問題チームに分かれた(7:7)
- 6:Aは0でない整数とし、は約数の和を表すものとします。
- たとえば、<8>=1+2+4+8=15です。
- 6.1 <16> - <25>を求めなさい。
- 6.2 =24となるAは全部で3個あります
- 7. 7けたの整数2004□□□は2,3,4,5,6,7,8すべての倍数です。 □□□に入る3けたの整数を求めなさい。
- 終わった人はこの続きをやる。
def sum_div(num)
sum = 0
(1..num).each do |i|
sum += i if num % i == 0
end
sum
end
s = sum_div(16) - sum_div(25)
p s
(1..30).each do |b|
p b if sum_div(b) == 24
end
# 問題 6. A は 0 でない整数とし、<A> は A の約数の和を表すものとします。
# たとえば、<8> = 1 + 2 + 4 + 8 = 15 です。
# 約数のリストを求める
def divisors(n)
# 1、n は必ず含まれる
# n/2 < d < n である d で n を割ると必ず 1 より大きく 2 未満になる
# ので、d は約数ではない
[1] + (2..(n / 2)).select { |d| n % d == 0 } + [n]
end
# 約数の和を求める
def sum_of_divisors(n)
divisors(n).reduce(0, &:+)
end
# 6.1 解答
answer1 = sum_of_divisors(16) - sum_of_divisors(25)
# 6.2 解答
answer2 = (12..24).select { |n| sum_of_divisors(n) == 24 }
# 出力
puts("6.1 <16> - <25> = #{answer1}")
puts("6.2 <A> = 24 となる A は #{answer2}")
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)
input_value = gets
num = input_value.to_i
result = 0;
i = 1
while num >= i do
if num % i == 0
result = result + i
end
i = i + 1
end
puts result
def yakusu(n)
n = n.to_i
st = 1
g = 0
lst = []
loop {
if (n % st == 0) then
lst.push(st)
g = g + st
end
st = st + 1
if (st > n) then
break
end
}
return g
end
def sameyakusu(n)
n = n.to_i
ret = ""
i = 1
d = 0
loop {
if (yakusu(i) == 24) then
ret = ret + i.to_s + ","
d = d + 1
end
i = i + 1
if (d > 2) then
break
end
}
return ret
end
puts yakusu(ARGV[0])
puts yakusu(16) - yakusu(25) #0
puts sameyakusu(24) #14,15,23
## ベタベタですが小学生問題 6
def getDivisorsAry( x )
# ary = Array.new()
ary = []
(1..x).each { |i|
if ( x % i == 0 ) then
ary << i
end
}
ary
end
## ex6_1
sumFactors16 = getDivisorsAry(16).inject(0, :+ )
sumFactors25 = getDivisorsAry(25).inject(0, :+ )
ex6_1 = sumFactors16-sumFactors25
puts "Ex6-1 : #{ex6_1}"
## ex6_2
def ex2( arg )
ary = []
(1..arg).each{ | i |
ary << i if ( getDivisorsAry( i ).inject(0, :+ ) == arg )
}
ary
end
ex6_2 = ex2(24)
puts "Ex6-2 : #{ex6_2}"
puts "6.1:"
def divisor?(x, y)
x % y == 0
end
def sum_of_divisors(x)
(1..x).select { |i| divisor?(x, i) }.reduce(0, :+)
end
puts sum_of_divisors(16) - sum_of_divisors(25)
puts
puts "6.2:"
c = 0
i = 1
while(c < 3)
if sum_of_divisors(i) == 24
puts i
c = c + 1
end
i = i + 1
end
# 6. A は0でない整数とし、<A>はAの約数の和を表すものとします。 たとえば、<8>=1+2+4+8=15 です。
# 6.1 <16>-<25>を求めなさい。
# 6.2 <A>=24 となるA は全部で 3個あります。すべて答えなさい。
# 方針:やるだけ
# 約数の和を求める
def sumOfDivisor(n)
sum = 0
for i in 1..Math.sqrt(n)
if n % i == 0
sum += i
if i != Math.sqrt(n)
sum += n / i
end
end
end
return sum
end
# 6.1の答え
p "6.1の答え"
puts sumOfDivisor(16) - sumOfDivisor(25)
# 6.2の答え
p "6.2の答え"
loopCount = 1
ansCount = 0
while ansCount < 3
if sumOfDivisor(loopCount) == 24
p loopCount
ansCount += 1
end
loopCount += 1
end
# 7. 7けたの整数2004□□□は2,3,4,5,6,7,8すべての倍数です。 □□□に入る3けたの整数を求めなさい。
# 方針:2~8の最小公倍数を求めてあげて、それで割り切れたやつが当たり。
require 'rational'
lcm = (2..8).inject(1){|num, i| i.lcm(num)}
ans = (2004999 - 2004999 % lcm).to_s
puts ans[4..7]
a = 5 * 6 * 7 * 8
(1..2000).each do |i|
b = a * i
if 2004000 <= b && 2005000 > b
p b
end
end
#途中であきらめました
def getbaisu(n,na)
head = n.gsub("x","0").to_i
st = 0
ed = fact(n.count("x")) #10のx乗を求めたい
return 0
end
def fact(n)
return 1 if n == 0
n * fact(n - 1)
end
puts getbaisu("2004xxx",[2,3,4,5,6,7,8])
# 7 けたの整数 2004XXX は 2, 3, 4, 5, 6, 7, 8 すべての倍数です。
# XXX に入る 3 けたの整数を求めなさい。
# 2 で割り切れるので 2004XXX は偶数
# 約数について
# * 8 で割り切れる => 4, 2 でも割り切れる
# * 6 で割り切れる => 3 でも割り切れる
# ので、[5, 6, 7, 8] で割り切れるものを選べばよい
nums = (0..999).select { |n| n % 2 == 0 }
answers = nums.select do |n|
p m = 2004000 + n
[5, 6, 7, 8].all? { |d| m % d == 0 }
end
puts("2004XXX が 2, 3, 4, 5, 6, 7, 8 で割り切れる XXX:")
puts(answers)
- 数学の問題6と7。
- reduce・・・和を求める
- select・・・配列から一致しているものだけを抽出
- Cっぽいコードする人とRubyっぽくコードする人で別れる
- 起動に手間取った。javaっぽいセミコロンも入っちゃったぜ
- SlackのAPI試した
#!/usr/bin/env ruby
require "slack"
def change(n)
ans = []
[10000, 5000, 1000, 100, 10, 5, 1].each do |unit|
x = n / unit
n = n % unit
ans << [unit, x]
end
ans
end
Slack.configure do |config|
config.token = 'xxxxxxxxxxxx'
end
client = Slack::RealTime::Client.new
client.on :hello do
puts 'Successfully connected.'
end
client.on :message do |data|
if data =~ /[0-9]+/
a = change(data.to_i)
end
client.message channel: data['debug'], text: "#{a}"
end
#Slack.chat_postMessage(text: '5150!', channel: '#debug')
- 正規表現苦手なお前らへ
- 両替
def change(n)
ans = []
[10000, 5000, 1000, 100, 10, 5, 1].each do |unit|
x = n / unit
n = n % unit
ans << [unit, x]
end
ans
end
loop do
s = gets.chomp
break if s =~ /^e/
a = change(s.to_i)
a.each do |x|
puts("#{x[0]}*#{x[1]}")
end
end
- Rails 1.2→3.2へ上げる内職。茨の道!!Railsは最新へマメに上げておくべき。
- Ruby開発環境作ってた。UbuntuをWindows10にしてしまって…Docker Toolboxで作ってみた。すでにマシンイメージが用意されているので楽。バージョン指定もできる。 https://gist.github.com/euledge/
- Rubyの本を買ってきて勉強。もともと他の言語をやっていたので楽しい感じで進めれた。
htmlfile = "test.html"
textfile = "test.txt"
html = File.read(htmlfile)
File.open(textfile , "w") do |f|
headinfo = true
html.each_line do |line|
if headinfo && /<title>/ !~ line
puts(line)
next
else
puts("false")
headinfo = false
end
break
if /<\/title>/ =~ line
f.write line
end
end
- 顔を見てるだけで面白かった。
- 次回はぜひタブレットを(※記号が打ちにくい
- まさかの3本立て
- 当社比2倍の改善
- 完成度高まってきてる!
- だんだんシンセのノウハウがたまってきた
- 良かったらコード読んで突っ込みください
- CPUでほかのCPUをつくる
- TD4という簡単なCPU
- "CPUの創り方"の本に載っている。
- コードをRubyで書いてみました。
- 命令4ビットデータ4ビット。
- 英語ブログを翻訳して抜き出してみました
- 目玉
- rails-apiというgemが公式に入る。
- websocketを使うactioncabbleが登場
- turbolinks3.0
- だけでなく部分的な書き換えができるように
- 細かいの(資料参照)
- 小木さんが3時間はまってたネタが直る
- 誠に遺憾ながら時間が!・・・
- まとめ
- 4.1よりはおとなしい
- 昔に比べて変更がわかりやすくなった。
- re:Mote 9/5 13~18
- 名古屋か磐田で(わーくぴあ磐田)車じゃないと行きづらい
- 近場の人は参加してね
- 参加者が多かった
- CodeKata2の課題が自由と共通の選択肢があったので、自分のような初心者でも楽しめた
- Code Kata^2 のお題に真剣に取り組めた
- 出席できた
- みんなコード書くことができた
- 電源タップ持って来てくれた人
- 机を近づけてよかった、LTおもしろかった
- slackお兄さんinviteありがとうございます
- 人数多くて良かった。発表の内容も濃くて良かった
- 机で近くした
- slackおじさん
- 新しい方や久しぶりの方やいつもの方がいて良かった
- mackatoさんが来た
- 発表がバラエティに富んでいた
- 人が多かった
- 集中できた
- 人がたくさん
- 机の並び
- LTした
- LT
- 紙と鉛筆を忘れた
- 時間管理
- 参加者やLTが多かったのでしょうがないかもですが、時間の使い方がもったいなかったかと
- 名札のルールがよく分からなかった
- 遅刻した
- そもそも何時間もかけて作ってくれた資料やコードをたった5分ぽっちで説明せよというのがおかしいのだ!
- ネットワークが無い人
- やっぱり同じ課題を共有するほうが会話が盛り上がったかなー、 と @個別課題チーム
- 会話もっと盛り上げたかったけどできなかった >独自お題チーム
- 立花さんの資料もったいない
- 時間が短い
- 新しい方が多いのに名札とステッカー忘れた……
- コード読解力が追いついていない
- ノート忘れた...orz
- 時間ない、名札がなかった
- 時間ギリギリ><
- ネット環境
- CodeKata2とLTは参加者、発表者の数やボリュームに応じてあらかじめスケジュールを調整できるといいかなぁ
- 名札を作って持って行こう
- 遅刻しないで出席する
- AWSカルタというものが以前あって、AWSのサービスをゲーム感覚で覚えられるという。完全にオフラインでできるので結構重宝してました(今はAWS麻雀というものが出てきてます) そういうののRuby版ないかなと。 @jacoyutorius
- 毎回2~3発表あると内容が濃く感じられる気がします。 資料作らなくてはいけない理由はないので、例えば自分のblogとかQiitaとかに投稿した記事を紹介するでも良いと思うのですよ @jacoyutorius
- 今回くらい発表が盛りだくさんだったら、code kata はオマケでいいかも。
- LTは一般的には5分なので司会もそれでスケジューリングしてしまう。それ以上かかる発表をしたい場合はあらかじめ申告する。
- 時間の段取り
- 環境ない人でも楽しめるなにか
- 名札予備持ってくる
- 問題減らしてレビュー時間ふやしたい
- LT&告知のほうが話が飛躍して盛り上がりがちな気がするので、会の冒頭にやってみる?
- LTしてくれたお三方の発表は次回もっとゆっくり聞きたい
- 早めに次回の予約するの忘れてた。次回予約は会の終わりではなく、途中でするようにする
- 週末にやってみる
- 全員が時間を意識する
- LTする
- 自力でコードを書く
- LT続編