<C,Ruby,python>Fizz Buzzを複数言語で実装してみた

Fizz BuzzをC,Ruby,pythonで実装してみた話

 

#このブログでpython触れるの初だな

 

Fizz Buzzってゲームあるじゃないですか

(っていうかあるんです、ゲームらしいんです)

 

簡単に説明すると1から順に数字を言って,3の倍数の時に"Fizz",5の倍数の時に"Buzz",両方の倍数の時に"Fizz Buzz"って言うやつです.

それをプログラムで作ってみようっていうことをやりました.

今回は実装した言語が3種類で長くなりそうなので目次つけます。

 

目次

 

作成するときの条件

  1.作成するプログラムの条件

     ここが統一されてないと比較のしようがないですからね

     ・変数は繰り返しに用いる変数のみ

     ・出力はコマンドライン上の出力のみ

     ・関数やメゾット化はしない

 2.処理の流れ

   作成したプログラムのフローチャートは以下の通りです

   

f:id:poolbooyer:20180607094713j:plain

 

 

C言語

  作成したソースコード


        #include < stdio.h >
        int main(void){ 
          int i;
          for(i=0;i<50;i++co ){
            if(i%3==0 && i%5==0){
              printf("Fizz Buzz \n");
            }else if(i%5==0){
              printf("Buzz \n");
            }else if(i%3==0){
              printf("Fizz \n");
            }else{
              printf("%d \n",i);
            }
          }
        }

 実行結果は全部の言語で出てくるものは一緒なので最後にまとめて書きます

 実行する時に使ったコマンド

  gcc Fizz.c

./a.out

 

Ruby

  作成したソースコード


        for i in 1..50 do
          if(i%5==0 && i%3==0)
            puts "Fizz Buzz"
          elsif(i%5==0)
            puts "Buzz"
          elsif(i%3==0)
            puts "Fizz"
          else
            puts i
          end
        end
    

#C言語で書いた時より短い

 

 実行する時に使ったコマンド

  Ruby Fizz.rb

python

  作成したソースコード


        for i in range(50):
          if (i%3==0) and (i%5==0):
            print("Fizz Buzz")
          elif i%5 == 0:
            print("Buzz")
          elif i%3 ==0:
            print("Fizz")
          else:
            print(i)
    

#3つの中だと一番スッキリして見える 

 実行する時に使ったコマンド

  python fizz.py

 

比較してみる

  ソースコードの短さ(文字数ベース)

    1.Ruby(153)

    2.python(160)

    3.C言語(264)

 

  実行形式(?)

 コンパイラ

      C言語

  インタプリタ

     Ruby

     Python

 

あとがき

書いてみて色々違いがあるのが面白かったです。読みやすさとコードの少なさの違いとかに驚きがありましたが、自分の学習の理解が深まったので良かったです(こなみ)

google すごいと思った話

 語彙力のNASAJAXAに入れそう

くだらない話はこれくらいにして、、、

 

googleすごいって感動してます

何がすごいってこれです

 

testmysite.withgoogle.com

PageSpeed Insights

です(なぜか二つ目のサイトが埋め込めなかった

 

このサイト、何ができるかっていうと、webサイトのパフォーマンスを測定できるんです。

見たいサイトのURLを入れてちょっと待つとそれぞれ情報を出してくれるんです。

 

1つ目と2つ目を組み合わせると最強になれそうなレベルですごいんです。

 

1つ目のサイトでできるのはモバイルでアクセスした時の状況の解析です。

この機能を使うと3G通信で接続した時の読み込み速度とかが全部見れるという神機能付いてます。

しかも、詳細なレポートも取得できるというすごさがやばいやつです。

(レポートの中身は後日追記する(かも))

 

そして2つ目

モバイルだけでなく、PCからアクセスした時のアクセスのレポートが取得できます。このサイトから確認すると、読み込みに必要になる速度の測定だけでなく、最適化されているかの確認もできます。

これの何がすごいって、最適化されているかの評価だけでなく、さらに最適にするための提案が様々な内容でもらえるのがすごい。

これを使って自分がこれまで作ったサイトのやつ色々みて改善して行くと最強のサイトが作れそうな気がします(語彙力皆無)

 

正直、感動してます。

以上、rubykaigi参加前夜のよくわからないハイテンションでのブログでした

研究で使ってるツールメモ

研究するときに使っているツールのメモを書きます。

 

1.Macで使っているもの

  1.1VNC

    リモートでwindowsマシンを操作するためにReal VNCを使っています。使いやすいかどうかでいうと完璧とも言い切れないけど必要条件(最低限のwindowsマシン操作)は満たしているのでいいかなと思ってます。たまに接続先に設定したパスワードが入力できなくなるバグ(?)があります。

 

poolbooyer.hatenablog.jp

 1.2drow.io

    資料にフローチャートを書いたりする必要があるときに使ってます。元々はブラウザ上でやっていたのですが、オフラインでの操作ができる方がいいかなと思い、ローカルに入れてます。操作感に関してはローカルでもブラウザでも変わらないので満足しています。

 

2.windows関連

  2.1Tera Pad

    超有名(?)なエディタ。行数表示とか、プログラムを書くのに必要な最低限の昨日がまとまっているので設定ファイルをいじらなきゃいけない時とかによく使ってます。

 

3.Mac,windows共通

  3.1chrome

    メインのブラウザはchromeにしています。ユーザ認証とかの影響が出そうな時はfirefoxを使うときもあります。軽量かで見るとなんとも言えないですが、gmailアカウントで多くのことを管理できる部分は特に重宝しています。

  3.2 Pocket

    webサイトを保存してあとで確認するために用いられるために開発されたものです。複数のデバイスで同じサイトを見る必要があるときなどにここに入れるようにしてます。chrome拡張機能もリリースされているので、簡単に使えて重宝しています。見たいサイトはたどり着いたらとりあえず入れといて、たまーにPCが落ちたときに見れなくて困るとかの事態を避けるようにも使っています。

getpocket.com

  3.3IFTTT

    スマホに色々通知を渡したいので使おうかなと画策中。LINEに通知を渡したり、スマホに通知を出したりがひとつでできるので便利

 

poolbooyer.hatenablog.jp