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"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 7, Position 2 = 73
Branch analysis from position: 7
2 jumps found. (Code = 78) Position 1 = 8, Position 2 = 73
Branch analysis from position: 8
2 jumps found. (Code = 77) Position 1 = 41, Position 2 = 57
Branch analysis from position: 41
2 jumps found. (Code = 78) Position 1 = 42, Position 2 = 57
Branch analysis from position: 42
2 jumps found. (Code = 43) Position 1 = 44, Position 2 = 56
Branch analysis from position: 44
2 jumps found. (Code = 43) Position 1 = 49, Position 2 = 51
Branch analysis from position: 49
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 51
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 56
Branch analysis from position: 57
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
Branch analysis from position: 57
Branch analysis from position: 73
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 73
filename:       /in/gODeF
function name:  (null)
number of ops:  75
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, ->73
          7    > > FE_FETCH_R                                               $12, !2, ->73
   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        INIT_FCALL                                               'trim'
         18        SEND_VAR                                                 !3
         19        DO_ICALL                                         $18     
         20        ASSIGN                                                   !3, $18
   33    21        INIT_FCALL                                               'preg_replace'
         22        SEND_VAL                                                 '%2F%5Cs%2B%2F'
         23        SEND_VAL                                                 '%2C'
         24        INIT_FCALL                                               'trim'
         25        SEND_VAR                                                 !4
         26        DO_ICALL                                         $20     
         27        SEND_VAR                                                 $20
         28        DO_ICALL                                         $21     
         29        ASSIGN                                                   !4, $21
   36    30        ASSIGN_DIM                                               !5, 1
         31        OP_DATA                                                  !3
   39    32        ASSIGN                                                   !6, <array>
   40    33        INIT_FCALL                                               'preg_match_all'
         34        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'
         35        FETCH_DIM_R                                      ~25     !5, 1
         36        SEND_VAL                                                 ~25
         37        SEND_REF                                                 !7
         38        SEND_VAL                                                 2
         39        DO_ICALL                                                 
   41    40      > FE_RESET_R                                       $27     !7, ->57
         41    > > FE_FETCH_R                                               $27, !8, ->57
         42    >   FETCH_DIM_R                                      ~28     !8, 0
         43      > JMPZ                                                     ~28, ->56
         44    >   FETCH_DIM_R                                      ~29     !8, 4
         45        FETCH_DIM_R                                      ~31     !8, 1
         46        FETCH_DIM_R                                      ~32     !8, 2
         47        IS_IDENTICAL                                             ~32, ''
         48      > JMPZ                                                     ~33, ->51
         49    >   QM_ASSIGN                                        ~34     1
         50      > JMP                                                      ->53
         51    >   FETCH_DIM_R                                      ~35     !8, 2
         52        QM_ASSIGN                                        ~34     ~35
         53    >   CONCAT                                           ~36     ~31, ~34
         54        ASSIGN_DIM                                               !6, ~29
         55        OP_DATA                                                  ~36
         56    > > JMP                                                      ->41
         57    >   FE_FREE                                                  $27
   43    58        CONCAT                                           ~37     'Test%3A+', !3
         59        ECHO                                                     ~37
         60        ECHO                                                     '%0A'
   44    61        CONCAT                                           ~38     'Expect%3A+', !4
         62        ECHO                                                     ~38
         63        ECHO                                                     '%0A'
   45    64        INIT_FCALL                                               'implode'
         65        SEND_VAL                                                 '%2C'
         66        SEND_VAR                                                 !6
         67        DO_ICALL                                         $39     
         68        CONCAT                                           ~40     'Actual%3A+%5B', $39
         69        ECHO                                                     ~40
         70        ECHO                                                     '%5D%0A'
   46    71        ECHO                                                     '%0A'
   30    72      > JMP                                                      ->7
         73    >   FE_FREE                                                  $12
   47    74      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
192.39 ms | 1404 KiB | 23 Q