diff --git a/solutions/go/need-for-speed/1/need_for_speed.go b/solutions/go/need-for-speed/1/need_for_speed.go new file mode 100644 index 0000000..69e02a5 --- /dev/null +++ b/solutions/go/need-for-speed/1/need_for_speed.go @@ -0,0 +1,43 @@ +package speed + +// TODO: define the 'Car' type struct +type Car struct{ + battery int + batteryDrain int + speed int + distance int +} +// NewCar creates a new remote controlled car with full battery and given specifications. +func NewCar(speed, batteryDrain int) Car { + return Car{ + speed: speed, + batteryDrain: batteryDrain, + battery: 100, + } +} + +type Track struct{ + distance int +} +// NewTrack creates a new track +func NewTrack(distance int) Track { + return Track{ + distance: distance, + } +} + + +// Drive drives the car one time. If there is not enough battery to drive one more time, +// the car will not move. +func Drive(car Car) Car { + if car.battery >= 10{ + car.distance += car.speed + car.battery -= car.batteryDrain + } + return car +} +// CanFinish checks if a car is able to finish a certain track. +func CanFinish(car Car, track Track) bool { + maxDistance := ((car.battery/car.batteryDrain)*car.speed) + return maxDistance >= track.distance +}