예제 #1
0
<?php

/**
 * Created by PhpStorm.
 * User: Admin
 * Date: 2/17/2016
 * Time: 8:55 PM
 */
// последний аргумент это число на которое мы изменяем предпоследний элллемнт
function operate()
{
    $nums = func_get_args();
    $v = $nums[count($nums) - 1];
    $t = $nums[count($nums) - 2];
    if ($t) {
        foreach ($nums as &$num) {
            $num += $v;
        }
    } else {
        foreach ($nums as &$num) {
            $num -= $v;
        }
    }
    return $nums;
}
print_r(operate(1, 2, 1, 2, 1, 0, 10));
echo '</br>';
예제 #2
0
}
//echo newSum(1,1,1,1,2,3,6,5,4,7,1);
/*последний элемент - 0\1 (отнимать\плюсовать)
предпоследний элемент - на сколько
последние два элемента не трогаем
возвращаем массив*/
function operate(...$nums)
{
    //$nums=func_get_args();
    $type = $nums[count($nums) - 1];
    $val = $nums[count($nums) - 2];
    if ($type) {
        foreach ($nums as $k => $v) {
            if ($k >= count($nums) - 2) {
                break;
            }
            $nums["{$k}"] += $val;
        }
    } else {
        foreach ($nums as $k => $v) {
            if ($k >= count($nums) - 2) {
                break;
            }
            $nums["{$k}"] -= $val;
        }
    }
    return $nums;
}
//echo newSum(1,1,1,1,2,3,6,5,4,7,1);
print_r(operate(1, 1, 1, 1, 2, 3, 6, 5, 4, 10, 0));
$c = ["2", "1", "+"];
function operate($array)
{
    $stack = array();
    $operations = ['+', '-', '*', '/'];
    foreach ($array as $i) {
        if (!in_array($i, $operations)) {
            $stack[] = $i;
        } else {
            $last = array_pop($stack);
            $prev = array_pop($stack);
            if ($i == '+') {
                $stack[] = $prev + $last;
            }
            if ($i == '-') {
                $stack[] = $prev - $last;
            }
            if ($i == '*') {
                $stack[] = $prev * $last;
            }
            if ($i == '/') {
                $stack[] = $prev / $last;
            }
        }
    }
    print_r($stack);
}
operate($a);
operate($b);
operate($c);