Skip to content

Instantly share code, notes, and snippets.

@RobertoBarros
Created November 7, 2025 00:45
Show Gist options
  • Select an option

  • Save RobertoBarros/8feb6793f0f8169fbe0d7411bfe59db4 to your computer and use it in GitHub Desktop.

Select an option

Save RobertoBarros/8feb6793f0f8169fbe0d7411bfe59db4 to your computer and use it in GitHub Desktop.
batch_2175_reboot_instacart_final
# Mensagem de boas vindas
puts "-" * 30
puts "Bem vindos a Pé de Pano store"
puts "-" * 30
# Definir os produtos (nome, preço, stock) disponíveis
products = {
"kiwi" => { price: 1.25, stock: 5 },
"banana" => { price: 0.5, stock: 6 },
"manga" => { price: 4.0, stock: 3 },
"aspargo" => { price: 9.0, stock: 2 },
}
# Mostrar os produtos com o respectivo preço
puts "Hoje nós temos os seguintes produtos disponíveis:"
products.each do |item, info|
puts "#{item}: #{info[:price]} (#{info[:stock]} disponivel)"
end
puts "-" * 30
cart = []
# LOOP
loop do
# Perguntar qual o produto ou `quit` para encerrar
puts "Qual produto você gostaria de comprar hoje? ou 'quit' para sair"
answer = gets.chomp.downcase.strip
# Se o usuário digitou `quit` sai do loop
break if answer == "quit"
# Armazenar o produto no carrinho do usuário se ele existir
if products.key?(answer)
# Perguntar a quantidade de produtos
puts "Qual quantidade de #{answer} você deseja?"
quantity = gets.chomp.to_i
# Somente adicionar no carrinho se tiver disponível no estoque
if quantity <= products[answer][:stock]
cart << {
item: answer,
quantity: quantity
}
# Remove do estoque a quantidade que adicionamos ao carrinho
products[answer][:stock] -= quantity
else
# Não temos a quantidade solicitada do item
puts "Desculpe, só temos #{products[answer][:stock]} de #{answer}"
end
else
puts "Desculpe, produto #{answer} não disponível"
end
#FIM LOOP
end
# cart é um array de hashes do tipo:
# [{item: "banana", quantity: 20}, {item: "manga", quantity: 10}]
# Calcular o subtotal e total dos produtos no carrinho
total = 0
puts "-" * 30
cart.each do |info|
item = info[:item]
quantity = info[:quantity]
# lembrando que products[item] é hash como { price: 1.25, stock: 5 }
price = products[item][:price]
subtotal = quantity * price
# Mostrar o subtotal por item
puts "#{item}: #{quantity} X #{price} = #{subtotal}"
total += subtotal
end
# Mostrar o total dos produtos no carrinho
puts "-" * 30
puts "O valor total de sua compra foi: #{total}"
puts "-" * 30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment