Rubyの`transpose`とメイドさんと肉のハナマサ
0時から3時まで
どうやら私はtranspose
から嫌われているようだ。
全然できない。
そんなことを考えながら、日報を読んだ!
どうやら、[061] lsコマンド #5 | FJORD BOOT CAMP(フィヨルドブートキャンプ)
each_sliceだと余りにnilが入らないため、transposeを使うのに都合が悪かった。(上の例でいうと、["tea", nil, nil]になってほしかった) 調べたところActiveSupportのin_group_ofを使うといいと分かった。
なるほど~それを使おうと思ったら、
ls コマンドを作る | FJORD BOOT CAMP(フィヨルドブートキャンプ)
gemを使わずにRubyの標準ライブラリのみで実装してみてください。どうしてもgemに頼らざるを得なかった場合は提出時にその旨コメントしてください。
なんと!今はダメでした。けど、考え方はわかったぞ!
色々と手を動かした。どうやら、上手く行きそうだ!
これでtranepose
使えそうだ。
b = (1..10).map{|i| i.to_s.ljust(30)} a = [] b.each_slice(3) do |x| a << x end if a[-1].size == 1 a[-1].push(nil, nil) else x[-1].size == 2 a[-1].push(nil) end puts a.transpose.join(" ")
11時から15時まで
夜ふかししてたら、遅く起きた。午前中の勉強は諦めた。 秋葉原に買い物に行く。人が多い、メイドさんも多い。なるほど!今日は土曜日だ!人とメイドさんの多さで気づいた。 途中まで、涼しかったが日が照ってきて熱くなり、マスクが蒸れてきた。 100ショップに買い物行く途中に、メイドさんにたくさん声をかけられた。何度も「ごめんなさい」と言って、100ショップに向かった。忍者の格好したメイドさんに、声をかけられ、「ごめんなさい」と断ったら、「かたじけない」と言われた。ちょっと印象に残った。 100ショップ行った後、肉のハナマサに行った。 カレーのフレーク1kgと材料と気になってプロが使う納豆を買った。 「トクバイというアプリで肉のハナマサの最新情報をゲット」というポスターがあって、インストールした。
昼ご飯は、さつまいものカレーを作って食べた。
15時から19時まで
rubyで絶対pathについて調べた! Dir.glob()を使うときは、パスを絶対パスに変換してから – 山本隆の開発日誌
様々なディレクトリのパスを取得する/パスを加工する | まくまくRubyノート
ターミナルでやったが順番が違う。
まだ順番が違うみたいだな。。下記は失敗コード。
class LsCommand def call file_join end def transpose_test a = [] a << test a.transpose end def file_join trans_pose.join("") end def trans_pose slice.transpose end def slice a = [] just.each_slice(3) do |x| a << x end case when a[-1].size == 3 # 何もしない when a[-1].size == 2 a[-1].push(nil) when a[-1].size == 1 a[-1].push(nil, nil) end a end def just a = [] not_option.map do |x| a << x.ljust(24) end a end def not_option Dir.glob("*").sort end end puts LsCommand.new.call
本場のlsコマンド3列の時の文字数が24文字と気づいたのは良しとするか。
夕ご飯はインスタントで博多ラーメン食べた。お湯入れすぎで微妙な味だった。ラーメン食べながらハイキュー!!というアニメを観た。
23時から25時まで
transpose
の理解が足りてないことに気づいた!行が14行あり、14の要素ずつほしいには下記の通りすればいいと気づけて良かった!
Array#transpose (Ruby 2.7.0 リファレンスマニュアル)
a = [] just.each_slice(14) do |x| a << x end
やったー!each_slice
とwhile
で、ActiveSupport
のin_group_of
ぽい処理をすることができた。
a = %W(aa, bb, cc, dd) p a.class p a.size b = [] a.each_slice(3) do |x| b << x end while b.size < 3 b[-1].push(nil) break if b[-1].size == 3 end p b
(m・_・bp) 1:09 ~/Desktop/vsnote2.0/kadai/lsコマンド % ruby memo.rb Array 4 [["aa,", "bb,", "cc,"], ["dd", nil, nil]]
感想
結構すすんで良かった!明日はarl
オプションを連携させたい。