Last active
August 29, 2015 14:20
-
-
Save codexp/d0dce1165c2472be82b7 to your computer and use it in GitHub Desktop.
validate openHPI - Hands-on final exam - Question 1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$str = <<<EOD | |
ApiService.java, SyncManager.java, ndldic.c, MediaProvider.java, ndbdic.c | |
ndldic.c, ndbdic.c, SyncManager.java, MediaProvider.java, ApiService.java | |
ApiService.java, MediaProvider.java, ndldic.c, ndbdic.c, SyncManager.java | |
ndldic.c, ndbdic.c, SyncManager.java, ApiService.java , MediaProvider.java | |
APIService.java, ndbbic.c, ndldic.c, SyncManager.java, MediaProvider.java | |
ndldic.c, ndbdic.c, Apiservice.java, MediaProvider.java, SyncManager.java | |
SyncManager.java, MediaProvider.java, ApiService.java, ndbidic.c, ndldic.c | |
ApiService.java, SyncManager.java, ndbdic.c, ndldic.c, MediaProvider.java | |
SyncManager.java, ApiService.java, MediaProvider.java, ndbdic.c, ndldic.c | |
SyncManager.java, ApiService.java, ndbdic.c, ndldic.c, MediaProvider.java | |
ApiService.java, MediaProvider.java, ndbdic.c, SyncManager.java, ndldic.c | |
MediaProvider.java, APIService.java, SyncManager.java, ndbdic.c, ndldic.c | |
ndldic.c, ndbdic.c, SyncManager.java, ApiService.java, MediaProvider.java | |
ndldic.c, ndbdic.c, SyncManager.java,ApiService.java, MediaProvider.java, | |
ApiService.java,SyncManager.java,MediaProvider.java,ndbdic.c,ndldic.c | |
ndldic.c, ndbdic.c, ApiService.java, Mediaprovider.java, SyncManager.java | |
ndldic.c, ndbdic.c, ApiService.java, SyncManager.java, MediaProvider.java | |
MediaProvider.java, ndbdic.c, ApiService.java, SyncManager.java, ndldic.c | |
MediaProvider.java,ndbdic.c,ndldic.c,ApiService.java,SyncManager.java | |
ndbdic.c, ndldic.c, SyncManager.java, ApiService.java, MediaProvider.java, | |
apiservice.java,ndbdic.c,ndldic.c,mediaprovider.java,syncmanager.java | |
MediaProvider.java, SyncManager.java,ApiService.java, ndbdic.c, ndldic.c | |
MediaProvider.java, ApiService.java, ndldic.c, ndbdic.c, SyncManager.java | |
MediaProvider.java, ndbdic.c, ndldic.c, ApiService.java, SyncManager.java | |
ndldic.c,ndbdic.c,ApiService.java,SyncManager.java,MediaProvider.java | |
ndbdic.c, ndldic.c, ApiService.java,MediaProvider.java,SyncManager.java | |
ApiService.jave, SyncManager.java, MediaProvider.java, ndldic.c, ndbdic.c | |
nlddic.c,ndbdic.c,SyncManager.java,ApiService.java,MediaProvider | |
MediaProvider.java, ndldic.c, SyncManager.java, ndbdic.c, ApiService.java | |
ndldic.c, ndbdic.c, SyncManager.java, ApiService.java, MediaProvider.Java | |
ndldic.c,ndbdic.c,SyncManager.java,ApiService.java,MediaProvider,java | |
Mediaprovider.java, ApiService.java, nbddic.c, SyncManager.java, ndldic.c | |
ndldic.c, ndbdic.c, SyncManager,java, ApiService.java, MediaProvider.java | |
ndldic.c, ndbdic.c, MediaProvider.java, SyncManager.java, ApiService.java | |
ApiService.java, MediaProvider.java, SyncManager.java, ndldic.c, ndbdic.c | |
ndldic.c, ndbdic.c, SyncManager.java, APIService.java, MediaProvider.java | |
MediaProvider.java, SyncManager.java, ApiService.java, ndldic.c, ndbdic.c | |
ndldic.c,ndbdic.c,SyncManager.java,ApiService.java,MediaProvider.java | |
ndbdic.c, ndldic.c, MediaProvider.java, ApiService.java, SyncManager.java | |
ndldic.c, nbbdic.c, ApiService.java, SyncManager.java, MediaProvider.java | |
ndbdic.c,ndldic.c,MediaProvider.java,ApiService.java,SyncManager.java | |
MediaProvider.java,ndldic.c,ndbdic.c,SyncManager.java,ApiService.java | |
SyncManager.java, ndbdic.c, ndldic.c, ApiService.java, MediaProvider.java | |
MediaProviders.java, ndbdic.c, ndldic.c, SynManager.java, ApiService.java | |
MediaProvider.java,ndbdic.c,ndldic.c,apiservice.java,syncManager.java | |
MediaProvider.java,SyncManager.java,ApiService.java,ndbdisc.c,ndldic.c | |
MediaProvider.java,ApiService.java,ndbdic.c,ndldic.c,SyncManager.java | |
MediaProvider.java, SyncManager.java, ApjService.java, ndbdic.c, ndldic.c | |
MediaProvider.java,SyncManager.java,ndbdic.c,ApiService.java,ndldic.c | |
ndldic.c, ndcdic.c, SyncManager.java, ApiService.java, MediaProvider.java | |
ndldic.c, ndbdic.c, SyncManager.java, ApiServices.java, MediaProvider.java | |
MediaProvider.java, SyncManager.java, ndbdic.c, ndldic.c, ApiService.java | |
MediaProvider.java, SyncManager.java, ApiService.java, ndbdic.c, ndldic.c | |
MediaProvider.java, SyncManager.java, ApiService.java, ndldic.c, ndbdic.c | |
MediaProvider.java, ApiService.java, SyncManager.java, ndbcdic.c, ndlcdic.c | |
MediaProvider.java,ApiService.java,SyncManager.java,ndbdic.c,ndldic.c | |
MediaProvider.java, ndldic.c, ndbdic.c, SyncManager.java, ApiService.java | |
ndbdic.c, MediaProvider.java, ndldic.c, SyncManager.java, ApiService.java | |
ApiService.java, MediaProvider.java, SyncManager.java, ndbdic.c, ndldic.c | |
ApiService.java, SyncManager.java, MediaProvider.java, ndbdic.c, ndldic.c | |
ApiService.java, ndbdic.c, ndldic.c, MediaProvider.java, SyncManager.java | |
MediaProvider.java, ApiService.java, SyncManager.java, ndbdic.c, ndldic.c | |
ndldic.c, ndbdic.java, SyncManager.java, ApiService.java, MediaProvider.java | |
MediaProvider.java, ApiService.java, ndbdic.c, SyncManager.java, ndldic.c | |
MediaProvider.java,SyncManager.java,ApiService.java,ndbdic.c,ndldic.c | |
MediaProvider.java, ndldic.c, ndbdic.c, ApiService.java, SyncManager.java | |
MediaProvider.java, ndbdic.c, ndldic.c, SyncManager.java, ApiService.java | |
MediaProvider.java, SyncManager.java, ndldic.c, ndbdic.c, ApiService.java | |
ApiService.java, SyncManager.java, MediaProvider.java, ndldic.c, ndbdic.c | |
SyncManager.java, MediaProvider.java, ndbdic.c, ndldic.c, ApiService.java | |
SWyncManager.java, MediaProvider.java, ApiService.java, ndldic,c, ndbdic.c | |
ndldic.c, ndbdic.c, MediaProvider.java, SyncManager.java, ApiService.java, MediaProvider.java | |
SyncManager.java, ndbdic.c, ndldic.c, MediaProvider.java, ApiService.java | |
SyncManager.java, MediaProvider.java, ApiService.java, ndbdic.c, ndldic.c | |
MediaProvider.java, SyncManager.java, ndldic.c. ndbdic.c, ApiService.java, | |
MediaProvider.java, ndldic.c, ndbdic.c, ApiServer.java, SyncManager.java | |
MediaProvider.java,SyncMaster.java,ApiService.java,ndbdic.c,ndldic.c | |
MediaProvider.java, SyncManager.java, ndldic.c, ApiService.java, ndbdic.c | |
MediaProvider.java,ndldic.c, ndbdic.c, AoiService.java, SyncManager.java | |
ApiService.java, ndbdic.c, ndldic.c, Mediaprovider.java, SyncManager.java | |
MediaProviders.java, ApiService.java, SyncManager.java, ndldic.c, ndbdic.c | |
ApiService.java, ndldic., ndbdic.c, MediaProvider.java, SyncManager.java | |
ApiService.java, SyncManager.java, ApiService.java, ndldic.c, ndbdic.c | |
ndbdic.c, ndldic.c, MediaProvider.java, SyncManager.java, ApiService.java | |
ndldic.c, nbddic.c, SyncManager.java, APiService.java, MediaProvider.java | |
ndldic.c, ndbdic.c, SyncManager.java, ApiService.java,, MediaProvider.java | |
ndldic.c,ndbdic.c, SyncManager.java, ApiService.java, MediaProvider.java, | |
APIService.java, ndbdic.c, ndldic.c, SyncManager.java, MediaProvider.java | |
ndbdic.c, ndldic.c, ApiService.java, MediaProvider.java, SyncManager.java | |
ApiService.java, ndbdic.c, ndldic.c, SyncManager.java, MediaProvider.java | |
ndldic.c, ndldic.c, SyncManager.java, ApiServcie.java, MediaProvider.java | |
ApiService.java,ndbdic.c,ndldic.c,MediaProvider.java,SyncManager.java | |
MediaProvider.java, ndbdic.c, ndldic.c, ApiService.java, SyncManager.java | |
ndldic.c, ndbdic.c, SyncManager.java, MediaProvider.java, ApiService.java, | |
MediaProvider.java, SynchManager.java, ApiService.java, ndldic.c, ndbdic.c | |
ndbdic.c, ndldic.c, MediaProvider.java, SyncManager.java, ApiService.java, MediaProvider.java | |
ndbdic.c,ndldic.c,ApiService.java,MediaProvider.java,SyncManager.java | |
MediaProvider.java,ApiService.java,SyncManager.jaca,ndbdic.c,ndldic.c | |
MediaProvider.java,SyncManager.java,ndbdic.c,ndldic.c,ApiService.java | |
MediaProvider.java,ndldic.c,ndbdic.c,ApiService.java,SyncManager.java | |
ApiService.java, SyncManager.java, ndbdic.java, ndldic.java, MediaProvider.java | |
ApiService.java, ndldic.c, ndbdic.c, MediaProvider.java, SyncManager.java | |
MediaProvider.java,ndbdic.c,ndldic.c,SyncManager.java,ApiService.java | |
MediaProvider.java, ApiService.java, ndldic.c, ndbdic.c, SyncManager | |
ndldic.c,ndbdic.c,SynchManager.java,ApiService.java,MediaProvider.java | |
ApiService.java,ndldic.c,ndbdic.c,SyncManager.java,MediaProvider.java | |
ndldic.c,ndbdic.c,SyncManager.java,ApiService.java,Media.Provider.java | |
ndldic.c, SyncManager.java, ApiService.java, MediaProvider.java, ndbdic.c | |
MediaProvider.java, ApiService.java, SyncManager.java, ndldic.c, ndbdic.c, | |
SyncManager.java, ApiService.java, MediaProvider.java, nbddic.c, ndldic.c | |
ndbdic.c, ndldic.c, ApiService.java, SyncManager.Java, MediaProvider.java | |
MediaProvider.java, ndbdic.c, SyncManager.java, ApiService.java, ndldic.c | |
ndbdic.c, ndldic.c, ApiService.java, SyncManager.java, MediaProvider.java | |
ndldic.c,ndbdic.c,SyncMAnager.java,ApiService.java,MediaProvider.java | |
MediaProvider.java, ApiService.java, ndbdic.c, ndldic.c, SyncManager.java | |
MediaProvider.java;ApiService.java;SyncManagerJava; ndbdic.java;ndldic.java | |
MediaProvider.java, ApiService.java, SyncManager.java, ndldic.c, ndbdic.c | |
ndldic.c, ndbdic.c, ApiService.java, MediaProvider.java, SyncManager.java | |
ndbdic.c, ndldic.c, SyncManager.java, ApiService.java, MediaProvider.java | |
ndldic.c, ndbdic.c, SyncManager, ApiService.java, MediaProvider.java | |
ndbdic.c, ndldic.c, SyncManager.java, ApiService.java, MediaProvide.java | |
SyncManager.java, MediaProvider.java, ndldic.c, ndbdic.c, ApiService.java | |
ndldic.c,ndbdic.c,ApiService.java,MediaProvider.java,SyncManager.java | |
ndldic.c, ndbdic.c, SyncManager.java, ApiService.java, MediaProvider.java, | |
SyncManager.java, MediaProvider.java, APIService.java, ndbdic.c, ndldic.c | |
ndldic.c, ndbdic.c, SyncManager.java,ApiService.java, MediaProvider.java | |
EOD; | |
$lines = array_filter(split(PHP_EOL, $str), function($s) { return trim($s); }); | |
//$duplicates = array_filter(array_count_values($lines),function($num) { return $num > 1; }); | |
//var_dump($duplicates); | |
$answers = array_map('strtolower', array( | |
'ndbdic.c', | |
'ndldic.c', | |
'ApiService.java', | |
'SyncManager.java', | |
'MediaProvider.java', | |
)); | |
$variations = array_map('strtolower', array( | |
'AoiService.java', | |
'ApiServcie.java', | |
'ApiServer.java', | |
'ApiService.jave', | |
'ApiServices.java', | |
'ApjService.java', | |
'Media.Provider.java', | |
'MediaProvide.java', | |
'MediaProvider', | |
'MediaProviders.java', | |
'SWyncManager.java', | |
'SynManager.java', | |
'SyncManager', | |
'SyncManager.jaca', | |
'SyncManagerJava', | |
'SyncMaster.java', | |
'SynchManager.java', | |
'nbbdic.c', | |
'nbddic.c', | |
'ndbbic.c', | |
'ndbcdic.c', | |
'ndbdic.java', | |
'ndbdisc.c', | |
'ndbidic.c', | |
'ndcdic.c', | |
'ndlcdic.c', | |
'ndldic.', | |
'ndldic.c.', | |
'ndldic.java', | |
'nlddic.c', | |
)); | |
$points = array(); | |
$invalid = array(); | |
$invalid_lines_index = array(); | |
foreach ($lines as $i => $l) { | |
// separator to dot correction | |
$l = preg_replace('/(\w+)[,;](c\b|java\b)/i', '\1.\2', $l); | |
// extract tokens | |
$tokens = preg_split('/[\s,|;]/', $l, null, PREG_SPLIT_NO_EMPTY); | |
// compare tokens to possible answer | |
$pts = 0; | |
foreach ($tokens as $t) { | |
if (in_array(strtolower($t), $answers)) { | |
++$pts; // full point for valid token | |
} | |
elseif (in_array(strtolower($t), $variations)) { | |
$pts += 0.5; // half a point for variation | |
} else { | |
$invalid[] = $t; | |
$invalid_lines_index[$i][] = $t; | |
} | |
} | |
$points[$i] = $pts; | |
} | |
$invalid = array_unique($invalid); | |
natsort($invalid); | |
if ($invalid) { | |
echo "Invalid tokens (new variations?):\n"; | |
echo "'" . implode("'," . PHP_EOL . "'", $invalid) . "'," . PHP_EOL . PHP_EOL; | |
} | |
// output line numbers with invalid tokens | |
foreach ($invalid_lines_index as $i => $li) { | |
echo "invalid tokens in line $i: " . implode(', ', $li) . "\n"; | |
} | |
// output points per line | |
echo "Points:\n"; | |
foreach ($points as $i => $score) { | |
echo "$i = $score\n"; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Play with it on http://www.tehplayground.com/#PLbUprHm9
[Ctrl] + [Enter] to execute