src/GridHelpers.php
<?php namespace Davaxi\Takuzu; /** * Class GridHelpers * @package Davaxi\Takuzu */class GridHelpers{ /** * @param $value * @return int */ public static function getReverseValue($value) { if ($value === Grid::ONE) { return Grid::ZERO; } if ($value === Grid::ZERO) { return Grid::ONE; }Missing class import via use statement (line '23', column '19'). throw new \InvalidArgumentException('Not exist reverse value for undefined'); } /** * @param $value * @return string */ public static function getValueLabel($value) { if ($value === Grid::ONE) { return '1'; } if ($value === Grid::ZERO) { return '0'; } if ($value === Grid::UNDEFINED) { return '.'; }Missing class import via use statement (line '41', column '19'). throw new \UnexpectedValueException('Unknown value: ' . $value); } /** * @param array $line * @return array */ public static function getMissingLineValueDistribution(array $line) { $count = count($line); $needValue = $count / 2; $zeroValues = static::getZeroLineValues($line); $oneValues = static::getOneLineValues($line); return array( Grid::ZERO => $needValue - count($zeroValues), Grid::ONE => $needValue - count($oneValues), ); } /** * @param array $line * @return array */Method `getUndefinedRangeLine` has 28 lines of code (exceeds 25 allowed). Consider refactoring.
Function `getUndefinedRangeLine` has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring. public static function getUndefinedRangeLine(array $line) { $valuesPositions = static::getUndefinedLinePositions($line); $ranges = array(); $firstRangeIndex = null; $currentRangeIndex = null; foreach ($valuesPositions as $valuePosition) { if (is_null($firstRangeIndex)) { $firstRangeIndex = $valuePosition; $currentRangeIndex = $valuePosition; continue; } if ($valuePosition === ($currentRangeIndex + 1)) { $currentRangeIndex++; continue; } $ranges[] = array( 'min' => $firstRangeIndex, 'max' => $currentRangeIndex ); $firstRangeIndex = $valuePosition; $currentRangeIndex = $valuePosition; } if (!is_null($firstRangeIndex)) { $ranges[] = array( 'min' => $firstRangeIndex, 'max' => $currentRangeIndex ); } return $ranges; } /** * @param array $line * @return mixed */ public static function getUndefinedLinePositions(array $line) { $values = static::getUndefinedLineValues($line); return array_keys($values); } /** * @param array $line * @return array */ public static function getUndefinedLineValues(array $line) { return array_filter($line, function($value) { return $value === Grid::UNDEFINED; }); } /** * @param array $line * @return array */ public static function getZeroLineValues(array $line) { return array_filter($line, function($value) { return $value === Grid::ZERO; }); } /** * @param array $line * @return array */ public static function getOneLineValues(array $line) { return array_filter($line, function($value) { return $value === Grid::ONE; }); } }