O Que Comprar
Parte da seção Fundamentos do Journey de R da Coddy — lição 78 de 78.
Desafio
FácilCrie uma função chamada what_to_buy que receba dois argumentos: budget (um valor numérico) e prices (um vetor nomeado de preços de itens). A função deve retornar um vetor de caracteres contendo os nomes de todos os itens com preços menores ou iguais ao orçamento.
Se nenhum item for acessível, retorne um vetor de caracteres vazio usando character(0).
Você receberá as seguintes entradas:
- O valor do orçamento (um número)
- Uma lista de nomes de itens separados por vírgula (ex:
apple,banana,steak,bread) - Uma lista de preços correspondentes separados por vírgula (ex:
2,1,15,3)
Analise as entradas para criar um vetor nomeado de preços, chame sua função e imprima o resultado. Use print() para exibir o vetor de caracteres retornado.
Por exemplo, se a entrada for:
5
apple,banana,steak,bread
2,1,15,3A saída deve ser:
[1] "apple" "banana" "bread"Se a entrada for:
10
laptop,phone,tablet
999,599,399A saída deve ser:
character(0)Dicas:
- Use
strsplit(input, ",")[[1]]para dividir strings separadas por vírgula em vetores - Use
as.numeric()para converter as strings de preço em números - Use
names(prices) <- item_namespara criar um vetor nomeado - Use indexação lógica com
names()para extrair os nomes dos itens acessíveis
Experimente você mesmo
# Ler a entrada
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Analisar as entradas
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])
# Criar um vetor nomeado de preços
prices <- price_values
names(prices) <- item_names
# TODO: Escreva sua função what_to_buy abaixo
# A função deve receber budget e prices como argumentos
# e retornar um vetor de caracteres com os nomes dos itens acessíveis
# Chamar a função e imprimir o resultado
result <- what_to_buy(budget, prices)
print(result)Todas as lições de Fundamentos
4Operadores Parte 2
Operadores Lógicos (AND, OR)Operadores Lógicos Parte 2 (NOT)Recapitulação - Lógica SimplesLógica Vetorizada Parte 1Lógica Vetorizada Parte 27Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços de Repetição
Laço ForLaço WhileBreakNext (Continue)Recapitulação - FatorialGeração de Sequências (seq, :)Laços AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosDivisão Inteira e MóduloOperadores de AtribuiçãoRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com PrintCat para SaídaSaída com VariáveisLendo Entrada com readline()Básico de Conversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetro Padrão