@ 2019-11-26T16:33:59Z <?php
error_reporting(-1);
header("Content-Type: text/plain; charset=utf-8");
mb_internal_encoding('utf-8');
abstract class Employee
{
public $boss;
public $rank;
public function __construct($boss, $rank)
{
$this->boss = $boss;
$this->rank = $rank;
}
function getSalary()
{
if ($this->rank == 1) {
$rankFactor = 1;
} elseif ($this->rank == 2) {
$rankFactor = 1.25;
} elseif ($this->rank == 3) {
$rankFactor = 1.5;
} else
return "Ошибка ранга!";
if ($this->boss == 0) {
$bossFactor = 1;
} elseif ($this->boss == 1) {
$bossFactor = 2;
} else
return "Ошибка иерархии!";
return $this->rate * $rankFactor * $bossFactor;
}
function getReports()
{
if ($this->boss == 0) {
$bossFactor = 1;
} elseif ($this->boss == 1) {
$bossFactor = 0;
} else
return "Ошибка иерархии!";
return $this->reports * $bossFactor;
}
function getCoffee()
{
if ($this->boss == 0) {
$bossFactor = 1;
} elseif ($this->boss == 1) {
$bossFactor = 2;
} else
return "Ошибка иерархии!";
return $this->coffee * $bossFactor;
}
}
class Manager extends Employee
{
public $rate = 500;
public $coffee = 20;
public $reports = 200;
}
class Marketer extends Employee
{
public $rate = 400;
public $coffee = 15;
public $reports = 150;
}
class Engineer extends Employee
{
public $rate = 200;
public $coffee = 5;
public $reports = 50;
}
class Analyst extends Employee
{
public $rate = 800;
public $coffee = 50;
public $reports = 5;
}
class Department
{
public $departmentName;
public $departamentEmployees;
public function __construct($departmentName)
{
$this->departmentName = $departmentName;
}
public function getTotalEmployees()
{
return count($this->departamentEmployees);
}
public function getTotalSalary()
{
$totalSalary = 0;
foreach ($this->departamentEmployees as $employee) {
$totalSalary += $employee->getSalary();
}
return $totalSalary;
}
public function getTotalCoffee()
{
$totalCoffee = 0;
foreach ($this->departamentEmployees as $employee) {
$totalCoffee += $employee->getCoffee();
}
return $totalCoffee;
}
public function getTotalReports()
{
$totalReports = 0;
foreach ($this->departamentEmployees as $employee) {
$totalReports += $employee->getReports();
}
return $totalReports;
}
public function getAverageMoneyPerPage()
{
return round($this->getTotalSalary() / $this->getTotalReports());
}
}
$purchasing = new Department("Закупок");
$sales = new Department("Продаж");
$advertising = new Department("Рекламы");
$logistics = new Department("Логистики");
$purchasing->departamentEmployees = [
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 2),
$employee = new Manager(0, 2),
$employee = new Manager(0, 2),
$employee = new Manager(0, 3),
$employee = new Manager(0, 3),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Manager(1, 2)
];
$sales->departamentEmployees = [
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Analyst(0, 1),
$employee = new Analyst(0, 1),
$employee = new Analyst(0, 1),
$employee = new Analyst(0, 2),
$employee = new Analyst(0, 2),
$employee = new Marketer(1, 2)
];
$advertising->departamentEmployees = [
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 1),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Marketer(0, 2),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Engineer(0, 1),
$employee = new Engineer(0, 1),
$employee = new Marketer(1, 3)
];
$logistics->departamentEmployees = [
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 1),
$employee = new Manager(0, 2),
$employee = new Manager(0, 2),
$employee = new Manager(0, 2),
$employee = new Manager(0, 2),
$employee = new Manager(0, 2),
$employee = new Engineer(0, 1),
$employee = new Engineer(0, 1),
$employee = new Engineer(0, 1),
$employee = new Engineer(0, 1),
$employee = new Engineer(0, 1),
$employee = new Manager(1, 1)
];
$departamentsList = [$purchasing, $sales, $advertising, $logistics];
function padLeft($string, $length)
{
$str = "";
if (mb_strlen($string) < $length) {
$str = str_repeat(" ", $length - mb_strlen($string)) . $string;
}
return $str;
}
function padRight($string, $length)
{
$str = "";
if (mb_strlen($string) < $length) {
return $string . str_repeat(" ", $length - mb_strlen($string));
}
return $str;
}
$col1 = 30;
$col2 = 8;
$col3 = 8;
$col4 = 8;
$col5 = 8;
$col6 = 12;
$colLength = $col1 + $col2 + $col3 + $col4 + $col5 + $col6;
echo str_repeat("-", $colLength + 1) . "\n";
echo padRight("Департамент", $col1) .
padLeft("сотр.", $col2) .
padLeft("тугр.", $col3) .
padLeft("кофе", $col4) .
padLeft("стр.", $col5) .
padLeft("тугр./стр.", $col6) . "\n";
echo str_repeat("-", $colLength + 1) . "\n";
foreach ($departamentsList as $department) {
echo padRight($department->departmentName, $col1) .
padLeft($department->getTotalEmployees(), $col2) .
padLeft($department->getTotalSalary(), $col3) .
padLeft($department->getTotalCoffee(), $col4) .
padLeft($department->getTotalReports(), $col5) .
padLeft($department->getAverageMoneyPerPage(), $col6) . "\n";
}
echo "\n";
$allEmployees = 0;
$allSalary = 0;
$allCoffee = 0;
$allReports = 0;
$allAverageMoneyPerPage = 0;
foreach ($departamentsList as $department) {
$allEmployees += $department->getTotalEmployees();
$allSalary += $department->getTotalSalary();
$allCoffee += $department->getTotalCoffee();
$allReports += $department->getTotalReports();
$allAverageMoneyPerPage += $department->getAverageMoneyPerPage();
}
echo padRight("Среднее", $col1) .
padLeft(round($allEmployees / count($departamentsList)), $col2) .
padLeft(round($allSalary / count($departamentsList)), $col3) .
padLeft(round($allCoffee / count($departamentsList)), $col4) .
padLeft(round($allReports / count($departamentsList)), $col5) .
padLeft(round($allAverageMoneyPerPage / count($departamentsList)), $col6) . "\n";
echo padRight("Всего", $col1) .
padLeft(round($allEmployees), $col2) .
padLeft(round($allSalary), $col3) .
padLeft(round($allCoffee), $col4) .
padLeft(round($allReports), $col5) .
padLeft(round($allAverageMoneyPerPage), $col6) . "\n";
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.6 0.015 0.000 18.43 8.3.5 0.010 0.006 18.31 8.3.4 0.011 0.011 19.07 8.3.3 0.012 0.003 19.14 8.3.2 0.000 0.008 21.24 8.3.1 0.008 0.000 20.46 8.3.0 0.008 0.000 20.79 8.2.18 0.007 0.007 18.05 8.2.17 0.007 0.011 22.96 8.2.16 0.006 0.009 20.68 8.2.15 0.007 0.003 24.18 8.2.14 0.008 0.000 24.66 8.2.13 0.004 0.004 26.16 8.2.12 0.009 0.000 21.03 8.2.11 0.003 0.007 21.13 8.2.10 0.013 0.000 18.21 8.2.9 0.000 0.008 18.28 8.2.8 0.003 0.006 18.28 8.2.7 0.003 0.006 18.26 8.2.6 0.006 0.003 18.28 8.2.5 0.003 0.006 18.10 8.2.4 0.003 0.006 19.84 8.2.3 0.009 0.000 19.69 8.2.2 0.003 0.006 18.47 8.2.1 0.008 0.000 19.26 8.2.0 0.003 0.005 19.65 8.1.28 0.012 0.003 25.92 8.1.27 0.008 0.000 22.59 8.1.26 0.003 0.005 26.35 8.1.25 0.005 0.003 28.09 8.1.24 0.009 0.000 22.50 8.1.23 0.009 0.003 22.71 8.1.22 0.005 0.003 18.16 8.1.21 0.003 0.006 19.09 8.1.20 0.003 0.006 17.73 8.1.19 0.003 0.006 17.73 8.1.18 0.004 0.004 18.10 8.1.17 0.008 0.000 19.05 8.1.16 0.000 0.008 20.57 8.1.15 0.002 0.005 19.10 8.1.14 0.008 0.000 17.62 8.1.13 0.008 0.000 20.44 8.1.12 0.004 0.004 17.75 8.1.11 0.009 0.000 17.78 8.1.10 0.006 0.003 17.71 8.1.9 0.008 0.004 17.75 8.1.8 0.000 0.011 17.75 8.1.7 0.007 0.000 17.61 8.1.6 0.005 0.003 17.85 8.1.5 0.012 0.000 17.91 8.1.4 0.006 0.003 17.87 8.1.3 0.004 0.004 17.98 8.1.2 0.005 0.005 17.83 8.1.1 0.000 0.008 17.91 8.1.0 0.003 0.007 17.75 8.0.30 0.003 0.006 21.50 8.0.29 0.006 0.003 17.00 8.0.28 0.008 0.000 18.80 8.0.27 0.004 0.004 17.10 8.0.26 0.003 0.003 20.43 8.0.25 0.000 0.008 17.34 8.0.24 0.000 0.008 17.30 8.0.23 0.004 0.004 17.35 8.0.22 0.003 0.006 17.14 8.0.21 0.002 0.005 17.25 8.0.20 0.006 0.003 17.19 8.0.19 0.004 0.004 17.33 8.0.18 0.003 0.006 17.23 8.0.17 0.006 0.003 17.28 8.0.16 0.005 0.003 17.21 8.0.15 0.004 0.004 17.26 8.0.14 0.000 0.007 17.29 8.0.13 0.000 0.007 13.76 8.0.12 0.008 0.000 17.22 8.0.11 0.006 0.003 17.21 8.0.10 0.000 0.008 17.13 8.0.9 0.003 0.006 17.31 8.0.8 0.017 0.002 17.23 8.0.7 0.000 0.008 17.25 8.0.6 0.004 0.004 17.23 8.0.5 0.000 0.008 17.25 8.0.3 0.012 0.012 17.27 8.0.2 0.010 0.010 17.75 8.0.1 0.004 0.004 17.38 8.0.0 0.012 0.006 17.29 7.4.33 0.000 0.006 15.55 7.4.32 0.007 0.000 16.82 7.4.30 0.007 0.000 16.94 7.4.29 0.004 0.004 16.98 7.4.28 0.008 0.003 16.74 7.4.27 0.007 0.000 16.94 7.4.26 0.003 0.003 13.64 7.4.25 0.000 0.007 16.66 7.4.24 0.004 0.004 16.86 7.4.23 0.005 0.003 16.91 7.4.22 0.004 0.004 16.84 7.4.21 0.003 0.014 16.85 7.4.20 0.008 0.000 16.93 7.4.14 0.014 0.010 17.86 7.4.13 0.009 0.012 16.93 7.4.12 0.013 0.013 16.73 7.4.11 0.011 0.007 16.73 7.4.10 0.012 0.006 16.79 7.4.9 0.009 0.009 16.94 7.4.8 0.011 0.012 19.39 7.4.7 0.011 0.007 16.87 7.4.6 0.015 0.006 16.72 7.4.5 0.006 0.009 16.71 7.4.4 0.009 0.009 16.72 7.4.0 0.009 0.006 15.29 7.3.33 0.007 0.000 16.52 7.3.32 0.000 0.006 13.53 7.3.31 0.004 0.004 16.68 7.3.30 0.005 0.003 16.68 7.3.29 0.008 0.009 16.65 7.3.28 0.012 0.012 16.69 7.3.26 0.011 0.007 17.07 7.3.23 0.007 0.011 16.89 7.3.21 0.013 0.006 16.86 7.3.20 0.013 0.006 16.76 7.3.19 0.006 0.012 17.05 7.3.18 0.011 0.006 16.59 7.3.17 0.003 0.022 16.70 7.3.16 0.013 0.003 16.67 7.3.12 0.014 0.006 15.15 7.3.11 0.017 0.004 14.81 7.3.10 0.003 0.013 14.89 7.3.9 0.005 0.013 15.28 7.3.8 0.011 0.005 15.00 7.3.7 0.009 0.013 15.11 7.3.6 0.011 0.009 15.10 7.3.5 0.015 0.009 15.05 7.3.4 0.010 0.015 14.79 7.3.3 0.013 0.008 14.89 7.3.2 0.004 0.014 15.05 7.3.1 0.007 0.015 15.18 7.3.0 0.010 0.006 14.95 7.2.33 0.013 0.007 17.11 7.2.32 0.004 0.015 17.05 7.2.31 0.009 0.010 16.95 7.2.30 0.005 0.013 16.97 7.2.29 0.003 0.015 16.91 7.2.24 0.010 0.014 14.97 7.2.23 0.009 0.009 15.52 7.2.22 0.017 0.003 15.27 7.2.21 0.011 0.009 15.45 7.2.20 0.006 0.012 15.22 7.2.19 0.014 0.008 15.15 7.2.18 0.013 0.014 15.41 7.2.17 0.011 0.018 15.33 7.2.16 0.012 0.012 15.20 7.2.15 0.010 0.010 15.22 7.2.14 0.018 0.007 15.02 7.2.13 0.017 0.008 15.19 7.2.12 0.013 0.006 15.09 7.2.11 0.008 0.016 15.39 7.2.10 0.014 0.007 15.23 7.2.9 0.016 0.006 15.55 7.2.8 0.010 0.013 15.15 7.2.7 0.006 0.019 15.40 7.2.6 0.013 0.007 15.37 7.2.5 0.003 0.017 15.12 7.2.4 0.011 0.011 15.36 7.2.3 0.010 0.015 15.24 7.2.2 0.016 0.003 15.44 7.2.1 0.045 0.003 15.34 7.2.0 0.007 0.014 15.42 7.1.33 0.012 0.004 14.34 7.1.32 0.006 0.011 14.13 7.1.31 0.013 0.008 14.13 7.1.30 0.014 0.009 13.97 7.1.29 0.017 0.006 14.25 7.1.28 0.011 0.012 14.20 7.1.27 0.018 0.004 14.25 7.1.26 0.009 0.009 14.14 7.1.25 0.004 0.017 14.15
preferences:dark mode live preview
23.52 ms | 400 KiB | 5 Q