User:Woozle/trickyq.php
Code
<php> <?php /*
FILE: trickyq.php -- Tricky Questions to stop bots Intended to work with the "QuestyCaptcha" mode of the ConfirmEdit extension HISTORY: 2012-07-04 (Wzl) Started 2013-10-22 (Wzl) More or less working -- 100-999 2014-01-01 (Wzl) method to return question and answer in a single array */
$karSingles = array('one','two','three','four','five','six','seven','eight','nine',
'ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen');
$karTens = array('twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety');
class BotTricks {
static public $intNum;
/*---- INPUT: An integer between 1 and 99 inclusive RETURNS: That number, spelled out ASSUMES: iNum is an integer between 1 and 99 inclusive (no validity-checking) */ static public function SpellNumber_99($iNum) {
global $karSingles,$karTens;
self::$intNum = $iNum; if ($iNum < 20) { if ($iNum == 0) { $out = 'zero'; } else { $out = $karSingles[$iNum-1]; } } else { $dec = (int)$iNum/10; $out = $karTens[$dec-2]; $digit = $iNum % 10; // mod 10 = last digit if ($digit > 0) { $out .= '-'.$karSingles[$digit-1]; } } return $out;
}
static public function SpellNumber($iNum) {
$n100 = floor($iNum/100); $n99 = $iNum-($n100*100); $s99 = self::SpellNumber_99($n99);
$sOut = ; if ($n100 > 0) { $s100 = self::SpellNumber_99($n100); $sOut .= $s100.' hundred and '; } $sOut .= $s99; return $sOut;
}
static public function Generate() {
$int = rand(100,999); $out = self::SpellNumber($int); return $out;
} static public function Generate2() {
$nA = rand(100,999); // generate correct answer (number) $sQ = self::SpellNumber($nA); // calculate question (string) $ar = array( 'Q' => $sQ, 'A' => $nA ); return $ar;
}
} </php>