3v4l.org

run code in 500+ 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"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 7, Position 2 = 63
Branch analysis from position: 7
2 jumps found. (Code = 78) Position 1 = 8, Position 2 = 63
Branch analysis from position: 8
2 jumps found. (Code = 77) Position 1 = 34, Position 2 = 50
Branch analysis from position: 34
2 jumps found. (Code = 78) Position 1 = 35, Position 2 = 50
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 37, Position 2 = 49
Branch analysis from position: 37
2 jumps found. (Code = 43) Position 1 = 42, Position 2 = 44
Branch analysis from position: 42
1 jumps found. (Code = 42) Position 1 = 46
Branch analysis from position: 46
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 44
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 49
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
Branch analysis from position: 50
Branch analysis from position: 63
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 63
filename:       /in/gODeF
function name:  (null)
number of ops:  65
compiled vars:  !0 = $tests, !1 = $lines, !2 = $line, !3 = $test, !4 = $result, !5 = $argv, !6 = $a, !7 = $m, !8 = $n
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                       !0, '1%2B2i%2B3j%2B4k+++++++++++++%3D%3E+%5B1+2+3+4%5D%0A-1%2B3i-3j%2B7k++++++++++++%3D%3E+%5B-1+3+-3+7%5D%0A-1-4i-9j-2k++++++++++++%3D%3E+%5B-1+-4+-9+-2%5D%0A17-16i-15j-14k+++++++++%3D%3E+%5B17+-16+-15+-14%5D%0A7%2B2i+++++++++++++++++++%3D%3E+%5B7+2+0+0%5D%0A2i-6k++++++++++++++++++%3D%3E+%5B0+2+0+-6%5D%0A1-5j%2B2k++++++++++++++++%3D%3E+%5B1+0+-5+2%5D%0A3%2B4i-9k++++++++++++++++%3D%3E+%5B3+4+0+-9%5D%0A42i%2Bj-k++++++++++++++++%3D%3E+%5B0+42+1+-1%5D%0A6-2i%2Bj-3k++++++++++++++%3D%3E+%5B6+-2+1+-3%5D%0A1%2Bi%2Bj%2Bk++++++++++++++++%3D%3E+%5B1+1+1+1%5D%0A-1-i-j-k+++++++++++++++%3D%3E+%5B-1+-1+-1+-1%5D%0A16k-20j%2B2i-7+++++++++++%3D%3E+%5B-7+2+-20+16%5D%0Ai%2B4k-3j%2B2++++++++++++++%3D%3E+%5B2+1+-3+4%5D%0A5k-2i%2B9%2B3j+++++++++++++%3D%3E+%5B9+-2+3+5%5D%0A5k-2j%2B3++++++++++++++++%3D%3E+%5B3+0+-2+5%5D%0A1.75-1.75i-1.75j-1.75k+%3D%3E+%5B1.75+-1.75+-1.75+-1.75%5D%0A2.0j-3k%2B0.47i-13+++++++%3D%3E+%5B-13+0.47+2.0+-3%5D%0A5.6-3i+++++++++++++++++%3D%3E+%5B5.6+-3+0+0%5D%0Ak-7.6i+++++++++++++++++%3D%3E+%5B0+-7.6+0+1%5D%0A0++++++++++++++++++++++%3D%3E+%5B0+0+0+0%5D%0A0j%2B0k++++++++++++++++++%3D%3E+%5B0+0+0+0%5D%0A-0j++++++++++++++++++++%3D%3E+%5B0+0+0+0%5D%0A1-0k+++++++++++++++++++%3D%3E+%5B1+0+0+0%5D'
   29     1        INIT_FCALL                                                   'explode'
          2        SEND_VAL                                                     '%0A'
          3        SEND_VAR                                                     !0
          4        DO_ICALL                                             $10     
          5        ASSIGN                                                       !1, $10
   30     6      > FE_RESET_R                                           $12     !1, ->63
          7    > > FE_FETCH_R                                                   $12, !2, ->63
   31     8    >   INIT_FCALL                                                   'explode'
          9        SEND_VAL                                                     '%3D%3E'
         10        SEND_VAR                                                     !2
         11        DO_ICALL                                             $13     
         12        FETCH_LIST_R                                         $14     $13, 0
         13        ASSIGN                                                       !3, $14
         14        FETCH_LIST_R                                         $16     $13, 1
         15        ASSIGN                                                       !4, $16
         16        FREE                                                         $13
   32    17        FRAMELESS_ICALL_1                trim                ~18     !3
         18        ASSIGN                                                       !3, ~18
   33    19        FRAMELESS_ICALL_1                trim                ~20     !4
         20        FRAMELESS_ICALL_3                preg_replace        ~21     '%2F%5Cs%2B%2F', '%2C'
         21        OP_DATA                                                      ~20
         22        ASSIGN                                                       !4, ~21
   36    23        ASSIGN_DIM                                                   !5, 1
         24        OP_DATA                                                      !3
   39    25        ASSIGN                                                       !6, <array>
   40    26        INIT_FCALL                                                   'preg_match_all'
         27        SEND_VAL                                                     '%2F%28%5B-%2B%5D%3F%29%28%5Cd%2A%28%5C.%5Cd%2B%29%3F%29%28%5Bijk%5D%3F%29%2F'
         28        FETCH_DIM_R                                          ~25     !5, 1
         29        SEND_VAL                                                     ~25
         30        SEND_REF                                                     !7
         31        SEND_VAL                                                     2
         32        DO_ICALL                                                     
   41    33      > FE_RESET_R                                           $27     !7, ->50
         34    > > FE_FETCH_R                                                   $27, !8, ->50
         35    >   FETCH_DIM_R                                          ~28     !8, 0
         36      > JMPZ                                                         ~28, ->49
         37    >   FETCH_DIM_R                                          ~29     !8, 4
         38        FETCH_DIM_R                                          ~31     !8, 1
         39        FETCH_DIM_R                                          ~32     !8, 2
         40        IS_IDENTICAL                                                 ~32, ''
         41      > JMPZ                                                         ~33, ->44
         42    >   QM_ASSIGN                                            ~34     1
         43      > JMP                                                          ->46
         44    >   FETCH_DIM_R                                          ~35     !8, 2
         45        QM_ASSIGN                                            ~34     ~35
         46    >   CONCAT                                               ~36     ~31, ~34
         47        ASSIGN_DIM                                                   !6, ~29
         48        OP_DATA                                                      ~36
         49    > > JMP                                                          ->34
         50    >   FE_FREE                                                      $27
   43    51        CONCAT                                               ~37     'Test%3A+', !3
         52        ECHO                                                         ~37
         53        ECHO                                                         '%0A'
   44    54        CONCAT                                               ~38     'Expect%3A+', !4
         55        ECHO                                                         ~38
         56        ECHO                                                         '%0A'
   45    57        FRAMELESS_ICALL_2                implode             ~39     '%2C', !6
         58        CONCAT                                               ~40     'Actual%3A+%5B', ~39
         59        ECHO                                                         ~40
         60        ECHO                                                         '%5D%0A'
   46    61        ECHO                                                         '%0A'
   30    62      > JMP                                                          ->7
         63    >   FE_FREE                                                      $12
   47    64      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
173.71 ms | 2719 KiB | 15 Q