Extract numbers to package
This commit is contained in:
parent
89b0f808bd
commit
ae11ea6a56
6 changed files with 97 additions and 5122 deletions
1
.phpunit.cache/test-run-history
Normal file
1
.phpunit.cache/test-run-history
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":2,"defects":[],"times":{"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Dto\\NumbersBagTest::test_replace_numbers with data set #0":0.006,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Dto\\NumbersBagTest::test_replace_numbers with data set #1":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Dto\\NumbersResultTest::test_to_array with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Dto\\NumbersResultTest::test_log_step with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_find_results with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_get_closest_result with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_get_closest_result with data set #1":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_get_closest_result with data set #2":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_get_closest_result with data set #3":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_get_closest_result with data set #4":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\PairServiceTest::test_get_pairs with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\PairServiceTest::test_get_pairs with data set #1":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\PairServiceTest::test_get_pairs with data set #2":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\PairServiceTest::test_get_pairs with data set #3":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\StepTest::test_to_array with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\StepTest::test_to_string with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\OperationsServiceTest::test_process_operation with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\OperationsServiceTest::test_process_operation with data set #1":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\OperationsServiceTest::test_process_operation with data set #2":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\OperationsServiceTest::test_process_operation with data set #3":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\StepTest::test_to_array with data set #1":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\StepTest::test_get_result with data set #0":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\StepTest::test_get_result with data set #1":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\StepTest::test_to_string with data set #1":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\OperationsServiceTest::test_process_operation with data set #4":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\OperationsServiceTest::test_process_operation with data set #5":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_find_results with data set #1":0.001,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_find_results with data set #2":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_find_results with data set #3":0.001,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_find_results with data set #4":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_find_results with data set #5":1.38,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_find_results with data set #6":1.364,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\NumbersServiceTest::test_process_step":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\PairServiceTest::test_get_pairs with data set #4":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\PairServiceTest::test_get_pairs with data set #5":0,"Lvl0\\AnagramFinder\\TUI\\Tests\\Unit\\Services\\PairServiceTest::test_get_pairs with data set #6":0}}
|
||||
12
bin/numbers
Executable file
12
bin/numbers
Executable file
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../autoload.php';
|
||||
|
||||
use Lvl0\AnagramFinder\TUI\Commands\FindNumbersCommand;
|
||||
use Symfony\Component\Console\Application;
|
||||
|
||||
$application = new Application('Countdown numbers Finder', '1.0.0');
|
||||
$application->addCommand(new FindNumbersCommand());
|
||||
$application->setDefaultCommand('find-numbers');
|
||||
$application->run();
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
{
|
||||
"name": "anagram-finder/tui",
|
||||
"name": "countdown/tui",
|
||||
"description": "A TUI anagram finder in PHP",
|
||||
"type": "project",
|
||||
"require": {
|
||||
"anagram-finder/core": "^0.1.0",
|
||||
"countdown/letters": "^0.1.2",
|
||||
"countdown/numbers": "^0.1.0",
|
||||
"illuminate/collections": "^13.26",
|
||||
"laravel/prompts": "^0.3.23"
|
||||
},
|
||||
|
|
@ -27,7 +28,11 @@
|
|||
"repositories": [
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "ssh://git@forge.lvl0.xyz:2222/anagram-finder/core.git"
|
||||
"url": "ssh://git@forge.lvl0.xyz:2222/countdown/letters-core.git"
|
||||
},
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "ssh://git@forge.lvl0.xyz:2222/countdown/numbers-core.git"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
5119
composer.lock
generated
5119
composer.lock
generated
File diff suppressed because it is too large
Load diff
27
phpunit.xml
Normal file
27
phpunit.xml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
||||
bootstrap="vendor/autoload.php"
|
||||
cacheDirectory=".phpunit.cache"
|
||||
colors="true"
|
||||
displayDetailsOnTestsThatTriggerDeprecations="true"
|
||||
displayDetailsOnTestsThatTriggerErrors="true"
|
||||
displayDetailsOnTestsThatTriggerNotices="true"
|
||||
displayDetailsOnTestsThatTriggerWarnings="true"
|
||||
failOnDeprecation="true"
|
||||
failOnNotice="true"
|
||||
failOnWarning="true">
|
||||
<testsuites>
|
||||
<testsuite name="Unit">
|
||||
<directory>tests/Unit</directory>
|
||||
</testsuite>
|
||||
<testsuite name="Feature">
|
||||
<directory>tests/Feature</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<source>
|
||||
<include>
|
||||
<directory>src</directory>
|
||||
</include>
|
||||
</source>
|
||||
</phpunit>
|
||||
49
src/Commands/FindNumbersCommand.php
Normal file
49
src/Commands/FindNumbersCommand.php
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace Lvl0\AnagramFinder\TUI\Commands;
|
||||
|
||||
use Lvl0\AnagramFinder\TUI\Dtos\NumbersBag;
|
||||
use Lvl0\AnagramFinder\TUI\Dtos\Step;
|
||||
use Lvl0\AnagramFinder\TUI\Services\NumbersService;
|
||||
use Symfony\Component\Console\Attribute\AsCommand;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
|
||||
use function Laravel\Prompts\callout;
|
||||
use function Laravel\Prompts\clear;
|
||||
use function Laravel\Prompts\intro;
|
||||
use function Laravel\Prompts\spin;
|
||||
use function Laravel\Prompts\text;
|
||||
|
||||
#[AsCommand(name: 'find-numbers')]
|
||||
class FindNumbersCommand extends Command
|
||||
{
|
||||
public function __invoke(): int
|
||||
{
|
||||
clear();
|
||||
|
||||
intro("NUMBERS FINDER");
|
||||
|
||||
$numbers = NumbersBag::fromArray(explode(" ", text("Enter the numbers", required: true)));
|
||||
$target = text(label: "Enter the target number", required: true);
|
||||
|
||||
$result = spin(
|
||||
callback: fn() => new NumbersService($numbers)->solve($target),
|
||||
message: 'Calculating...',
|
||||
);
|
||||
|
||||
$stepsStr = $result->getSteps()->map(fn(Step $s) => $s->toString());
|
||||
|
||||
// var_dump($stepsStr->toArray());
|
||||
|
||||
$distance = (abs($target - $result->getResult()));
|
||||
|
||||
callout(
|
||||
label: $distance === 0 ? 'Found!' : "Off by {$distance}",
|
||||
content: $result->getSteps()->map(fn(Step $s) => $s->toString())->all(),
|
||||
type: $distance === 0 ? 'success' : 'warning',
|
||||
info: 'Steps needed to get to the solution',
|
||||
);
|
||||
|
||||
return self::SUCCESS;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue