ゴロなくても大丈夫

Rubyを中心にいろいろ書いてます。

yukicoder日記

仕事では、基本的にIF文と四則演算のみで何とかなっちゃう世界に生きています(ちょっと大げさですがそんなに大げさでもない)。

 

yukicoder(競技プログラミングのサイト)に挑む時も、

さすがにIF文のみではないですが、

Rubyを学び始めて間もないのでわずかに知ってるメソッドを駆使して挑んでいます。

 

そんな中、FizzBuzz問題では、コード順に並べたら上位13位という結果に。

おお。なんでだろ。

こんな感じに書きました。

1.upto(gets.to_i) do |i|
  if i % 15 == 0
    puts "FizzBuzz"
  elsif i % 5 == 0
    puts "Buzz"
  elsif i % 3 == 0
    puts "Fizz"
  else
    puts i
  end
end

ほぼIF文だけでやってのけちゃう。

上位の人のコードは、1行とか2行とかで書かれています。すごい。。

 

他の問題でも私は四則演算のみで挑んでいたのですが、

いろんな人の解答を見まして、

ceilメソッドとかfloorメソッドとか、

本で読んだっきりすっかり忘れていたメソッドを見かけて、

なるほどなぁと、

なんか、上手なコードを見られると嬉しくなります。

 

と同時に、AS400/RPGにはないメソッドが標準でたくさんあるんだなぁと。

逆にAS400/RPGでは限られた命令文だけでいろいろ作ってるなぁと。

いい悪いはないんでしょうけど、言語って、いろいろありますね。

yukicoder

競技プログラミングという面白そうなものの存在を知り、yukicoderというサイトをやってみました。

面白いですね。

★1問題を解いてみましたが、私が5行で書いたものを、他の人は1行とか2行で書いています。

すごく勉強になります。

HerokuにPushできず2日間

〜略〜

       Fetching activesupport 4.2.7.1
       Fetching sdoc 0.4.2
       Installing loofah 2.0.3
       Installing sdoc 0.4.2
       Downloading activesupport-4.2.7.1 revealed dependencies not in the API or the
       lockfile (json (>= 1.7.7, ~> 1.7)).
       Either installing with `--full-index` or running `bundle update activesupport`
       should fix the problem.
 !
 !     Failed to install gems via Bundler.
 !
 !     Push rejected, failed to compile Ruby app.
 !     Push failed

 ローカルでは完成しているのに・・・

Push出来ずにおよそ2日間。

 

ソースはこちら。

class YomiyaController < ApplicationController
  def index
    if request.post? then
      input_text = params['input'].split("\n")
      body_text = []

      input_text.each do |ary|
        arywk = Array.new
        arywk << ary
        if ary =~ /^......\*/
          arywk << '#585858'
        elsif ary =~ /.*BEGSR.*/ || ary =~ /.*ENDSR.*/ || ary =~ /.*EXSR.*/
          arywk << '#58FAF4'
        elsif ary =~ /.*WRITE.*/ || ary =~ /.*UPDAT.*/ || ary =~ /.*DELET.*/
          arywk << '#FF4000'
        elsif ary =~ /.*IFEQ.*/ || ary =~ /.*ELSE.*/ || ary =~ /.*ENDIF.*/ || ary =~ /.*IFNE.*/ || ary =~ /.*IFLT.*/ || ary =~ /.*IFGT.*/ || ary =~ /.*IFLE.*/ || ary =~ /.*IFGE.*/
          arywk << '#FFFF00'
        elsif ary =~ /.*MOVE.*/ || ary =~ /.*Z-ADD.*/
          arywk << '#088A08'
        elsif ary =~ /.*DOW.*/ || ary =~ /.*ENDDO.*/
          arywk << '#FE2EF7'
        else
          arywk << '#F2F2F2'
        end
        body_text << arywk
      end
      
      text_result =''
      body_text.each do |b|
        text_result += "<font color='#{b[1]}'>#{b[0]}</font>"
      end

      msg = "
        <html>
        <body bgcolor='#2A0A22'>
          <pre>#{text_result}</pre>
        </body>
        </html>
        "
      render html: msg.html_safe
    end
  end

end

最近は情報収集やエラー対応の時間が多く、久しぶりにRubyを書いた気がします。

勉強になったポイントとしては、正規表現です。
AS400/RPGでやるならI仕様書ですね。

先頭から7桁目がアスタリスクですと、RPGではコメント行です。

/^.....\*/

このように書きました。

WRITE という文字を含む行を探したい時はこう書きました。

/.*WRITE.*/


AS400/RPGのソースを読みやすくしたい

そんなアプリを作成中です。

 

AS400/RPGのエディタって、文字の色は一色(ISDBでは色がつきますが)、

歴史感じるソースコードは死んだ行ばかりだったり、

スクロールできなくて、1画面ずつしか見られなかったりと、

そんなに読みやすいものではないと思います。

これはRubyの勉強を始めて、

Visual Studio Codeを使ったり、vimを使ったりして感じたことです。

 

AS400/RPGのエディタもリピートとかコピーとか、検索・置換もできて、まぁ便利なところも結構あるのですが。

 

私はいつもソースをローカルにDLして、エクセルに展開し、

コメント行はグレーアウトしたり、

ネストが深いものは開始と終了に色をつけたり囲ったりして、

理解しやすくなるように工夫をしています。

 

その作業を、もっと楽ちんにしたいのです。

 

https://makot3.github.io/mokupage/moku170624.html

 

--追記--

行ごとに色を変えるということが可能なのか、テストをしてみました。

結果、できそうです!

 

こちらが入力

f:id:rubyp:20170625145407p:plain

 

そして、結果です。

f:id:rubyp:20170625145437p:plain

 

大丈夫そうですね。

ソースはGithubに。

https://github.com/Makot3/rpgyyn.git

 

--追記2--

だんだん出来上がってきました。

こちらは入力画面↓ ソースをコピペして、ボタンを押します。

f:id:rubyp:20170625170329p:plain

 

すると、行ごとに色がついて表示されます。

f:id:rubyp:20170625170435p:plain

 

色合いは調整していきます(それと、スペースが詰まっちゃうのも解決しないといけません)。

ソースはGithubに。

 https://github.com/Makot3/rpgyyn.git

 

--追記3--

見た目はかなりいい感じにできてきました。

ただ、Herokuへプッシュが出来ずにずっと悩んでます。

f:id:rubyp:20170626073450p:plain

私の読んだ技術書リスト(と積読とその他)

読んだ本

・たのしいRuby第5版
・Ruby on Rails5超入門
わかばちゃんと学ぶWebサイト制作の基本
わかばちゃんと学ぶGit使い方入門
・まんがでわかるLinuxシス管系女子
・ちょっとだけLinuxにさわってみたい人のためのBash on Ubuntu on Windows入門
・達人プログラマー
・リーダブルコード
・スッキリわかるJava入門
・スッキリわかるJava入門実践編


・雑誌:日経Linux

   WEB+DB PRESS


半分読んだ(読んでいる途中)
まつもとゆきひろコードの世界
プログラミング言語Ruby
・Ruby on Rails5アプリケーションプログラミング
・初めてのPython第3版
・わかりやすいJavaEEウェブシステム入門

少し読んだ
Python入門
Windowsコマンドプロンプトポケットリファレンス 

まだ読んでない
まつもとゆきひろコードの未来
メタプログラミングRuby第2版
・Effective Ruby
・あなたの知らない超絶技巧プログラミングの世界
Pythonクックブック第2版 

以上です。

何度も参照して頼りになる本たちです。この他ネット上の情報にもかなりお世話になっています。

ここまでが技術関連の本です。

ここからはちょっと趣向をかえまして。

かつて(といっても数カ月前まで)、週5冊ペースで本を読んでいました。
通勤時間が長いので、暇つぶし、という意味合いが大きいのですが^^;
素敵な文章にものすごく憧れます。
時々、化物みたいに上手な文章に出会い鳥肌が立ちます。読書は楽しいです。

小説はお気に入り以外は読んだら売ってしまうし、だいたい図書館で借ります。

が、手元にも本はあります。その中から文章を書く上でおすすめの本をいくつかご紹介します。

・日本語の作文技術 本多勝一
・伝える力 池上彰
・わかりやすく<伝える>技術 池上彰
・<わかりやすさ>の勉強法 池上彰
・理科系の作文技術 木下是雄
・名文どろぼう 竹内政明
・「編集手帳」の文章術 竹内政明
・文章のみがき方 辰濃和男
・文章の書き方 辰濃和男

どれもおすすめです。小説はまたの機会に。