Problem 13.*Speed Racing
60/100 точки в Judge.
Втори и четвърти тест гърмят.Не намирам проблема.
Щеше да е хубаво , след около 50 опита да мине нещо в Judge , да се отключват скритите тестове , за да можем да си намираме грешките сами.
60/100 точки в Judge.
Втори и четвърти тест гърмят.Не намирам проблема.
Щеше да е хубаво , след около 50 опита да мине нещо в Judge , да се отключват скритите тестове , за да можем да си намираме грешките сами.
<?php
class Car
{
private $model;
private $fuelAmount;
private $fuelCostForKilometer;
private $distance;
/**
* Car constructor.
* @param $model
* @param $fuelAmount
* @param $fuelCostForKilometer
* @param $distance
*/
public function __construct(string $model, float $fuelAmount, float $fuelCostForKilometer, $distance = 0)
{
$this->setModel($model);
$this->setFuelAmount($fuelAmount);
$this->setFuelCostForKilometer($fuelCostForKilometer);
$this->setDistance();
}
/**
* @return string
*/
public function getModel(): string
{
return $this->model;
}
/**
* @param string $model
*/
public function setModel(string $model): void
{
$this->model = $model;
}
/**
* @return float
*/
public function getFuelAmount(): float
{
return $this->fuelAmount;
}
/**
* @param float $fuelAmount
*/
public function setFuelAmount(float $fuelAmount): void
{
$this->fuelAmount = $fuelAmount;
}
/**
* @return float
*/
public function getFuelCostForKilometer(): float
{
return $this->fuelCostForKilometer;
}
/**
* @param float $fuelCostForKilometer
*/
public function setFuelCostForKilometer(float $fuelCostForKilometer): void
{
$this->fuelCostForKilometer = $fuelCostForKilometer;
}
/**
* @return float
*/
public function getDistance(): float
{
return $this->distance;
}
/**
* @param float $distance
*/
public function setDistance($distance = 0): void
{
$this->distance = $distance;
}
public function driveCar(float $driveDistance): bool
{
if ($this->getFuelCostForKilometer() * $driveDistance <= $this->getFuelAmount()) {
// $this->setFuelAmount($this->getFuelAmount() - $this->getFuelCostForKilometer() * $driveDistance);
$this->setFuelAmount(round($this->getFuelAmount() - $this->getFuelCostForKilometer() * $driveDistance), 2);
$this->setDistance($this->getDistance() + $driveDistance);
return true;
}
return false;
}
public function __toString(): string
{
$fuel = number_format($this->getFuelAmount(), 2, ".", "");
return "{$this->getModel()} {$fuel} {$this->getDistance()}" . PHP_EOL;
}
}
$n = intval(readline());
// require "Car.php";
$cars = [];
for($i = 0; $i < $n; $i++){
list($model, $fuelAmount, $fuelCostForKilometer) = explode(" ", readline());
$currentCar = new Car($model, $fuelAmount, $fuelCostForKilometer);
$cars[$model] = $currentCar;
}
while(($input = readline()) != "End"){
list($instruction, $carModel, $driveDistance) = explode(" ", $input);
$result = $cars[$carModel]->driveCar($driveDistance);
if(!$result){
echo "Insufficient fuel for the drive" . PHP_EOL;
}
}
foreach ($cars as $car){
echo $car;
}
Горното е едно чуждо решение, което леко преправих да мине на 100%, оказа се, че в твоето 2 проблемни теста са закръгляне при всяка операция с горивото и number_format последващите параметри(десетична точка). Ето и рефактор на твоето решение, пооправил съм класа да има само необходимата функционалност: