Newer
Older
2021-iwaki / AIsample1.rb
@Iwaki Iwaki on 8 Jul 2021 1 KB add new file
# coding: utf-8
Anna  = [9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]
Betty = [9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]
Cara  = [9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]
Diana = [9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]
# ステップ1
# Anna(アンナ)、Betty(ベティ)、Cara(キャラ)、Diana(ダイアナ)をあなたの友人とする
# 1日だけを想定
# 必要に応じて、例えば、午後1時30分を 1330、午後5時45分を 1745 とする
# 24時間を配列内の0〜23で表す
# 0〜8は睡眠時間(睡眠時刻)としてカット

# def とは define(定義する)の略

def g1(a,b,c,d)
  return(a==b and b==c and c==d)
end
# ステップ2: 目標設定
# 目標: 全員が出席できる時間を1時間にする
# 入力: 時間を表す4つの整数
# 出力: ブール値(True か False を意図する値(True か False によって決められる値?))
# 効果: すべての入力時間が等しい場合に True を返す


# ステップ3: 時間の制約
# 友人ごとに利用できない時間を設定

def c1(a)
  return(a<11 or a>=14)
end
# Anna は午前11時から午後1時50分まで授業

def c2(b)
  return(b<12 or b>=16)
end
# Betty は正午から午後3時まで授業
#                 午後4時までダンスの練習

def c3(c)
  return(c<19 or c>=23)
end
# Cara は午後7時から午後11時まで仕事

def c4(d)
  return(d<18 or d>=23)
end
# Diana は午後6時から午後8時までボランティア活動
#         午後8時から午後11時まで仕事

Anna.each do |v|
  Betty.each do |w|
    Cara.each do |x|
      Diana.each do |y|
        if g1(v,w,x,y) and c1(v) and c2(w) and c3(x) and c4(y)
          ## === 解決の結果はココ
          puts "Anna, Betty, Cara, and Diana can hang out at: " + v.to_s + ":00"
          ## ===
          #  to_s -> 数値を文字列に変換
          # (to_i -> 文字列を数値に変換)
        end
      end
    end
  end
end