PHP code example of crosseno / builder

1. Go to this page and download the library: Download crosseno/builder library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

crosseno / builder example snippets


use Crosseno\Builder\StandardBuilderFactory;
use Crosseno\Builder\Policy\FailurePolicy;
use Crosseno\Builder\Policy\WorkBudget;
use Crosseno\Builder\Request\BuildDifficulty;
use Crosseno\Builder\Request\IdempotencyKey;
use Crosseno\Builder\Request\StandardBuildRequestFactory;
use Crosseno\Clues\Catalog\LexicalCatalogClueProvider;
use Crosseno\Core\Grid\GridDimensions;
use Crosseno\Core\ResourceLimits;
use Crosseno\Core\Validation\ValidationProfile;
use Crosseno\Generator\Seed\GenerationSeed;
use Crosseno\Generator\Strategy\GenerationStrategy;
use Crosseno\LanguageEn\EnglishLanguagePack;
use Crosseno\Lexicon\Language\LanguageCode;

$limits = ResourceLimits::standard();
$runtime = EnglishLanguagePack::load($limits);
$provider = new LexicalCatalogClueProvider(
    $runtime->catalog(),
    $runtime->metadata()->stableKeyAlgorithmVersion,
);
$builder = (new StandardBuilderFactory())->create(
    $runtime,
    $provider,
    new LanguageCode('en'),
);
$request = (new StandardBuildRequestFactory(
    strategy: GenerationStrategy::Fast,
    difficulty: BuildDifficulty::Easy,
    qualityThreshold: 0,
    failurePolicy: FailurePolicy::fail(),
    workBudget: new WorkBudget(1, 16, 100_000, 100_000),
    validationProfile: ValidationProfile::permissive(),
))->create(
    new LanguageCode('en'),
    new LanguageCode('en'),
    new GridDimensions(7, 7),
    GenerationSeed::fromInteger(12345),
);
$result = $builder->build(
    $request,
    new IdempotencyKey('example-12345'),
    StandardBuilderFactory::synchronousCancellation(),
);

if (!$result->succeeded()) {
    echo $result->failure?->code . ': ' . $result->failure?->message;
    var_dump($result->failure?->context, $result->warnings(), $result->fallbacks());
    return;
}

$grid = $result->crossword?->grid;
$entries = $result->crossword?->entries();
$clues = $result->clues?->assignments();

use Crosseno\Builder\CrosswordBuilder;
use Crosseno\Builder\Generation\EligibilityBuilder;
use Crosseno\Builder\Pack\PackResolver;

$builder = new CrosswordBuilder(
    new PackResolver($packCatalog),
    new EligibilityBuilder(),
    $generatorFactory,
    $clueAssigner,
    $qualityEvaluator,
    $usageHistory,
    $clock,
);
bash
php examples/generate-english.php --rows=7 --columns=7 --strategy=fast --difficulty=easy --seed=12345
php examples/generate-english.php --rows=7 --columns=7 --strategy=fast --difficulty=easy --seed=12345 --debug-json