西日暮里.rb ゴールデンだよLT大会 @ 秋葉原UDX!!
(株)永和システムマネジメント@mtsmfm松島 史秋どう書くで学ぶ Ruby
View Slide
松島 史秋GitHub, Twitter, Nintendo ID@mtsmfm
どう書く
https://yhpg.doorkeeper.jp/
http://nabetani.sakura.ne.jp/hena/orde03nofconv/
多角形の頂点のうち、内角が180度より小さいものの数を計算するプログラムを書け。
スタート!!!
...
1時間後
Emoji provided free by Emoji One
できてもできなくても発表
おもしろい!
1時間という枠
素振り重要Photo by cambodia4kidsorg
文字列操作
どう書くの入力は文字列
/*0*/ test( "1a2t3s2s", "11" );/*1*/ test( "1a1c1d00", "22" );/*2*/ test( "00", "20" );/*3*/ test( "3q", "6" );/*4*/ test( "3t2a", "8" );/*5*/ test( "3t3a", "8" );/*6*/ test( "3t4a", "12" );/*7*/ test( "004q2g", "32" );/*8*/ test( "4c2g2k4i", "24" );/*9*/ test( "1o1a4f4i1t", "26" );/*10*/ test( "4t3a4g2a2o2p", "24" );/*11*/ test( "4i4o3i3c3n3h2c", "30" );/*12*/ test( "4m3n3m002b1b3a", "34" );/*13*/ test( "001b2a3t4s3s2s1s", "27" );/*14*/ test( "1n1j3o4o1h2n2r1k", "36" );/*15*/ test( "4o2a2j1m2e4l2l3m3o", "42" );
String#scan'1a2t3s2s'.scan(/\d\w/)#=> ["1a", "2t", "3s", "2s"]
String#chars
String#ordInteger#chr?a.ord#=> 9797.chr#=> "a"
配列操作
Array#zipArray#rotate
Array#combinationa = [1, 2, 3, 4]a.combination(1).to_a=> [[1],[2],[3],[4]]a.combination(2).to_a=> [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]a.combination(3).to_a=> [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]a.combination(4).to_a=> [[1,2,3,4]]
Array#transpose[[1,2],[3,4],[5,6]].transpose=> [[1, 3, 5], [2, 4, 6]]
Enumerable#each_sliceEnumerable#each_cons
&.
Ruby組込みだけで超便利!
便利 gem
gem 'activesupport',require: 'active_support/all'
あれ?AS だっけ?標準だっけ?
gem 'pry-rescue'
例外上がったところで止まる
Bundler
require 'bundler/inline'gemfile dosource 'https://rubygems.org'gem 'activesupport',require: 'active_support/all'end
結果の共有に便利
フィードバック
'1a2t3s2s'.scan(/\d\w/)#=> ["1a", "2t", "3s", "2s"]
'1a2t3s2s'.scan(/../)#=> ["1a", "2t", "3s", "2s"]
'1a2t3s2s'.scan(/../)#=> ["1a", "2t", "3s", "2s"]Emoji provided free by Emoji One
別言語で解く
Ruby の表現力
“Rubyをキメると気持ちいい”- matz