fork download
  1. <?php
  2. function convert($keyword, $debug = false) {
  3. $wResult = preg_match_all('/I(?=[[:upper:]][[:lower:]])|A(?=[[:upper:]][[:lower:]])|[[:upper:]]{2,}|[[:upper:]][[:lower:]]*|[[:lower:]]+|\d+|#/u', $keyword, $matches);
  4. if($debug){
  5. var_dump($matches);
  6. var_dump($matches[0]);
  7. var_dump(implode(' ',$matches[0]));
  8. }
  9. return implode(' ',$matches[0]);
  10. }
  11.  
  12. $originalCases = array(
  13. "comeHEREtomorrow" => "come HERE tomorrow"
  14. , "KissYouTODAY" => "Kiss You TODAY"
  15. , "comeÜndeHere" => "come Ünde Here"
  16. , "NEVERSAYIT" => "NEVERSAYIT"
  17. , "2013willCome" => "2013 will Come"
  18. , "Before2013ends" => "Before 2013 ends"
  19. , "IKnowThat" => "I Know That"
  20. , "#whatiknow" => "# whatiknow"
  21. );
  22. $newCases = array(
  23. "Icons" => "Icons"
  24. , "WellIKnowThat" => "Well I Know That"
  25. , "ITan" => "I Tan"
  26. , "whirlwind" => "whirlwind"
  27. , 'IWantABoat' => 'I Want A Boat'
  28. );
  29.  
  30. function testConversion($str, $target, $n){
  31. $result = convert($str);
  32. printf('Case %2d is %s: %24s => %-24s ("%s" expected)'."\n"
  33. , $n
  34. , strcmp($target, $result)?" FAILED ":"SUCCESSFUL"
  35. , "\"$str\""
  36. , "\"$result\""
  37. , $target
  38. );
  39. }
  40. echo "Initial Cases:\n";
  41. $n = 1;
  42. foreach ($originalCases as $str => $target) {
  43. testConversion($str, $target, $n++);
  44. }
  45.  
  46.  
  47.  
  48. echo "\n\nNew Cases:\n";
  49. foreach ($newCases as $str => $target) {
  50. testConversion($str, $target, $n++);
  51. }
  52. ?>
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Initial Cases:
Case  1 is SUCCESSFUL:        "comeHEREtomorrow" => "come HERE tomorrow"     ("come HERE tomorrow" expected)
Case  2 is SUCCESSFUL:            "KissYouTODAY" => "Kiss You TODAY"         ("Kiss You TODAY" expected)
Case  3 is SUCCESSFUL:           "comeÜndeHere" => "come Ünde Here"        ("come Ünde Here" expected)
Case  4 is SUCCESSFUL:              "NEVERSAYIT" => "NEVERSAYIT"             ("NEVERSAYIT" expected)
Case  5 is SUCCESSFUL:            "2013willCome" => "2013 will Come"         ("2013 will Come" expected)
Case  6 is SUCCESSFUL:          "Before2013ends" => "Before 2013 ends"       ("Before 2013 ends" expected)
Case  7 is SUCCESSFUL:               "IKnowThat" => "I Know That"            ("I Know That" expected)
Case  8 is SUCCESSFUL:              "#whatiknow" => "# whatiknow"            ("# whatiknow" expected)


New Cases:
Case  9 is SUCCESSFUL:                   "Icons" => "Icons"                  ("Icons" expected)
Case 10 is SUCCESSFUL:           "WellIKnowThat" => "Well I Know That"       ("Well I Know That" expected)
Case 11 is SUCCESSFUL:                    "ITan" => "I Tan"                  ("I Tan" expected)
Case 12 is SUCCESSFUL:               "whirlwind" => "whirlwind"              ("whirlwind" expected)
Case 13 is SUCCESSFUL:              "IWantABoat" => "I Want A Boat"          ("I Want A Boat" expected)