アラサーからのエンジニア転身blog

プログラミングの勉強や転職に関して記事にしていきます。

アナグラム判定メゾット (ある企業の採用面接で出たらしい)

久しぶりの投稿になりました。
勉強を怠っていたわけではありません笑

アナグラム判定メゾットはある企業の採用面接で出た試験らしいです。
自分なりに考えてみました。

(面接官の前で、いきなりホワイトボードに書くのはテンパってできたかな笑)

アナグラム判定メゾット
アナグラムとは??
ある文字列の文字位置を入れ替えることで、違う文字列にするというものです。(hatena → netaha)

判定するために

  • 全く同じ文字列でないこと
  • 同じ文字を同じ文字数分使っていること
# anagram判定アルゴリズム
def anagram(str1,str2)
  array1 = str1.split("")
  array2 = str2.split("")
    array = []
    array1.each do |s1|
      array2.each.with_index do |s2,i|
        if s1 == s2
          array << s1
          array2.delete_at(i)
          next #スキップする
        end
      end
    end
  # 同じ文字を同じ文字数分使っているか?且つ同じ文字列出ないか?
  (array.size == str1.size) && (str1 != str2)
end

ちょっとわかりずらいですね。。。でも一応機能はしています。

ネットで調べたら、こんなに簡単にできるようです。

def anagram(str1, str2)
  (str1.chars.sort == str2.chars.sort) && (str1 != str2)
end

面接ではいきなりこんな問題を出されたりします。
1から10書けることというより、課題設定し、その課題をクリアできる方法を思考できるかを見ているようです。

子テーブルのレコードにカスタムバリデーションで存在検証

f:id:sakurai-chan:20181021003040p:plain

したかったこと

親レコードと同時にネストしたフォーム(fields_for)で作成した子レコードに最低一つは作成されていることを判定をするカスタムバリテーションを作成した。(質問を作成した時に最低でも一つはジャンルを選択してほしい)

続きを読む

fields_for、check_box、enumで使用し、別モデルに複数レコードを作成する方法

f:id:sakurai-chan:20181009195218p:plain

実現したこと

  1. questionモデルのform内で別のモデルquestion_tagにレコードを保存する
  2. 1度のsubmitでquestion_id に対して複数のtagを付ける(複数レコード生成)
  3. enumで定義したタグをcheck_boxで表示する
続きを読む

第1回コードリーディング勉強会をしました!!!

今回はrailsのペアコードリーディング勉強会を行いました!!スクールの同期二人でやりましたよ( ´△`)

 

なぜペアコードリーディングなのか?

・実際の業務ではコードを読むことが多い。

・あのMatzさんもコードリーディングをすすめている!(コードは知識の宝ですよね。)

・一人で理解するより、二人で確認して理解することで、正しい理解を得やすい。

続きを読む

rubyのNEWsAPIの実装 

またまた企業からいただいた課題を実装しましたので、備忘録として残します。

【課題】
ニュース系のAPIを実装し、リストを表示する。

 f:id:sakurai-chan:20180909180152p:plain
https://newsapi.org/
世界中のニュースソースを集めて、データ提供をしてくれるAPIです。
ユーザー登録をして、APIkeyをゲットできます。
ニュースのソースや、ジャンル、国など指定できます。


routes.rb

 get '/tweets/moment/:genre', to: "tweets#moment"
 #ここでクライアントのリクエストによって、tweetsコントローラーのmomentアクションでparamsによってジャンルを取得可能にしました。
 
  resources :tweets do
    collection do
      get :search,:moment #tweetsコントローラーのmomentアクションの定義
    end
  end
続きを読む

ruby on rails ツイッタートレンドの時間毎の表示の実装(企業からいただいた課題)

本日訪問した企業より、スクールで作った最終作品に対して、追加課題をいただきました。
実装を行いましたので、備忘録として残します。

続きを読む