Skip to content

Instantly share code, notes, and snippets.

@RobertoBarros
Created January 27, 2025 19:44
Show Gist options
  • Save RobertoBarros/c3001e2b45d48101375f666e83717e85 to your computer and use it in GitHub Desktop.
Save RobertoBarros/c3001e2b45d48101375f666e83717e85 to your computer and use it in GitHub Desktop.
reboot_batch_1925_instacart_final
# Mensagem de boas vindas
puts '-' * 50
puts "Bem-vindo ao nosso mercado"
products = { "kiwi" => {price: 1.25, stock: 5},
"banana" => {price: 0.5, stock: 10},
"mango" => {price: 4.0, stock: 6},
"asparagus" => {price: 9.0, stock: 3}
}
cart = []
# cart é um array de hash onde:
# cart = [{product: "mango", quantity: 2}, {product: "banana", quantity: 5}, ...]
# LOOP
loop do
# Exibir produtos com o respectivo preço e stock
puts '-' * 50
products.each do |product, info|
price = info[:price]
stock = info[:stock]
puts "#{product} - R$ #{price} (in stock #{stock})"
end
puts '-' * 50
# Perguntar qual produto quer adicionar ao carrinho
puts "Qual produto você deseja adicionar ao carrinho? Ou (quit) para sair"
choice = gets.chomp
# Se o produto for "quit" sai do loop
break if choice == "quit"
# Somente adicionar ao carrinho se for um nome de produto válido
if products.key?(choice)
# Perguntar a quantidade
puts "Qual a quantidade?"
quantity = gets.chomp.to_i
# Verificar se a quantidade tem em stock para poder colocar no carrinho
info = products[choice]
stock = info[:stock]
# Ou somente stock = products[choice][:stock]
if quantity <= stock
cart << {product: choice, quantity: quantity}
products[choice][:stock] = stock - quantity
else
puts "Impossível! Quantidade de #{choice} é somente #{stock}"
end
else
puts "O produto não está em estoque"
end
# FIM DO LOOP
end
bill = 0
# Calcular o total dos preços dos produtos no carrinho
puts '-' * 50
cart.each do |item|
# item é um hash no formato: {:product=>"kiwi", :quantity=>10}
product = item[:product] # string com o nome do produto
quantity = item[:quantity] # integer com a quantidade do produto
price = products[product][:price] # products[product] é um hash no formato {price: 1.25, stock: 5}
subtotal = price * quantity
puts "#{product} : #{quantity} X #{price} = #{subtotal}"
bill += subtotal
end
# Mostrar o valor total
puts "O valor da sua conta foi #{bill} "
puts '-' * 50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment