Skip to content

Instantly share code, notes, and snippets.

@RobertoBarros
Created April 29, 2024 18:39
Show Gist options
  • Save RobertoBarros/daa96dd77302122b30c5e505209ff700 to your computer and use it in GitHub Desktop.
Save RobertoBarros/daa96dd77302122b30c5e505209ff700 to your computer and use it in GitHub Desktop.
batch_1680_reboot_instacart_final
# Mensagem de boas vindas
puts '-' * 30
puts "Bem Vindos ao Mercado Tabajara"
puts '-' * 30
products = {
"kiwi" => { stock: 5, price: 1.25 },
"banana" => { stock: 10, price: 0.50 },
"mango" => { stock: 3, price: 4 },
"apple" => { stock: 25, price: 3 }
}
# Mostrar todos os produtos com o preço
products.each do |product, info|
puts "#{product}: R$ #{info[:price]} (disponível: #{info[:stock]} unidades)"
end
puts '-' * 30
cart = []
# LOOP
loop do
# Perguntar qual produto quer adicionar
puts "Qual produto deseja adicionar: "
name = gets.chomp.downcase
# Se colocar `quit` sai do loop
break if name == "quit"
# Verificar se o produto existe e adicionar ao carrinho o produto e a quantidade
if products.key?(name)
# Perguntar a quantidade
puts "Quantos items?"
quantity = gets.chomp.to_i
info = products[name] # products['kiwi'] =>
# info é um hash como { stock: 5, price: 1.25 }
stock = info[:stock]
if stock >= quantity
cart << { name: name, quantity: quantity }
info[:stock] -= quantity
else
puts "A quantidade disponivel de #{name} é #{stock}"
end
else
puts "Produto inexistente"
end
# FIM DO LOOP
end
# cart é um array de hashs do tipo:
# [{:name=>"kiwi", :quantity=>2}, {:name=>"mango", :quantity=>5}]
puts '-' * 30
# Calcula o subtotal por produto e total da compra
total = 0
cart.each do |product|
# product é um hash como {:name=>"kiwi", :quantity=>2}
name = product[:name]
quantity = product[:quantity]
# products[name] é um hash como { stock: 5, price: 1.25 }
price = products[name][:price]
subtotal = quantity * price
# kiwi: 2 X 1.25€ = 2.5€
puts "#{name}: #{quantity} x #{price} = #{subtotal}"
total += subtotal
end
# Mostra o valor
puts '-' * 30
puts "Total = #{total}"
puts '-' * 30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment