3v4l.org

run code in 300+ PHP versions simultaneously
<?php $tests = <<<EOL 1+2i+3j+4k => [1 2 3 4] -1+3i-3j+7k => [-1 3 -3 7] -1-4i-9j-2k => [-1 -4 -9 -2] 17-16i-15j-14k => [17 -16 -15 -14] 7+2i => [7 2 0 0] 2i-6k => [0 2 0 -6] 1-5j+2k => [1 0 -5 2] 3+4i-9k => [3 4 0 -9] 42i+j-k => [0 42 1 -1] 6-2i+j-3k => [6 -2 1 -3] 1+i+j+k => [1 1 1 1] -1-i-j-k => [-1 -1 -1 -1] 16k-20j+2i-7 => [-7 2 -20 16] i+4k-3j+2 => [2 1 -3 4] 5k-2i+9+3j => [9 -2 3 5] 5k-2j+3 => [3 0 -2 5] 1.75-1.75i-1.75j-1.75k => [1.75 -1.75 -1.75 -1.75] 2.0j-3k+0.47i-13 => [-13 0.47 2.0 -3] 5.6-3i => [5.6 -3 0 0] k-7.6i => [0 -7.6 0 1] 0 => [0 0 0 0] 0j+0k => [0 0 0 0] -0j => [0 0 0 0] 1-0k => [1 0 0 0] EOL; $lines = explode("\n", $tests); foreach($lines as $line) { list($test, $result) = explode('=>', $line); $test = trim($test); $result = preg_replace("/\s+/", ",", trim($result)); // Fake stdin $argv[1] = $test; // Golfed solution $a=[''=>0,'i'=> 0,'j'=>0,'k'=>0]; preg_match_all("/([-+]?)(\d*(\.\d+)?)([ijk]?)/",$argv[1],$m,2); foreach($m as$n)if($n[0])$a[$n[4]]=$n[1].($n[2]===''?1:$n[2]); echo "Test: " . $test, "\n"; echo "Expect: " . $result, "\n"; echo "Actual: [" . implode(',', $a), "]\n"; echo "\n"; }

preferences:
59.41 ms | 402 KiB | 5 Q