Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Car
- {
- /**
- * @var string
- */
- private $model;
- /**
- * @var string
- */
- private $engine;
- /**
- * @var int
- */
- private $weight;
- /**
- * @var string
- */
- private $color;
- public function __construct(string $model, Engine $engine)
- {
- $this->model = $model;
- $this->engine = $engine;
- $this->weight = 'n/a';
- $this->color = 'n/a';
- }
- public function setWeight(int $weight): void
- {
- $this->weight = $weight;
- }
- public function setColor(string $color): void
- {
- $this->color = $color;
- }
- public function __toString()
- {
- return "{$this->model}:\n{$this->engine} Weight: {$this->weight}\n Color: {$this->color}\n";
- }
- }
- class Engine
- {
- /**
- * @var string
- */
- private $model;
- /**
- * @var int
- */
- private $power;
- /**
- * @var int
- */
- private $displacement;
- /**
- * @var string
- */
- private $efficiency;
- public function __construct(string $model, int $power)
- {
- $this->model = $model;
- $this->power = $power;
- $this->displacement = 'n/a';
- $this->efficiency = 'n/a';
- }
- public function setDisplacement(int $displacement): void
- {
- $this->displacement = $displacement;
- }
- public function setEfficiency(string $efficiency): void
- {
- $this->efficiency = $efficiency;
- }
- public function getModel()
- {
- return $this->model;
- }
- public function __toString()
- {
- return " {$this->model}: \n Power: {$this->power}\n Displacement: {$this->displacement}\n Efficiency: {$this->efficiency}\n";
- }
- }
- $engineNumber = intval(readline());
- $engines = [];
- $cars = [];
- for($i = 0; $i < $engineNumber; $i++) {
- $engineData = explode(" ", readline());
- $engineModel = $engineData[0];
- $enginePower = $engineData[1];
- $engine = new Engine($engineModel, $enginePower);
- $displacement = $engineData[2];
- if (count($engineData) === 3) {
- if(is_numeric($displacement)) {
- $engine->setDisplacement(intval($displacement));
- } else {
- $engine->setEfficiency($engineData[2]);
- }
- }
- if (count($engineData) === 4) {
- $engine->setDisplacement(intval($displacement));
- $engine->setEfficiency($engineData[3]);
- }
- $engines[] = $engine;
- }
- $carNumber = intval(readline());
- for ($i = 0; $i < $carNumber; $i++) {
- $carData = explode(" ", readline());
- $carModel = $carData[0];
- $engineModel = $carData[1];
- $engine = array_filter($engines, function(Engine $currentEngine) use($engineModel){
- return $currentEngine->getModel() === $engineModel;
- });
- $engine = array_pop($engine);
- $car = new Car($carModel, $engine);
- if (count($carData) === 3) {
- if(is_numeric($carData[2])) {
- $car->setWeight(intval($engineData[2]));
- } else {
- $car->setColor($carData[2]);
- }
- }
- if (count($carData) === 4) {
- $car->setWeight(intval($carData[2]));
- $car->setColor($carData[3]);
- }
- $cars[] = $car;
- }
- foreach ($cars as $car) {
- echo $car;
- }
Advertisement
Add Comment
Please, Sign In to add comment