Example #1
0
function executeProcess(array $argv)
{
    $rebuses = DirItem::inst(__DIR__, 'rebuses.txt')->getTextFileAdapter();
    $MR = PsMathRebus::inst();
    $result = array();
    foreach ($rebuses->getLines() as $rebus) {
        if (starts_with($rebus, '#')) {
            continue;
            //---
        }
        $rebus = $MR->normalize($rebus);
        switch ($MR->rebusState($rebus)) {
            case PsMathRebus::STATE_HAS_ANSWERS:
                dolog("Take rebus answers: {$rebus}");
                $result[$rebus] = $MR->rebusAnswers($rebus);
                break;
            case PsMathRebus::STATE_NO_ANSWERS:
                dolog("Skipping rebus: {$rebus}");
                $result[$rebus] = array();
                break;
            case PsMathRebus::STATE_NOT_REGISTERED:
                dolog("Processing rebus: {$rebus}");
                $result[$rebus] = PsMathRebusSolver::solve($rebus);
                break;
        }
    }
    $ansDI = DirItem::inst(__DIR__, 'answers.txt');
    $ansDI->remove();
    foreach ($result as $rebus => $answers) {
        $ansDI->writeLineToFile($rebus);
        foreach ($answers as $answer) {
            $ansDI->writeLineToFile($answer);
        }
        $ansDI->writeLineToFile();
    }
    /*
     * Если передан параметр копирования, то скопируем файл после обработки
     */
    if (1 == array_get_value(1, $argv, 0)) {
        dolog('Copy from [{}] to [{}]', $ansDI->getRelPath(), $MR->getAnswersDI()->getRelPath());
        $ansDI->copyTo($MR->getAnswersDI()->getAbsPath());
    }
}
Example #2
0
function smarty_function_chis_rebus($params, Smarty_Internal_Template &$smarty)
{
    $params = ArrayAdapter::inst($params);
    /*
     * Текст ребуса
     */
    $rebus = $params->str('text');
    if ($rebus) {
        return "<div class=\"ps-math-rebus-holder\">{$rebus}</div>";
    }
    $rebus = $params->str('ans');
    if ($rebus) {
        $answers = PsMathRebus::inst()->rebusAnswers($rebus);
        if (is_array($answers)) {
            foreach ($answers as $ans) {
                echo "<div class=\"ps-math-rebus-holder\">{$ans}</div> ";
            }
        } else {
            return PsHtml::spanErr($answers);
        }
    }
}
Example #3
0
<?php

/*
 * Работа с ребусами.
 * Всё идёт по следующему сценарию:
 * Рядом с классом PsMathRebus лежит файл с ребусами и ответами на них: kit...rebuses.txt
 * Процесс берёт файл rebuses.txt с ребусами и обрабатывает его, учитывая, какие ребусы уже были обработаны.
 * По факту обработки строится файл с ответами и копируется на место kit...rebuses.txt
 */
require_once '../ToolsResources.php';
$CALLED_FILE = __FILE__;
$LOGGERS_LIST[] = 'PsMathRebusSolver';
$rebuses = DirItem::inst(__DIR__, 'rebuses.txt')->getTextFileAdapter();
$MR = PsMathRebus::inst();
$result = array();
foreach ($rebuses->getLines() as $rebus) {
    if (starts_with($rebus, '#')) {
        continue;
    }
    $rebus = $MR->normalize($rebus);
    switch ($MR->rebusState($rebus)) {
        case PsMathRebus::STATE_HAS_ANSWERS:
            dolog("Take rebus answers: {$rebus}");
            $result[$rebus] = $MR->rebusAnswers($rebus);
            break;
        case PsMathRebus::STATE_NO_ANSWERS:
            dolog("Scipping rebus: {$rebus}");
            $result[$rebus] = array();
            break;
        case PsMathRebus::STATE_NOT_REGISTERED:
            dolog("Processing rebus: {$rebus}");
Example #4
0
 /** @return PsMathRebus */
 public static function solve($rebus, $skipFirstChars = true)
 {
     $rebus = PsMathRebus::inst()->normalize($rebus);
     $solver = new PsMathRebusSolver();
     $solver->SCIP_FIRST_CHARS = $skipFirstChars;
     return $solver->doSolve($rebus);
 }