From dfe0e48ca7e7851867f9559acb476e25769a43a5 Mon Sep 17 00:00:00 2001 From: Argie Bacomo Date: Mon, 21 Mar 2022 10:06:00 +0800 Subject: [PATCH 1/2] Added ruby version calendar --- 21_Calendar/ruby/calendar.rb | 118 +++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 21_Calendar/ruby/calendar.rb diff --git a/21_Calendar/ruby/calendar.rb b/21_Calendar/ruby/calendar.rb new file mode 100644 index 00000000..7887a2db --- /dev/null +++ b/21_Calendar/ruby/calendar.rb @@ -0,0 +1,118 @@ +class Calendar + def initialize + $stdout.sync = true + end + + def parse_input + days_mapping = { + "sunday": 0, + "monday": -1, + "tuesday": -2, + "wednesday": -3, + "thursday": -4, + "friday": -5, + "saturday": -6, + } + + day = 0 + leap_day = false + correct_day_input = false + + while !correct_day_input + print "INSERT THE STARTING DAY OF THE WEEK OF THE YEAR: " + weekday = gets.chomp! + + days_mapping.each do |k, v| + if k.to_s == weekday.downcase.to_s + day = v + correct_day_input = true + break + end + end + end + + while true + print "IS IT A LEAP YEAR?: " + leap = gets.chomp! + if "y" == leap.downcase.to_s + leap_day = true + break + end + + if "n" == leap.downcase.to_s + leap_day = false + break + end + end + + return day, leap_day + end + + def calendar(weekday, leap_year) + months_days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + days = "S M T W T F S\n" + sep = "*" * 59 + years_day = 365 + d = weekday + + if leap_year + months_days[2] = 29 + years_day = 366 + end + + months_names = [ + " JANUARY ", + " FEBRUARY", + " MARCH ", + " APRIL ", + " MAY ", + " JUNE ", + " JULY ", + " AUGUST ", + "SEPTEMBER", + " OCTOBER ", + " NOVEMBER", + " DECEMBER", + ] + + days_count = 0 + + for n in (1..12) do + days_count += months_days[n - 1] + print "** #{days_count} ****************** #{months_names[n - 1]} ****************** #{years_day - days_count} **\n" + print days + print sep + for nnn in (1..6) do + print "\n" + for g in (1..7) do + d += 1 + d2 = d - days_count + + break if d2 > months_days[n] + + if d2 <= 0 + print " " + elsif d2 < 10 + print " #{d2} " + else + print "#{d2} " + end + end + + print "\n\n" + + break if d2 >= months_days[n] + end + d -= g if d2 > months_days[n] + print "\n" + end + print("\n") + end +end + + +calendar = Calendar.new +input = calendar.parse_input + +calendar.calendar(input[0], input[1]) + From 1a71d033a8f1fa14caf0897f01fa3df6c1d8bec1 Mon Sep 17 00:00:00 2001 From: Argie Bacomo Date: Mon, 21 Mar 2022 10:12:03 +0800 Subject: [PATCH 2/2] remove extra somethings --- 21_Calendar/ruby/calendar.rb | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/21_Calendar/ruby/calendar.rb b/21_Calendar/ruby/calendar.rb index 7887a2db..4f7061d7 100644 --- a/21_Calendar/ruby/calendar.rb +++ b/21_Calendar/ruby/calendar.rb @@ -1,8 +1,4 @@ class Calendar - def initialize - $stdout.sync = true - end - def parse_input days_mapping = { "sunday": 0, @@ -48,7 +44,7 @@ class Calendar return day, leap_day end - def calendar(weekday, leap_year) + def start(weekday, leap_year) months_days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] days = "S M T W T F S\n" sep = "*" * 59 @@ -106,13 +102,12 @@ class Calendar d -= g if d2 > months_days[n] print "\n" end - print("\n") + print "\n" end end - -calendar = Calendar.new -input = calendar.parse_input - -calendar.calendar(input[0], input[1]) - +if __FILE__ == $0 + calendar = Calendar.new + input = calendar.parse_input + calendar.start(input[0], input[1]) +end \ No newline at end of file