Tracks
/
Go
Go
/
Ejercicios
/
Ensamblaje de autos
Ensamblaje de autos

Ensamblaje de autos

Ejercicio de aprendizaje

Introducción

Números

Go incluye tipos numéricos básicos que pueden representar conjuntos de valores enteros o de punto flotante. Hay diferentes tipos según el tamaño del valor que necesites y la arquitectura de la computadora donde se ejecute la aplicación (por ejemplo, de 32 y 64 bits).

Para este ejercicio solo vas a trabajar con:

  • int: por ejemplo, 0, 255, 2147483647. Un entero con signo de al menos 32 bits de tamaño (rango de valores: -2147483648 a 2147483647). Pero esto dependerá de la arquitectura del sistema. La mayoría de las computadoras modernas son de 64 bits, por lo tanto int tendrá un tamaño de 64 bits (rango de valores: -9223372036854775808 a 9223372036854775807).

  • float64: por ejemplo, 0.0, 3.14. Contiene el conjunto de todos los números de punto flotante de 64 bits.

  • uint: por ejemplo, 0, 255. Un entero sin signo que tiene el mismo tamaño que int (rango de valores: de 0 a 4294967295 para 32 bits y de 0 a 18446744073709551615 para 64 bits).

Los números se pueden convertir a otros tipos numéricos mediante la conversión de tipos.

Operadores aritméticos

Go admite muchos operadores aritméticos estándar:

Operador Ejemplo
+ 4 + 6 == 10
- 15 - 10 == 5
* 2 * 3 == 6
/ 13 / 3 == 4
% 13 % 3 == 1

En la división de enteros, se descarta el residuo (por ejemplo, 5 / 2 == 2).

Go tiene asignación abreviada para los operadores anteriores (por ejemplo, a += 5 es una forma corta de a = a + 5). Go también admite las sentencias de incremento y decremento ++ y -- (por ejemplo, a++).

Conversión entre tipos

La conversión entre tipos se hace mediante una función con el nombre del tipo al que quieres convertir. Por ejemplo:

var x int = 42 // x has type int
f := float64(x) // f has type float64 (ie. 42.0)
var y float64 = 11.9 // y has type float64
i := int(y) // i has type int (ie. 11)

Operaciones aritméticas entre tipos diferentes

En muchos lenguajes puedes realizar operaciones aritméticas con variables de tipos diferentes, pero en Go esto da un error. Por ejemplo:

var x int = 42

// this line produces an error
value := float32(2.0) * x // invalid operation: mismatched types float32 and int

// you must convert int type to float32 before performing arithmetic operation
value := float32(2.0) * float32(x)

Instrucciones

En este ejercicio vas a escribir código para analizar la producción en una fábrica de autos.

1. Calcula la cantidad de autos funcionales producidos por hora

Los autos se producen en una línea de ensamblaje. La línea de ensamblaje tiene cierta velocidad, que se puede cambiar. Cuanto más rápida es la velocidad de la línea de ensamblaje, más autos se producen. Sin embargo, cambiar la velocidad de la línea de ensamblaje también cambia la cantidad de autos que se producen con éxito, es decir, autos sin errores en su producción.

Implementa una función que reciba la cantidad de autos producidos por hora y la tasa de éxito, y calcule la cantidad de autos exitosos fabricados por hora. La tasa de éxito se da como un porcentaje, de 0 a 100:

CalculateWorkingCarsPerHour(1547, 90)
// => 1392.3

Nota: el valor de retorno debe ser un float64.

2. Calcula la cantidad de autos funcionales producidos por minuto

Implementa una función que reciba la cantidad de autos producidos por hora y la tasa de éxito, y calcule cuántos autos se producen con éxito cada minuto:

CalculateWorkingCarsPerMinute(1105, 90)
// => 16

Nota: el valor de retorno debe ser un int.

3. Calcula el costo de producción

Normalmente, producir cada auto cuesta $10,000 de forma individual, sin importar si es exitoso o no. Pero con un poco de planificación, se pueden producir 10 autos juntos por $95,000.

Por ejemplo, se pueden producir 37 autos de la siguiente manera: 37 = 3 x grupos de diez + 7 autos individuales

Entonces, el costo de 37 autos es: 3*95,000+7*10,000=355,000

Implementa la función CalculateCost que calcula el costo de producir una cantidad de autos, sin importar si son exitosos:

CalculateCost(37)
// => 355000

CalculateCost(21)
// => 200000

Nota: el valor de retorno debe ser un uint.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Go Exercism

¿Todo listo para empezar Ensamblaje de autos?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.