- <?php 
-   
- $str = "23456789ABCDEGHJKMNPQRSTUVXYZabcdeghjkmnpqrstuvxyz"; 
- $excludes = ['cp','cb','ck','c6','c9','rn','rm','mm','co','do','cl','db','qp','qb','dp','ww']; 
-   
-   
- function-  fastCaptcha (array $dictionary, array $excludedSyllables,-  int  $length):-  string 
 
- { 
-     $captcha = ''; 
-     $generatedLength = 0; 
-   
-     while ($generatedLength < $length) { 
-         $randomCharacter = $dictionary[array_rand($dictionary)]; 
-         $captcha .= $randomCharacter; 
-         $generatedLength++; 
-     } 
-   
-     return $captcha; 
- } 
-   
- $excludesRegex = '/' . implode('|', $excludes) . '/'; 
-   
- $shortCaptchas  = []; 
- $mediumCaptchas = []; 
- $longCaptchas   = []; 
- for ($i = 0; $i < 100000; $i++) 
-     $shortCaptchas[]  = fastCaptcha($dictionaryArray, $indexedExcludes, 2); 
-     $mediumCaptchas[] = fastCaptcha($dictionaryArray, $indexedExcludes, 5); 
-     $longCaptchas[]   = fastCaptcha($dictionaryArray, $indexedExcludes, 10); 
-   
-   
-   
- foreach($shortCaptchas as $captcha) { 
- } 
-   
-   
- foreach($mediumCaptchas as $captcha) { 
- } 
-   
-   
- foreach($longCaptchas as $captcha) { 
- } 
-   
-   
- echo "short : " . ($t1 - $t0) . "\n"; 
- echo "medium: " . ($t2 - $t1) . "\n"; 
- echo "long  : " . ($t3 - $t2) . "\n"; 
				PD9waHAKCiRzdHIgPSAiMjM0NTY3ODlBQkNERUdISktNTlBRUlNUVVZYWVphYmNkZWdoamttbnBxcnN0dXZ4eXoiOwokZXhjbHVkZXMgPSBbJ2NwJywnY2InLCdjaycsJ2M2JywnYzknLCdybicsJ3JtJywnbW0nLCdjbycsJ2RvJywnY2wnLCdkYicsJ3FwJywncWInLCdkcCcsJ3d3J107CgokaW5kZXhlZEV4Y2x1ZGVzID0gYXJyYXlfY29tYmluZSgkZXhjbHVkZXMsICRleGNsdWRlcyk7CiRkaWN0aW9uYXJ5QXJyYXkgPSBzdHJfc3BsaXQoJHN0cik7CgpmdW5jdGlvbiBmYXN0Q2FwdGNoYShhcnJheSAkZGljdGlvbmFyeSwgYXJyYXkgJGV4Y2x1ZGVkU3lsbGFibGVzLCBpbnQgJGxlbmd0aCk6IHN0cmluZwp7CiAgICAkY2FwdGNoYSA9ICcnOwogICAgJGdlbmVyYXRlZExlbmd0aCA9IDA7CgogICAgd2hpbGUgKCRnZW5lcmF0ZWRMZW5ndGggPCAkbGVuZ3RoKSB7CiAgICAgICAgJHJhbmRvbUNoYXJhY3RlciA9ICRkaWN0aW9uYXJ5W2FycmF5X3JhbmQoJGRpY3Rpb25hcnkpXTsKICAgICAgICAkY2FwdGNoYSAuPSAkcmFuZG9tQ2hhcmFjdGVyOwogICAgICAgICRnZW5lcmF0ZWRMZW5ndGgrKzsKICAgIH0KCiAgICByZXR1cm4gJGNhcHRjaGE7Cn0KCiRleGNsdWRlc1JlZ2V4ID0gJy8nIC4gaW1wbG9kZSgnfCcsICRleGNsdWRlcykgLiAnLyc7Cgokc2hvcnRDYXB0Y2hhcyAgPSBbXTsKJG1lZGl1bUNhcHRjaGFzID0gW107CiRsb25nQ2FwdGNoYXMgICA9IFtdOwpmb3IgKCRpID0gMDsgJGkgPCAxMDAwMDA7ICRpKyspCiAgICAkc2hvcnRDYXB0Y2hhc1tdICA9IGZhc3RDYXB0Y2hhKCRkaWN0aW9uYXJ5QXJyYXksICRpbmRleGVkRXhjbHVkZXMsIDIpOwogICAgJG1lZGl1bUNhcHRjaGFzW10gPSBmYXN0Q2FwdGNoYSgkZGljdGlvbmFyeUFycmF5LCAkaW5kZXhlZEV4Y2x1ZGVzLCA1KTsKICAgICRsb25nQ2FwdGNoYXNbXSAgID0gZmFzdENhcHRjaGEoJGRpY3Rpb25hcnlBcnJheSwgJGluZGV4ZWRFeGNsdWRlcywgMTApOwoKCiR0MCA9IG1pY3JvdGltZSh0cnVlKTsKCmZvcmVhY2goJHNob3J0Q2FwdGNoYXMgYXMgJGNhcHRjaGEpIHsKCXByZWdfbWF0Y2goJGV4Y2x1ZGVzUmVnZXgsICRjYXB0Y2hhKTsKfQoKJHQxID0gbWljcm90aW1lKHRydWUpOwoKZm9yZWFjaCgkbWVkaXVtQ2FwdGNoYXMgYXMgJGNhcHRjaGEpIHsKCXByZWdfbWF0Y2goJGV4Y2x1ZGVzUmVnZXgsICRjYXB0Y2hhKTsKfQoKJHQyID0gbWljcm90aW1lKHRydWUpOwoKZm9yZWFjaCgkbG9uZ0NhcHRjaGFzIGFzICRjYXB0Y2hhKSB7CglwcmVnX21hdGNoKCRleGNsdWRlc1JlZ2V4LCAkY2FwdGNoYSk7Cn0KCiR0MyA9IG1pY3JvdGltZSh0cnVlKTsKCmVjaG8gInNob3J0IDogIiAuICgkdDEgLSAkdDApIC4gIlxuIjsKZWNobyAibWVkaXVtOiAiIC4gKCR0MiAtICR0MSkgLiAiXG4iOwplY2hvICJsb25nICA6ICIgLiAoJHQzIC0gJHQyKSAuICJcbiI7