Skip to content

Commit

Permalink
part2 working on test data but taking over 30 min to run on prod data
Browse files Browse the repository at this point in the history
  • Loading branch information
adamdiel committed Dec 13, 2023
1 parent 021f752 commit 55cc6b6
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
46 changes: 46 additions & 0 deletions 2023/day4/part2.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
require_relative 'scratch_game'

def find_copies(card_game, winners, numbers)
card_number = card_game
copies = []
numbers.each do | num |
if winners.include?(num)
copies << card_number + 1
card_number += 1
end
end
copies
end

def get_nums(data)
data_array = data.split(' ')
end
# cards = []
final_cards = []
game_cards = []
File.open(File.join(File.dirname(__FILE__), "test.txt"), "r") do |file|
file.each do | card |
card = card.split(":")
card_game = card[0].split(" ")[1].to_i
data = card[1].split("|")
winners = get_nums(data[0])
numbers = get_nums(data[1])
game = ScratchGame.new(card_game, numbers, winners)
game_cards << game
end
end


final_cards = []
until game_cards.empty?
top = game_cards.shift
final_cards << top
additional_copies = find_copies(top.card_num, top.winners, top.nums)
additional_copies.each do | id |
game = game_cards.find { |obj| obj.card_num == id }
game_cards << game
game_cards.sort! { |a, b| a.card_num <=> b.card_num }
end
end

puts final_cards.length
13 changes: 13 additions & 0 deletions 2023/day4/scratch_game.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class ScratchGame
attr_accessor :card_num, :nums, :winners

def initialize(card_num, nums, winners)
@card_num = card_num
@nums = nums
@winners = winners
end

def to_s
@card_num.to_s
end
end

0 comments on commit 55cc6b6

Please sign in to comment.