function testFinalPosition2() { $marsRover = new Rover(); $marsRover->setPlanetSize('5 5'); $marsRover->explore('3 3 E', 'MMRMMRMRRM'); $this->assertEqual($marsRover->getCurrentPosition(), '5 1 E'); }
/** * Форма управления роверами */ public function result() { $input = Input::all(); if (empty($input)) { App::abort(404); } Plateau::getInstance()->setMaxCoordinates($input['plateau']); $rovers = []; foreach ($input['coordinates'] as $key => $coordinates) { try { $rover = new Rover($coordinates); $rovers["Ровер №{$key}"] = ['error' => false, 'message' => $rover->executeCommand($input['command'][$key])->getPosition()]; } catch (Exception $e) { $rovers["Ровер №{$key}"] = ['error' => true, 'message' => $e->getMessage()]; } } $plateauCoordinates = implode(' ', Plateau::getInstance()->getMaxCoordinates()); $this->layout->body = View::make('home.result', compact('rovers', 'plateauCoordinates')); }
public function testRover2() { $rover = new Rover(5, 5); $rover->setPosition(1, 2, Rover::N); $rover->process("MMMMMMMMMMMM"); $this->assertEquals("1 5 N", $rover->getPosition()); $rover->setPosition(3, 2, Rover::S); $rover->process("MLMM"); $this->assertEquals("5 1 E", $rover->getPosition()); }
public function testRoverMove() { $rover = new Rover(2, 5, "N"); $this->assertSame(array(2, 6, "N"), $rover->forward()->getPosition()); $this->assertSame(array(2, 7, "N"), $rover->forward()->getPosition()); $this->assertSame(array(1, 7, "W"), $rover->rotate("L")->forward()->getPosition()); $this->assertSame(array(0, 7, "W"), $rover->forward()->getPosition()); $this->assertSame(array(-1, 7, "W"), $rover->forward()->getPosition()); }
<?php require_once 'class/Rover.php'; // Create new rover and specify planet size. $marsRover = new Rover(); $marsRover->setPlanetSize('5 5'); $marsRover->explore('1 2 N', 'LMLMLMLMM'); echo $marsRover->getCurrentPosition() . "\n";
<?php include_once __DIR__ . "/Plateau.php"; include_once __DIR__ . "/Rover.php"; $plateauSize = []; $roversInputs = []; $handle = fopen("input.txt", "r"); while (($line = fgets($handle)) !== false) { if (!$plateauSize) { list($plateauSize['x'], $plateauSize['y']) = explode(' ', trim($line)); } else { $roverInput = []; list($roverInput['x'], $roverInput['y'], $roverInput['orientation']) = explode(' ', trim($line)); $line = fgets($handle); $roverInput['instructions'] = str_split(trim($line)); $roversInputs[] = $roverInput; } } foreach ($roversInputs as $roverInput) { $rover = new Rover(new Plateau($plateauSize['x'], $plateauSize['y']), $roverInput['x'], $roverInput['y'], $roverInput['orientation'], $roverInput['instructions']); try { $rover->executeInstructions(); print $rover->getInfo() . "\n"; } catch (Exception $e) { print "Error occurred: " . $e->getMessage(); } }
/** * @expectedException UnknownInstructionException */ public function testUnknownInstructionException() { $plateau = new Plateau(5, 5); $rover = new Rover($plateau, 5, 5, Plateau::SOUTH, ['42']); $rover->executeInstructions(); }
/** * {@inheritDoc} */ public function onRoverMove(Rover $rover) { if (!$this->validateCoordinates($rover->getX(), $rover->getY())) { throw new \Exception(sprintf('Rover went out of planet\'s bounds (%d, %d)', $rover->getX(), $rover->getY())); } }