Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador Distance. Mostrar todas as postagens
Mostrando postagens com marcador Distance. Mostrar todas as postagens

sexta-feira, 9 de junho de 2023

URI (BEECROWD) - 1016 - Distance (Distância) - Iniciante - Haskell

Novo desafio resolvido em Haskell! O problema n. 1016 é o problema da distância (título Distance/Distância).
Esse exercício é muito fácil de se resolver e serve mais para quem quer se familiarizar com a linguagem ou está dando os primeiros passos em programação.

Vamos ver como resolvi esse exercício? As informações sobre ele estão abaixo, na sequência desse post.

Plataforma: URI (BEECROWD)
Problema1016

Enunciado:
Two cars (X and Y) leave in the same direction. The car X leaves with a constant speed of 60 km/h and the car Y leaves with a constant speed of 90 km / h.

In one hour (60 minutes) the car Y can get a distance of 30 kilometers from the X car, in other words, it can get away one kilometer for each 2 minutes.

Read the distance (in km) and calculate how long it takes (in minutes) for the car Y to take this distance in relation to the other car.

Linguagem: Haskell

Solução:

Basicamente precisamos apenas dobrar a distância e assim teremos os minutos necessários.

Nosso código precisa estar na função principal, que é chamada de main. A função main é do tipo IO (). Essa primeira linha é opcional, se não utilizarmos ela o compilador irá inferir o tipo da função.

Na segunda linha iniciamos a função main já colocando o seu código dentro de um bloco do, pois ele é uma sequência de duas ou mais instruções.

No nosso bloco do, temos primeiramente a leitura de um valor inteiro, que é a distância. Como este valor é lido pela entrada padrão, utilizamos o tipo IO Int. A linha seguinte já imprime a resposta. Para isso usamos putStrLn, que quebra a linha ao final do texto, e como parâmetro informamos a mensagem no formato "distancia*2 minutos". Para obter o valor certo de distancia*2 (o dobro da distância), precisamos converter o resultado da expressão para String, o que fazemos com a função show().

Obviamente esta resposta não é a única possível; poderíamos ter usado tipo Integer ou mesmo ter resolvido sem multiplicação (distance+distance era uma possibilidade).

E aí? O que achou desta solução?

Veja o código abaixo e até a próxima!

main :: IO ()
main = do 
   distance <- readLn :: IO Int
   putStrLn (show(distance * 2) ++ " minutos")

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas