From 4aafb29d59f06365cc219bfc4ab878145391cbbf Mon Sep 17 00:00:00 2001 From: Eduardo Cardenas Date: Fri, 16 Dec 2022 06:18:33 -0600 Subject: [PATCH 1/6] Ruby solutions --- solutions/ruby/.gitignore | 2 + solutions/ruby/medianSort.rb | 79 ++++++++++++++++++++++++++ solutions/ruby/moonUmbrellas.rb | 38 +++++++++++++ solutions/ruby/parentingPartners.rb | 47 +++++++++++++++ solutions/ruby/reversortEngineering.rb | 41 +++++++++++++ 5 files changed, 207 insertions(+) create mode 100644 solutions/ruby/.gitignore create mode 100644 solutions/ruby/medianSort.rb create mode 100644 solutions/ruby/moonUmbrellas.rb create mode 100644 solutions/ruby/parentingPartners.rb create mode 100644 solutions/ruby/reversortEngineering.rb diff --git a/solutions/ruby/.gitignore b/solutions/ruby/.gitignore new file mode 100644 index 00000000..476591c1 --- /dev/null +++ b/solutions/ruby/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +../.DS_Store \ No newline at end of file diff --git a/solutions/ruby/medianSort.rb b/solutions/ruby/medianSort.rb new file mode 100644 index 00000000..67969990 --- /dev/null +++ b/solutions/ruby/medianSort.rb @@ -0,0 +1,79 @@ +$stdout.sync = true + +def valid res + if res == -1 + exit 0 + end + return res +end + +def printsAnswer res + puts res.join(' ') + $stdout.flush + judge = STDIN.gets.chomp.to_i; + valid(judge) +end + +def query(i, j, k) + puts "#{i} #{j} #{k}" + $stdout.flush + + res = STDIN.gets.chomp.to_i + + return valid(res) +end + +def solve ans + res = [1, 2] + n = ans.size + + # try new index + for number in 3.upto(n) + start = 0 + finish = res.size - 1 + + + while finish-start >= 1 + + # divide list in 3 parts + a = start + (finish - start) / 3 + b = finish - (finish - start) / 3 + + # query median + median = query(res[a], res[b], number) + + # move limits of parts according to median + if median == res[a] + finish = a - 1 + if start == finish + finish += 1 + end + elsif median == res[b] + start = b + 1 + if start == finish + start -= 1 + end + elsif median == number + start = a + 1 + finish = b - 1 + if start == finish + start -= 1 + end + end + end + # insert at correct index + res.insert(start, number) + end + + + printsAnswer(res) +end + +t, n, q = STDIN.gets.split.map &:to_i; + +0.upto(t - 1) do + answer = Array(1..n) + solve(answer) +end + +exit 0 \ No newline at end of file diff --git a/solutions/ruby/moonUmbrellas.rb b/solutions/ruby/moonUmbrellas.rb new file mode 100644 index 00000000..711252ff --- /dev/null +++ b/solutions/ruby/moonUmbrellas.rb @@ -0,0 +1,38 @@ +# Read the number of test cases. +t = gets.to_i + +def solve + + #get string of C and J and ? + a, b, str = gets.split(" ") + + # get costs + x = a.to_i + y = b.to_i + + # with dynamic programming + cCost = (str[0] == 'J' ? 1e9 : 0) + jCost = (str[0] == 'C' ? 1e9 : 0) + + for i in 1 ... str.size + cCostNew = 1e9 + jCostNew = 1e9 + if str[i] == 'C' + cCostNew = [cCost, jCost + y].min + elsif str[i] == 'J' + jCostNew = [jCost, cCost + x].min + else + cCostNew = [cCost, jCost + y].min + jCostNew = [jCost, cCost + x].min + end + cCost = cCostNew + jCost = jCostNew + end + + return [cCost, jCost].min +end + +# Loop over the number of test cases. +1.upto(t) do |ti| + puts "Case ##{ti}: #{solve}" +end diff --git a/solutions/ruby/parentingPartners.rb b/solutions/ruby/parentingPartners.rb new file mode 100644 index 00000000..94a539d5 --- /dev/null +++ b/solutions/ruby/parentingPartners.rb @@ -0,0 +1,47 @@ +# Read the number of test cases. +t = gets.to_i + +def solve + + # get number of activities + n = gets.to_i + activities = Array.new() + + # get activities and order them by start time + 0.upto(n-1) do |id| + start, finish = gets.split(" ").map(&:to_i) + activities.push([start, finish, id]) + end + + # sort by ascending order of start time + activities.sort_by! {|e| e[0]} + + c = 0 + j = 0 + strAnswer = "x" * n + + # assigns activity one by one if possible, otherwise return + activities.each do |activity| + start = activity[0] + finish = activity[1] + index = activity[2] + + if c <= start + c = finish + strAnswer[index] = "C" + elsif j <= start + j = finish + strAnswer[index] = "J" + else + strAnswer = "IMPOSSIBLE" + break + end + end + + return "#{strAnswer}" +end + +# Loop over the number of test cases. +1.upto(t) do |ti| + puts "Case ##{ti}: #{solve}" +end diff --git a/solutions/ruby/reversortEngineering.rb b/solutions/ruby/reversortEngineering.rb new file mode 100644 index 00000000..8078748a --- /dev/null +++ b/solutions/ruby/reversortEngineering.rb @@ -0,0 +1,41 @@ +# Read the number of test cases. +t = gets.to_i + +def solve + + #get string n and c + n, c = gets.split(" ").map(&:to_i) + + # cost until the last element + c -= n - 1 + + costsArr = Array.new() + + # is it possible? + for cost in (n - 1).downto(1) + if c >= cost + costsArr.push(cost) + c -= cost + end + end + + if c != 0 + return "IMPOSSIBLE" + end + + ans = Array.new() + for i in 1.upto(n) + ans.push(i) + end + + #there's n - 2 numbers to go + for i in (costsArr.size - 1).downto(0) + ans[n-1-costsArr[i], n] = ans[n-1-costsArr[i], n].reverse + end + return ans.join(" ") +end + +# Loop over the number of test cases. +1.upto(t) do |ti| + puts "Case ##{ti}: #{solve}" +end From d27d014b9fa57b116693163d364dfbd509f8cbad Mon Sep 17 00:00:00 2001 From: David Cardenas <52186152+davidcardd1@users.noreply.github.com> Date: Fri, 16 Dec 2022 06:35:33 -0600 Subject: [PATCH 2/6] Delete .gitignore --- solutions/ruby/.gitignore | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 solutions/ruby/.gitignore diff --git a/solutions/ruby/.gitignore b/solutions/ruby/.gitignore deleted file mode 100644 index 476591c1..00000000 --- a/solutions/ruby/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -../.DS_Store \ No newline at end of file From 4741dbbe8843da4a5ebc270b9ebab0d03ad80597 Mon Sep 17 00:00:00 2001 From: David Cardenas <52186152+davidcardd1@users.noreply.github.com> Date: Fri, 23 Dec 2022 16:43:42 -0600 Subject: [PATCH 3/6] Rename medianSort.rb to median_sort.rb --- solutions/ruby/{medianSort.rb => median_sort.rb} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename solutions/ruby/{medianSort.rb => median_sort.rb} (99%) diff --git a/solutions/ruby/medianSort.rb b/solutions/ruby/median_sort.rb similarity index 99% rename from solutions/ruby/medianSort.rb rename to solutions/ruby/median_sort.rb index 67969990..a595623a 100644 --- a/solutions/ruby/medianSort.rb +++ b/solutions/ruby/median_sort.rb @@ -76,4 +76,4 @@ def solve ans solve(answer) end -exit 0 \ No newline at end of file +exit 0 From 8609b671577982d22e449d6060c3c5ef716bfdd6 Mon Sep 17 00:00:00 2001 From: David Cardenas <52186152+davidcardd1@users.noreply.github.com> Date: Fri, 23 Dec 2022 16:44:04 -0600 Subject: [PATCH 4/6] Rename moonUmbrellas.rb to moons_and_umbrellas.rb --- solutions/ruby/{moonUmbrellas.rb => moons_and_umbrellas.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename solutions/ruby/{moonUmbrellas.rb => moons_and_umbrellas.rb} (100%) diff --git a/solutions/ruby/moonUmbrellas.rb b/solutions/ruby/moons_and_umbrellas.rb similarity index 100% rename from solutions/ruby/moonUmbrellas.rb rename to solutions/ruby/moons_and_umbrellas.rb From 6e4f834f53c90ae8ca708e9e04bf2e0dde221a59 Mon Sep 17 00:00:00 2001 From: David Cardenas <52186152+davidcardd1@users.noreply.github.com> Date: Fri, 23 Dec 2022 16:44:20 -0600 Subject: [PATCH 5/6] Rename reversortEngineering.rb to reversort_engineering.rb --- .../ruby/{reversortEngineering.rb => reversort_engineering.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename solutions/ruby/{reversortEngineering.rb => reversort_engineering.rb} (100%) diff --git a/solutions/ruby/reversortEngineering.rb b/solutions/ruby/reversort_engineering.rb similarity index 100% rename from solutions/ruby/reversortEngineering.rb rename to solutions/ruby/reversort_engineering.rb From 4a49f6f08ef2204d9103c4db50e0d938f9e4b6c1 Mon Sep 17 00:00:00 2001 From: David Cardenas <52186152+davidcardd1@users.noreply.github.com> Date: Fri, 23 Dec 2022 16:48:17 -0600 Subject: [PATCH 6/6] Rename parentingPartners.rb to parenting_partnering_returns.rb --- .../{parentingPartners.rb => parenting_partnering_returns.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename solutions/ruby/{parentingPartners.rb => parenting_partnering_returns.rb} (100%) diff --git a/solutions/ruby/parentingPartners.rb b/solutions/ruby/parenting_partnering_returns.rb similarity index 100% rename from solutions/ruby/parentingPartners.rb rename to solutions/ruby/parenting_partnering_returns.rb