6.17日報

という事で今日のまとめ

 

11:00~12:30

デイリードリル68

数値numが1以上10以下の範囲であればTrueを出力します。
outside_modeがTrueであった場合は、数値が0以下、または11以上であってもTrueを出力します。
それ以外はFalseを出力するメソッドを作りましょう。

という問題

 

解答例を見つけてしまう

 

デイリードリル69

警察がネズミ取りをしています。
速度が60以下の場合、出力は0になります。
速度が61以上80以下の場合、出力は1になります。
速度が81以上の場合、出力は2になります。
出力を計算するためのコードを作成し、
int値としてエンコードします。
0=チケットなし、1 =小チケット、2 =大チケット。
と出力するメソッドを作りましょう。
アタナの誕生日の日だけ速度制限が5倍大きくなります。

という問題

条件が多くて焦りましたがこれも同じ問題の解答例を発見

def caught_speeding(speed, is_birthday)
if is_birthday == "True"
bonus = 5
else
bonus = 1
end

if speed <= 60 * bonus
puts 0
elsif 60 * bonus < speed && speed <= 80 * bonus
puts 1
else
puts 2
end
end

と答えましたが解答例は

def caught_speeding(speed, is_birthday)
  speed_rounded = speed.round(1)

  if speed_rounded <= 60
    point = 0
  elsif speed_rounded <= 80
    point = 1
  else
    point = 2
  end
  puts is_birthday ? point * 5 : point
end

下の方がシンプルなコードせ見やすいなと思いました。

 

デイリードリル70

3つの整数a b cが与えられた場合、bまたはcがaとの差が1で
かつbとcとの数値の差が2以上の場合はTrue。
それ以外はFalse
と出力するメソッドを作りましょう

という問題

 

問題文の通りにif文を書いていくだけ

 

デイリードリル71

任意の文字列にcatとdogの文字が2つで1組ならTrue、それ以外だとFalseを出力するメソッドを作りましょう。

という問題

 

if animal.include?("cat") && animal.include?("dog")
    puts "True"
  else
    puts "False"
  end

&&の演算子とif文のMIXやけどシンプルなコード

 

デイリードリル72

任意の文字列が "xyz"を含み、
xyzの前にピリオド(.)が続かない場合はTrueを出力します。
したがって、 "xxyz"はカウントされますが、 "x.xyz"はカウントされない
メソッドを作りましょう

という問題

 

解答、解説を書いてるページを見つけ

注意する点は、先に”.xyz”を含むかどうかを確認しているところです。ifとelsifの条件の順番を逆にすると、ピリオドを含む場合も”True”と出力してしまいます。なので、先にピリオドが入っているときの条件を確認しましょう。

Rails上ではexclude?メソッドを使えますが、rubyでは使えないので気をつけましょう。

と書いてました。

fizzbuzz問題でもifとelsif逆やとちゃんとならへんから考え方は同じですね。

 

デイリードリル73

任意の2つの文字列があります。
大文字と小文字の違いを無視して、
どちらかの文字がもう一方の文字の最後にある場合はTrueを
ない場合はFalseを出力するプログラムを作りましょう

言っている意味がよく分からんかったけど

これも解答、解説を発見

 

デイリードリル74

任意の文字列に"code"が、どこかに現れるかを回数を返して数えて
その数を出力するメソッドを作りましょう。
ただし、'd'には任意の文字が使用可能です、
例えば"cope"と "cooe"はカウントされます。

正規表現問題

count = str.scan(/co[a-z]e/).size

 

デイリードリル75

任意の3つの数値abcの合計を出力するメソッドを作りましょう。
ただし、同じ数が含まれている場合、合計にはカウントされません。

という問題

解答例は個人的にはわかりにくかったけど

def lone_sum(a, b, c)
  sum = 0
  numbers = a, b, c
  numbers.each do |num|
    if numbers.count(num) == 1
      sum += num
    end
  end
  p sum
end

 

でもちゃんといけるっぽい

 

デイリードリル76

任意の文字列で
“hi”がいくつあるか数えてその数を出力するメソッドを作りましょう。

という問題

countを使えばいいと思うかもしれませんが、countは複数文字は正確にカウントできません。なので、複数文字の時は、scanを使いましょう。

ってのが大きなヒントでした。

scanを使わないと

hとiの数の合計が出力されるようです。

 

デイリードリル77

配列要素にある数値から偶数を数えて出力するメソッドを作りましょう。

という問題

if文とeach文の組み合わせでできるみたいです。

f:id:uskyade:20200617120602p:plain

自己採点やけど同問題の解答、解説を次々と見つけてしまい

ほとんど自分の力とは言えないけど

プログラミングはカンニングOKと言われてるみたいなので

しばらくその都度検索しながらこれからの問題も解決していこうと思います。

 

12:30~13:00

個人制作で管理者用ページに行かれへんのなんでやろうと考えてたら

modelの設定何もしてない事に気づく

あってるか分からんけどどうせいつかいる物やからやっておきました。

 

13:00~18:00

最終敵には管理者しか投稿できなくするつもりですが

管理者ページは一旦諦めて誰でも投稿できてもいいから

投稿機能を作る事にしました。

そこに関わるビュー設計はだいぶテキトーに

そこでも案の上バグりました

途中買い物行ったりちょっと横になったりしながら考えて調べて

投稿用のページができました。

項目足りへんし実際投稿はまだできません。

 

18:30~21:00

仮文字だった部分を一部投稿したデータを表示できるようにしました。

崩れたビューの修正までして今日はおしまい

 

映画に関するアプリなので1本映画見てテンション上げてから寝ます

 

今日の学習時間9.5h

今週の学習時間25.5h

6月の学習時間133h