Created
December 18, 2013 15:28
-
-
Save andrisp/8024246 to your computer and use it in GitHub Desktop.
This file contains 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 | |
$host = "192.168.70.95"; | |
$port = 9000; | |
set_time_limit(0); | |
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); | |
socket_bind($socket, $host, $port); | |
socket_listen($socket, SOMAXCONN); | |
while (true) { | |
$spawn = socket_accept($socket); | |
$input = socket_read($spawn, 1024, PHP_NORMAL_READ); | |
$input = trim($input); | |
$f = unserialize(file_get_contents('./q.txt')); | |
$fn = require 'solver.php'; | |
$answer = $fn($input); | |
file_put_contents('./q.txt', serialize($f)); | |
$result = ''; | |
$result = "HTTP/1.0 200 OK\n"; | |
$result .= "Date: Sat, 22 Dec 2012 00:00:01 GMT\n"; | |
$result .= "Content-Type: text/html\n"; | |
$result .= "Content-Length: " . strlen($answer) . "\n"; | |
$result .= "\n"; | |
$result .= $answer; | |
$written = socket_write($spawn, $result, strlen($result)); | |
//echo "Request: $input\n"; | |
echo "Answer: $answer\n"; | |
} | |
?> |
This file contains 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 | |
return function($input) { | |
global $f; | |
preg_match('/\?q=(.*)\sHTTP/i', $input, $m); | |
$q =urldecode( $m[1]); | |
echo urldecode($q) . "\n"; | |
$fructs = [ | |
'apple' => 'green', | |
'banana' => 'yellow', | |
'carrot' => 'orange', | |
'orange' => 'orange', | |
'beet' => 'red', | |
'cucumber' => 'green', | |
'lemon' => 'yellow', | |
'tomato' => 'red' | |
]; | |
if (preg_match('/your name/', $q)) { | |
return 'Turbo2000'; | |
} else if (preg_match('/my name is ([a-zA-Z]+)/', $q, $m)) { | |
$name = $m[1]; | |
$f['name'] = $name; | |
return $name; | |
} else if (preg_match('/What was my name/', $q, $m)) { | |
return isset($f['name']) ? $f['name'] : ''; | |
} else if (preg_match('/KRH05/', $q, $m)) { | |
return 'Deep Inside'; | |
} else if (preg_match('/color is apple/', $q, $m)) { | |
return 'green'; | |
} else if (preg_match('/color is carrot/', $q, $m)) { | |
return 'orange'; | |
}else if (preg_match('/color is banana/', $q, $m)) { | |
return 'yellow'; | |
}else if (preg_match('/color is orange/', $q, $m)) { | |
return 'orange'; | |
}else if (preg_match('/color is beet/', $q, $m)) { | |
return 'red'; | |
}else if (preg_match('/color is lemon/', $q, $m)) { | |
return 'yellow'; | |
}else if (preg_match('/color is tomato/', $q, $m)) { | |
return 'red'; | |
} else if (preg_match('/even numbers from the set \((.*)\)/', $q, $m)) { | |
$nums = explode(',',$m[1]); | |
$re=[]; | |
foreach($nums as $n) { | |
if($n%2==0) { | |
$re[] = $n; | |
} | |
} | |
return implode(',',$re); | |
} else if (preg_match('/odd numbers from the set \((.*)\)/', $q, $m)) { | |
$nums = explode(',',$m[1]); | |
$re=[]; | |
foreach($nums as $n) { | |
if($n%2==1) { | |
$re[] = $n; | |
} | |
} | |
return implode(',',$re); | |
}else if (preg_match('/biggest number of \((.*)\)/', $q, $m)) { | |
$nums = explode(',',$m[1]); | |
return max($nums); | |
}else if (preg_match('/smallest number of \((.*)\)/', $q, $m)) { | |
$nums = explode(',',$m[1]); | |
return min($nums); | |
}else if (preg_match('/set descending \((.*)\)/', $q, $m)) { | |
$nums = explode(',',$m[1]); | |
rsort($nums); | |
return implode(',', $nums); | |
} else if (preg_match('/set ascending \((.*)\)/', $q, $m)) { | |
$nums = explode(',',$m[1]); | |
sort($nums); | |
return implode(',', $nums); | |
} else if (preg_match('/Which of \"(.*)\" are ([a-z]+)/', $q, $m)) { | |
$col = $m[2]; | |
$re = []; | |
foreach ($fructs as $n => $c) { | |
if($c==$col) { | |
$re[] = $n; | |
} | |
} | |
return implode(',', ($re)); | |
} else if (preg_match('/sum of all digits \(([0-9]+)/', $q, $m)) { | |
$digs = $m[1]; | |
$split = str_split($digs); | |
return array_sum($split); | |
} else { | |
$line = trim(fgets(STDIN)); // reads one line from STDIN | |
return $line; | |
} | |
return ''; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment