Skip to content
yowasou edited this page Aug 13, 2023 · 3 revisions

議事録(53)

KPT振り返り

  • Tはだいたい実践できていました。
  • 回線はもう毎回でてるね

自己紹介

CodeKataKata

  • 数あてゲーム(High and Low)
  • みんなのコードは以下
  • 最初にあげた@yowasouのコード
puts "start!"
puts "input 1-10 number or give up"
kotae = rand(10) + 1
loop do
  a = gets.strip
  ia = a.to_i
  if ia > kotae then
    puts "High"
  elsif ia < kotae then
    puts "Low"
  else
    puts "OK!"
    break
  end
end
  • 乱数はTime.now.usecを使うのもアリだと説明

  • while(1)よりloopのほうがrubyっぽい

  • p ではなく putsを使用。pはデバッグ用途

  • puts "\n" 改行できる

  • chomp->strip 両端の改行、空白を消せる。

  • rand(1..10) 範囲で乱数を取得

  • rspecは標準入出力をテストできるらしい。

  • 以下Slackから拾ってきたもの

def game
    r = rand(10) + 1
    while gets != nil
        x = $_.chop.to_i
        if x < r
            puts "low"
        elsif x > r
            puts "high"
        else
            puts "OK"
            break
        end
    end
end
game
  • ゲーム繰り返し版
def game
    r = rand(10) + 1
    while gets != nil
        x = $_.chop.to_i
        if x < r
            puts "low"
        elsif x > r
            puts "high"
        else
            puts "OK"
            break
        end
    end
end

while true
    game
    puts "Retry? (type 'e' to end)"
    s = gets.chop
    break if s =~ /^e/
end
  • キーワードを変えるだけでRubyっぽく
ef game
    r = rand(10) + 1
    while gets != nil
        x = $_.chop.to_i
        if x < r
            puts "low"
        elsif x > r
            puts "high"
        else
            puts "OK"
            break
        end
    end
end

loop do
    game
    puts "Retry? (type 'e' to end)"
    s = gets.chop
    break if s =~ /^e/
end
  • rand()使用版
class HighLow
  $result = 0

  def initialize()
    self.init
  end

  def init
    $result = rand(10) + 1
  end

  def judge(n)
    if (n == "giveup")
      self.init
      ret = "Give Up"
    elsif (n == "exit")
      ret = "Exit"
    elsif (n.to_i < $result && n.to_i > 0)
      ret = "Low"
    elsif (n.to_i > $result && n.to_i <= 10)
      ret = "High"
    elsif (n.to_i == $result)
      self.init
      ret = "Ok"
    else
      ret = "Error"
    end

    print ret + "\n"
    return ret
  end
end
game = HighLow.new
while str = STDIN.gets.strip
  break if (game.judge(str) == "Exit")
end
  • 普段使い道のない <=> を使いたかった
answer = (1..10).to_a.sample
message = {
  1 => 'your answer is low',
  -1 => 'your answer is high',
  0 => 'good'
}
 
loop do
  compare = answer <=> gets.to_i
  puts message[compare]
  break if compare == 0
end
  • injectを使ってワンライナーっぽく
(1..10).inject(rand(10)+1) {|r, x| x = gets.strip.to_i; if (x == r) then puts "OK"; break; elsif x < r then puts "Low"; else puts "Hight"; end; r }
  • injectからbreakできる(exitでもいい)

  • 最後にWeb化した人登場(Sinatra)セッションに答えを入れてます

  • 終了後にもslackへ投稿
puts "二分探索(ハイアンドロー)"
ans = rand(10)+1;
loop do
  puts "1~10までの数字を入力してください。"
  input = gets.chomp!.to_i
  
  if input < 1 || 10 < input
    redo
  end
  
  if ans < input 
    puts "Low"
  elsif input < ans
    puts "High"
  else
    puts "OK!"
    break
  end
end
  • 問題を解く側を作った人も現る
puts "二分探索(ハイアンドロー)"
ans = rand(1000000000)+1;
low = 1
high = 1000000000
count = 0
while low < high
  mid = ( high + low ) / 2
  puts "検索範囲:#{low}#{high}"
  puts "#{mid}かな?"
  #puts "1~1000000000までの数字を入力してください。(1~10億)"

  if ans < mid
    puts "Low"
    high = mid
  elsif mid < ans
    puts "High"
    low = mid + 1
  else
    puts "OK!"
    count += 1
    break
  end
  count += 1
end
puts "答え:#{ans}"
puts  "探索回数:#{count}"
loop do
  # srand(0)
  x = rand(1..10)
  puts "what is x? (1-10)"
  loop do
    y = gets.to_i
    case
    when x > y
      puts "miss! x > #{y}"
    when x < y
      puts "miss! x < #{y}"
    else
      puts "hit! x == #{y}"
      puts
      break
    end
  end
end
  • 次回はハイレベルなこともできるネタを用意するといいかも

LT

  • @jacoyutoriusさんの子LT。スタイリッシュなWebサイトを作ろうという話
  • Jekyll Themesで探すとナイステンプレがたくさん出てくる
  • Hamamatsu.rbもかっこよくしました
  • テンプレで印象がだいぶよくなる

KPT

雑談

  • Project Euler すげえ難しい トップの人は人間卒業済みらしい
  • メタプロRuby2がもうすぐ。ボブがいない!?
  • 今週土曜日:東海道らぐ 鴨江アートセンター206 13:00~
  • https://tokaidolug.doorkeeper.jp/events/25237
  • Linuxユーザーコミニティ(あんまり怖くない)カーネル読んでない人も大丈夫
  • コーディング規約 空白改行許さんとこもある
  • JAWS-UG浜松 Reboot#1 @yowasouがAWS Summit Tokyo2015レポ
  • https://jawsug-hamamatsu.doorkeeper.jp/events/26378
Clone this wiki locally