This commit is contained in:
Dennis Eichhorn 2016-10-16 22:42:01 +02:00
parent e47ece41af
commit 4640872d7e
6 changed files with 231 additions and 1 deletions

View File

@ -0,0 +1,67 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright 2013 Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
namespace phpOMS\Datatypes;
use phpOMS\Validation\Base\IbanEnum;
/**
* Tree class.
*
* @category Framework
* @package phpOMS\Datatypes
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*
* @todo : there is a bug with Hungary ibans since they have two k (checksums) in their definition
*/
class BinaryTree extends Tree
{
public static function invert($list) : BinaryTree
{
if (empty($list->getNodes())) {
return $list;
}
$left = $list->getLeft();
$list->setLeft($list->invert($list->nodes[1]));
$list->setRight($list->invert($left));
return $list;
}
public function getLeft() {
return $this->nodes[0];
}
public function getRight() {
return $this->nodes[1];
}
public function setLeft(BinaryTree $left) {
$this->nodes[0] = $left;
}
public function setRight(BinaryTree $right) {
$this->nodes[1] = $right;
}
public function inOrder() {
}
}

0
Stdlib/Graph/Graph.php Normal file
View File

97
Stdlib/Graph/Tree.php Normal file
View File

@ -0,0 +1,97 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright 2013 Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
namespace phpOMS\Datatypes;
use phpOMS\Validation\Base\IbanEnum;
/**
* Tree class.
*
* @category Framework
* @package phpOMS\Datatypes
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*
* @todo : there is a bug with Hungary ibans since they have two k (checksums) in their definition
*/
class Tree extends Graph
{
private $nodes = [];
public function getMaxDepth() : int
{
$depth = [0];
foreach($nodes as $node) {
$depth[] = $node->getMaxDepth();
}
return max($depth) + 1;
}
public function getMinDepth() : int
{
$depth = [0];
foreach($nodes as $node) {
$depth[] = $node->getMinDepth();
}
return min($depth) + 1;
}
public function postOrder()
{
}
public function preOrder()
{
}
public function levelOrder()
{
}
public function levelOrder2()
{
}
public function verticalOrder()
{
}
public function isLeaf() : bool
{
}
public function isSymmetric() : bool {
}
public function getDimension() : int
{
}
}

View File

@ -0,0 +1,39 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright 2013 Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
namespace phpOMS\Stdlib\Queue;
use phpOMS\Datatypes\Enum;
/**
* Account type enum.
*
* @category Framework
* @package phpOMS\Stdlib
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
abstract class PrioirtyMode extends Enum
{
const FIFO = 0;
const LIFO = 0;
const EARLIEST_DEADLINE = 0;
const SHORTEST_JOB = 0;
const HIGHEST = 0;
const LOWEST = 0;
}

View File

@ -45,13 +45,15 @@ class PriorityQueue implements \Countable, \Serializable
*/
private $queue = [];
private $mode = 0;
/**
* Constructor.
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function __construct()
public function __construct($mode = '')
{
}

View File

@ -246,6 +246,18 @@ class ArrayUtils
return trim($args[$key + 1], '" ');
}
/**
* Flatten array
*
* Reduces multi dimensional array to one dimensional array. Flatten tries to maintain the index as far as possible.
*
* @param array $array Multi dimensional array to flatten
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public static function arrayFlatten(array $array) : array
{
@ -265,6 +277,9 @@ class ArrayUtils
return $flat;
}
/**
* todo: what did i smoke? what is this?
*/
public static function arraySum(array $array, int $start = 0, int $count = 0)
{
$count = $count === 0 ? count($array) : $count;
@ -281,6 +296,16 @@ class ArrayUtils
return $sum;
}
/**
* Sum multi dimensional array
*
* @param array $array Multi dimensional array to flatten
*
* @return mixed
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public static function arraySumRecursive(array $array)
{
return array_sum(self::arrayFlatten($array));