<?php
function convert($keyword, $debug = false) {
$wResult = preg_match_all('/I(?=[[:upper:]][[:lower:]])|[[:upper:]]{2,}|[[:upper:]][[:lower:]]*|[[:lower:]]+|\d+|#/u', $keyword, $matches); if($debug){
}
}
"comeHEREtomorrow",
"KissYouTODAY",
"comeÜndeHere",
"NEVERSAYIT",
"2013willCome",
"Before2013ends",
"IKnowThat",
"#whatiknow"
);
"come HERE tomorrow",
"Kiss You TODAY",
"come Ünde Here",
"NEVERSAYIT",
"2013 will Come",
"Before 2013 ends",
"I Know That",
"# whatiknow"
);
$search_keyword2 = array( "Icons"
, "WellIKnowThat"
, "ITan"
, "whirlwind"
);
"Icons"
, "Well I Know That"
, "I Tan"
, "whirlwind"
);
echo "Initial Cases:\n";
foreach ($search_keyword as $key => $w) {
$wExpected = $need_keyword[$key];
$wResult = convert($w);
$check = strcmp($wExpected, $wResult); $checkWord = ( $check == 0 ? "SUCCESS" : "FAILURE" );
echo "try $key,\t keyword: \"$w\" expected: \"$wExpected\" result: \"$wResult\" check: $check ($checkWord),\n";
}
echo "\n\nSecondary Cases:\n";
foreach ($search_keyword2 as $key => $w) {
$wExpected = $need_keyword2[$key];
$wResult = convert($w);
$check = strcmp($wExpected, $wResult); $checkWord = ( $check == 0 ? "SUCCESS" : "FAILURE" );
echo "try $key,\t keyword: \"$w\" expected: \"$wExpected\" result: \"$wResult\" check: $check ($checkWord),\n";
}
?>
PD9waHAgCiAgICBmdW5jdGlvbiBjb252ZXJ0KCRrZXl3b3JkLCAkZGVidWcgPSBmYWxzZSkgewogICAgICAgJHdSZXN1bHQgPSBwcmVnX21hdGNoX2FsbCgnL0koPz1bWzp1cHBlcjpdXVtbOmxvd2VyOl1dKXxbWzp1cHBlcjpdXXsyLH18W1s6dXBwZXI6XV1bWzpsb3dlcjpdXSp8W1s6bG93ZXI6XV0rfFxkK3wjL3UnLCAka2V5d29yZCwgJG1hdGNoZXMpOwogICAgICAgaWYoJGRlYnVnKXsKICAgICAgICAgICB2YXJfZHVtcCgkbWF0Y2hlcyk7CiAgICAgICAgICAgdmFyX2R1bXAoJG1hdGNoZXNbMF0pOwogICAgICAgICAgIHZhcl9kdW1wKGltcGxvZGUoJyAnLCRtYXRjaGVzWzBdKSk7CiAgICAgICB9CiAgICAgICByZXR1cm4gaW1wbG9kZSgnICcsJG1hdGNoZXNbMF0pOwogICAgfQoKICRzZWFyY2hfa2V5d29yZCA9IGFycmF5KAogICAgICAgICAgICAiY29tZUhFUkV0b21vcnJvdyIsCiAgICAgICAgICAgICJLaXNzWW91VE9EQVkiLAogICAgICAgICAgICAiY29tZcOcbmRlSGVyZSIsCiAgICAgICAgICAgICJORVZFUlNBWUlUIiwKICAgICAgICAgICAgIjIwMTN3aWxsQ29tZSIsCiAgICAgICAgICAgICJCZWZvcmUyMDEzZW5kcyIsCiAgICAgICAgICAgICJJS25vd1RoYXQiLAogICAgICAgICAgICAiI3doYXRpa25vdyIKICAgICAgICApOwogICAgICAgICRuZWVkX2tleXdvcmQgPSBhcnJheSgKICAgICAgICAgICAgImNvbWUgSEVSRSB0b21vcnJvdyIsCiAgICAgICAgICAgICJLaXNzIFlvdSBUT0RBWSIsCiAgICAgICAgICAgICJjb21lIMOcbmRlIEhlcmUiLAogICAgICAgICAgICAiTkVWRVJTQVlJVCIsCiAgICAgICAgICAgICIyMDEzIHdpbGwgQ29tZSIsCiAgICAgICAgICAgICJCZWZvcmUgMjAxMyBlbmRzIiwKICAgICAgICAgICAgIkkgS25vdyBUaGF0IiwKICAgICAgICAgICAgIiMgd2hhdGlrbm93IgogICAgICAgICk7IAoKICRzZWFyY2hfa2V5d29yZDIgPSBhcnJheSgKICAgICAiSWNvbnMiCiAgICAsICJXZWxsSUtub3dUaGF0IgogICAgLCAiSVRhbiIKICAgICwgIndoaXJsd2luZCIKICAgICAgICApOwogICAgICAgICRuZWVkX2tleXdvcmQyID0gYXJyYXkoCiAgICAgIkljb25zIgogICAgLCAiV2VsbCBJIEtub3cgVGhhdCIKICAgICwgIkkgVGFuIgogICAgLCAid2hpcmx3aW5kIgogICAgICAgICk7ICAgICAKZWNobyAiSW5pdGlhbCBDYXNlczpcbiI7CiAgICAgICAgZm9yZWFjaCAoJHNlYXJjaF9rZXl3b3JkIGFzICRrZXkgPT4gJHcpIHsKICAgICAgICAgICAgJHdFeHBlY3RlZCA9ICRuZWVkX2tleXdvcmRbJGtleV07CgogICAgICAgICAgICAkd1Jlc3VsdCA9IGNvbnZlcnQoJHcpOwoKICAgICAgICAgICAgJGNoZWNrID0gc3RyY21wKCR3RXhwZWN0ZWQsICR3UmVzdWx0KTsKICAgICAgICAgICAgJGNoZWNrV29yZCA9ICggJGNoZWNrID09IDAgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSIgKTsKCiAgICAgICAgICAgIGVjaG8gInRyeSAka2V5LFx0IGtleXdvcmQ6IFwiJHdcIiBleHBlY3RlZDogXCIkd0V4cGVjdGVkXCIgcmVzdWx0OiBcIiR3UmVzdWx0XCIgY2hlY2s6ICRjaGVjayAoJGNoZWNrV29yZCksXG4iOwogICAgICAgIH0KCgoKZWNobyAiXG5cblNlY29uZGFyeSBDYXNlczpcbiI7CiAgICAgICAgZm9yZWFjaCAoJHNlYXJjaF9rZXl3b3JkMiBhcyAka2V5ID0+ICR3KSB7CiAgICAgICAgICAgICR3RXhwZWN0ZWQgPSAkbmVlZF9rZXl3b3JkMlska2V5XTsKCiAgICAgICAgICAgICR3UmVzdWx0ID0gY29udmVydCgkdyk7CgogICAgICAgICAgICAkY2hlY2sgPSBzdHJjbXAoJHdFeHBlY3RlZCwgJHdSZXN1bHQpOwogICAgICAgICAgICAkY2hlY2tXb3JkID0gKCAkY2hlY2sgPT0gMCA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIiApOwoKICAgICAgICAgICAgZWNobyAidHJ5ICRrZXksXHQga2V5d29yZDogXCIkd1wiIGV4cGVjdGVkOiBcIiR3RXhwZWN0ZWRcIiByZXN1bHQ6IFwiJHdSZXN1bHRcIiBjaGVjazogJGNoZWNrICgkY2hlY2tXb3JkKSxcbiI7CiAgICAgICAgfQo/Pg==
Initial Cases:
try 0, keyword: "comeHEREtomorrow" expected: "come HERE tomorrow" result: "come HERE tomorrow" check: 0 (SUCCESS),
try 1, keyword: "KissYouTODAY" expected: "Kiss You TODAY" result: "Kiss You TODAY" check: 0 (SUCCESS),
try 2, keyword: "comeÜndeHere" expected: "come Ünde Here" result: "come Ünde Here" check: 0 (SUCCESS),
try 3, keyword: "NEVERSAYIT" expected: "NEVERSAYIT" result: "NEVERSAYIT" check: 0 (SUCCESS),
try 4, keyword: "2013willCome" expected: "2013 will Come" result: "2013 will Come" check: 0 (SUCCESS),
try 5, keyword: "Before2013ends" expected: "Before 2013 ends" result: "Before 2013 ends" check: 0 (SUCCESS),
try 6, keyword: "IKnowThat" expected: "I Know That" result: "I Know That" check: 0 (SUCCESS),
try 7, keyword: "#whatiknow" expected: "# whatiknow" result: "# whatiknow" check: 0 (SUCCESS),
Secondary Cases:
try 0, keyword: "Icons" expected: "Icons" result: "Icons" check: 0 (SUCCESS),
try 1, keyword: "WellIKnowThat" expected: "Well I Know That" result: "Well I Know That" check: 0 (SUCCESS),
try 2, keyword: "ITan" expected: "I Tan" result: "I Tan" check: 0 (SUCCESS),
try 3, keyword: "whirlwind" expected: "whirlwind" result: "whirlwind" check: 0 (SUCCESS),