LoginSignup
1
0

More than 1 year has passed since last update.

rubyで文章のサイズ変更

Last updated at Posted at 2021-11-09

今回実装したアルゴリズムの備忘録として!!

お題

ウィンドウのサイズを変更すると文章表示部分の大きさも同様に変更され、文章表示部分の幅に合わせて自然に改行されるという機能を現在の文章表示部分の高さと幅、及び変更後の幅を元に、新しく表示される文章を表示するプログラムを作成してください。

入力例の場合、以下の図のように高さが 6 行、幅が 8 文字の文章が与えられています。

入力/出力例

//入力例
6 8 6
My#name#
is#AVIOT
.#I#love
#program
ming#ver
y#much.#
//出力例
My#nam
e#is#A
VIOT.#
I#love
#progr
amming
#very#
much.#

実際に記述したコード

info = gets.chomp.split.map(&:to_i)
str = info[0].times.map{gets.chomp.split.map(&:to_s)}
array = str.flatten.join
ans = array.chars.each_slice(info[2]).map(&:join)
puts ans

解説付き

info = gets.chomp.split.map(&:to_i)  #最初の3つの数字を受け取り空白を取る
str = info[0].times.map{gets.chomp.split.map(&:to_s)}#[0]の回数分配列を受け取る
array = str.flatten.join                                                         #二次元配列を1つに繋げる
ans = array.chars.each_slice(info[2]).map(&:join)        #お題の文字数[2]に併せてeach_sliceする
puts ans

今回学んだメソッド

・each_slice(n) 引数nの指定した数の要素を取り出し配列にしてくれる
https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/each_slice.html

・flatten    多次元配列を1次元配列にしてくれる
https://docs.ruby-lang.org/ja/latest/method/Array/i/flatten.html

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0