Решить задачу на php "Прямоугольник"

Вся суть в картинке. Нужно написать функцию. Можно и на js.

а


Ответы (1 шт):

Автор решения: Евгений Тихии

Ну реально было сложновато.. (теорема Пика, если кому интересно)


/**
 * Side-horizontal * side-vertical + All-nodes - 1 = Rectanle Lines     (3 * 3 + 4 - 1 = 12)
 * Side-horizontal * side-vertical = Rectanle Lines + 1 - All-nodes     (3 * 3 = 12 + 1 - 4)
 * 
 * @param int $K | Nodes
 * @param int $N | Lines
 * 
 * @return array
 */
function getRectangleSize (int $K, int $N): array {
    $rectangleSize  = $N + 1 - $K;
    $rectangleSide = [];

    for ($side = 2; $side < $rectangleSize; $side++) {

        if (is_int ($rectangleSize / $side)) {
            $rectangleSide['first'] = $side;
            $rectangleSide['second'] = $rectangleSize / $side;

            if ($K == (($rectangleSide['first'] - 1) * ($rectangleSide['second'] - 1))) {
                return $rectangleSide;
            }
        }
    }
}

echo '<pre>';
var_dump (getRectangleSize (6, 17));
var_dump (getRectangleSize (8, 22));
var_dump (getRectangleSize (12, 31));
var_dump (getRectangleSize (14, 37));

Выход:

array(2) {
  ["first"]=>
  int(3)
  ["second"]=>
  int(4)
}

array(2) {
  ["first"]=>
  int(3)
  ["second"]=>
  int(5)
}

array(2) {
  ["first"]=>
  int(4)
  ["second"]=>
  int(5)
}

array(2) {
  ["first"]=>
  int(3)
  ["second"]=>
  int(8)
}
→ Ссылка