議事録(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版
- ライフハック()の発表を皆で
- 新しく別の活動を考える