議事録(57) - hamamatsu-rb/hamamatsu-rb.github.com GitHub Wiki

議事録(57)

KPTふりかえる

  • Itamae ... 他のネタ持ってきた
  • 他の人のコード見よう
  • もくもく?
  • チームプレイ促す
  • Ruby無関係な話
  • チートシート
  • 参加のしおりをつくりました
  • みんな遅れてるので15分待ち
  • あなたの知らない超絶技巧プログラミングを紹介

CodeKataKata

  • 問題決定「最長の回文を出力してください」
  • https://paiza.jp/poh/joshibato/matsue-ruby
  • むずかしい > <
  • 総当たりでやるとタイムアウト
  • その場でオールクリアできた人は居なかった
#テスト3まで通貨で諦め
n = gets
words = Array.new(n.to_i)
i = 0
while line = gets
  words[i] = line.chomp
  i = i + 1
end

num = n.to_i
while num > 0
  words.permutation(num){|ws|
    a = ""
    ws.each{|w| a = a + w}
    if (a == a.reverse) then
      puts a
      exit
    end
   }
  num = num - 1
end
# # 自分の得意な言語で
# # Let's チャレンジ!!
# input_lines = gets
# input_list = []
# input_lines.to_i.times do
#   input_list << gets.chomp
# end
# input_list.sort!

require "pp"

# input_list = %w(fdk jnv vnj kdf qaq bhh)

inputs = {
	input_list: %w(sk nw jx ob oo xj uh rn wn hu nr),
	answer: "hujxnrnwoownrnxjuh"
}

input_list = inputs[:input_list]
input_list.sort!


list = []
center = ""
input_list.each do |v|
	if center == "" && v == v.reverse
		center = v
		input_list.delete(v)
	elsif input_list.include? v.reverse
		list << v
		input_list.delete(v.reverse)
	end
end


puts list.join("") + center + list.join("").reverse
p inputs[:answer]

langurさんのコード

a,b=[],[];gets.to_i.times{s=gets.chop;(i=a.index r=s.reverse)?(b<<[s,r].min;a.delete_at i):a<<s};s=b.sort*'';$><<[s,a.sort.find{|t|t==t.reverse},s.reverse]*''
n = gets.to_i
a_in = []
n.times do
  s = gets.chomp
  a_in << s
end

a = []
(1..n).each do |i|
  s = a_in.permutation(i).collect {|a| a.join}.to_a
  a << s
end
a.flatten!

cand = ""
a.each do |i|
  cand = i if i == i.reverse && (i.length > cand.length ||
                                 i.length == cand.length && i < cand)
end

puts cand
n = gets.to_i
a = []
h = Hash.new(0)

n.times do
  s = gets.chomp!
  r = s.reverse

  if h[r] > 0
    h[r] -= 1
    a.push([s, r].min)
  else
    h[s] += 1
  end
end

l = a.sort.join("")
c = h.keep_if { |k, v| v != 0 }.keys.select { |i| i == i.reverse }.min
c = "" if c.nil?
puts l + c + l.reverse

langurさんのコードがさらに短く

a,b=[],[];gets;STDIN.each{|s|s.chop!;(i=a.index r=s.reverse)?(b<<[s,r].min;a.delete_at i):a<<s};s=b.sort*'';$><<[s,a.sort.find{|t|t==t.reverse},s.reverse]*''
a,b=[],[];gets;STDIN.read.split.sort.each{|s|(i=a.index r=s.reverse)?(b<<r;a.delete_at i):a<<s};s=b.sort*'';$><<[s,a.find{|t|t==t.reverse},s.reverse]*''
a,b=[],[];gets;$<.read.split.sort.each{|s|(i=a.index r=s.reverse)?(b<<r;a.delete_at i):a<<s};s=b.sort*'';$><<[s,a.find{|t|t==t.reverse},s.reverse]*''
# 配列を初期化する
words = []
lefts = []

# 単語数を読み飛ばす
gets

# 標準入力からの入力を1行ずつ配列の要素として格納し、昇順に並び換え、
# wordとして取り出す
STDIN.read.split.sort.each { |word|
  word_r=word.reverse
  index = words.index(word_r)
  if (index != nil) then
	# wordsに格納されている文字列の方がwordより若いのでword_rを回文の左辺
	# を構成する文字列を格納する配列leftsに格納し、回文を構成したのでwords   
    # から反転した文字列を除去する
	lefts << word_r;
    words.delete_at(index);
  else
    # wordsに反転した文字列がなければwordsに追加する
    words << word
  end
}

# leftsへの格納順は逆なのでsortしてから結合する
left = lefts.sort.join

# 余ったwordsから単独で回文を構成する文字列を搜す
center = words.find{ |word| word==word.reverse }.to_s

# 結合して出力する
puts left + center + left.reverse

LT

小木さん:OTTO

  • HashiCorp社がリリースしたもの
  • 同社はVagrantとかが有名
  • Hashiconfで発表された。Vagrant後継
  • Vagrant ... VM作成ツール
  • otto ... アプリケーションのソースコードから、フレームワークを推察して実行環境の定義ファイルを作る
  • 仮想マシンまで作る
  • クラウド定義(AWSデプロイ)まで行う
  • 現時点での対応環境は少なめ
  • ruby , php , nodejs , goに対応。
  • まだ精度はいまいち。GemfileのRubyバージョンがスルーされたり。
  • Linux,Windows,Mac用がある。
  • サンプルもgithubにある。
  • otto compileでappfileと呼ばれる設定ファイルができる。vagrantファイルもできる。
  • 起動時にいろいろ設定してくれるようになっている。
  • まだTODOとか書いてある
  • bundle install は自分で。まだOTTOだけでは完結してない。
  • 他のミドルウェアは自分で入れるしかない

内田さん:5S道

  • 5S=仕事ができる奴=プログラミングできる奴
  • いろいろきれいに。机に何も置かない境界線を!
  • おかげでHamamatsu.rb 2連続で参加
  • 5S ... 整理整頓清掃清潔躾
  • 工場とかでよく言う
  • evernoteでプレゼン。罫線入れるとページ切り替えできる。

イベント紹介

  • 10/10からみらのさんの写真展開催中。
  • RubyKaigi2015(11/11~11/13)
  • AWS Cloud Roadshow 2015 名古屋 / ナイトイベントもある
  • 12/5浜松楽器メイカーズフェスティバル

KPT

Keep

  • 質問した
  • とりあえず参加
  • Ruby書いた
  • OTTO概要分かった
  • 発見があったので毎回くる
  • Macにプロジェクターつなげた
  • 忙しかったが無理してきてよかった
  • 3ヶ月連続参加
  • 5Sとかの話もおもろい

Problem

  • お題不足
  • PC調子悪い
  • 問題解けなかった
  • 遅刻した

Try

  • もう少しネタを深堀りしてくる
  • 次回発表
  • 5S道を続ける
  • メタプロ第2版
  • ライフハック()の発表を皆で
  • 新しく別の活動を考える