Skip to content

Instantly share code, notes, and snippets.

@leafnode
Created August 8, 2014 13:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leafnode/33c344a5e9bfb168fa93 to your computer and use it in GitHub Desktop.
Save leafnode/33c344a5e9bfb168fa93 to your computer and use it in GitHub Desktop.
<?php
function match($desk, $word) {
if($desk == "") return false;
if($word == "") return true;
$w = $word[0];
$ws = substr($word, 1);
$pos = strpos($desk, $w);
if($pos !== false) {
return match(substr($desk, 0, $pos).substr($desk, $pos + 1), $ws);
}
$pos = strpos($desk, '*');
if($pos !== false) {
return match(substr($desk, 0, $pos).substr($desk, $pos + 1), $ws);
}
return false;
}
function search($tokens, $dictionary) {
$filter = function($word) use($tokens) { return match($tokens, $word); };
return array_filter($dictionary, $filter);
}
function prettyPrint($words) {
$compareLength = function($a, $b) { return strlen($a) - strlen($b); };
usort($words, $compareLength);
print(implode("\n", $words)."\n");
}
if(isset($argv[1])) {
$firstArg = $argv[1];
} else {
exit("One parameter needed");
}
$dictionary = explode("\n", file_get_contents("ODS6.txt"));
$results = search(strtoupper($firstArg), $dictionary);
prettyPrint($results);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment