yukicoderNo.716 距離解説
gets;a=gets.split.map(&:to_i);puts a.each_cons(2).map{|x,y|y-x}.min;puts a[-1]-a[0]
each_consメソッドは、引数nで指定した数の要素を繰り返し取り出して、ブロックを実行します。ブロック引数arrには、取り出した要素が配列で入ります。nの数が要素数より大きいときは、ブロックを1度も実行しません。
each_sliceメソッドとは違い、[要素1, 要素2, 要素3, ...]、[要素2, 要素3, 要素4, ...]、[要素3, 要素4, 要素5, ...]、...のように取り出します。
each_cons(2)なので[要素1,要素2],[要素2,要素3],[要素3,要素4]と取り出して,map{|x,y|y-x}で右から左の差を取り、その最小値を出している。最大値は左端-右端
最短
eval"N,A,*B="+gets(p).split*?, x=A p B.map{|c|-A+A=c}.min,B[-1]-x
文字列 expr を Ruby プログラムとして評価してその結果を返しま す。第2引数に Binding オブジェクトを与えた場合、 そのオブジェクトを生成したコンテキストで文字列を評価します。
expr の中のローカル変数の扱いはブロックの場合と同じです。すなわち、eval 実行前に補足されていた変数は eval 実行後にブロック外に持ち出せます。 docs.ruby-lang.org
gets(p) は 2行読み込める
質問しといてよかった
yukicoderNo.725 木は明らかに森である解説最短コードも解説
puts gets.gsub("treeone","forest")
最短
#!ruby -p gsub'treeone','forest'
#!
に続く 文字列がruby
という文字列を含む行を見つけたらその行以下を Ruby スク リプトとして実行します。-p -nフラグとほぼ同じですが, 各ループの最後に変数 $_ の値を出力するようになります。
最後に Kernel.#gets または Kernel.#readline で読み込んだ文字列です。 docs.ruby-lang.org
yukicoder_No.729 文字swap解説
s=gets;i,j=gets.split.map(&:to_i);s[i],s[j]=s[j],s[i];puts s
日記を再開します
今日から日記を再開します
明日のルビー東海楽しみ