Julio Biason
3 years ago
6 changed files with 196 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||||||
|
{ |
||||||
|
"blurb": "Convert a resistor band's color to its numeric representation", |
||||||
|
"authors": ["camilopayan"], |
||||||
|
"contributors": ["MichaelBunker"], |
||||||
|
"files": { |
||||||
|
"solution": ["ResistorColor.php"], |
||||||
|
"test": ["ResistorColorTest.php"], |
||||||
|
"example": [".meta/example.php"] |
||||||
|
} |
||||||
|
} |
@ -0,0 +1 @@ |
|||||||
|
{"track":"php","exercise":"resistor-color","id":"bc671895e6b54bc297b7e785fa301020","url":"https://exercism.org/tracks/php/exercises/resistor-color","handle":"JBiason","is_requester":true,"auto_approve":false} |
@ -0,0 +1,51 @@ |
|||||||
|
# Help |
||||||
|
|
||||||
|
## Running the tests |
||||||
|
|
||||||
|
## Running the tests |
||||||
|
|
||||||
|
1. Go to the root of your PHP exercise directory, which is `<EXERCISM_WORKSPACE>/php`. |
||||||
|
To find the Exercism workspace run |
||||||
|
|
||||||
|
➜ exercism debug | grep Workspace |
||||||
|
|
||||||
|
1. Get [PHPUnit] if you don't have it already. |
||||||
|
|
||||||
|
➜ wget -O phpunit https://phar.phpunit.de/phpunit-9.phar |
||||||
|
➜ chmod +x phpunit |
||||||
|
➜ ./phpunit --version |
||||||
|
|
||||||
|
2. Execute the tests: |
||||||
|
|
||||||
|
➜ ./phpunit file_to_test.php |
||||||
|
|
||||||
|
For example, to run the tests for the Hello World exercise, you would run: |
||||||
|
|
||||||
|
➜ ./phpunit HelloWorldTest.php |
||||||
|
|
||||||
|
[PHPUnit]: http://phpunit.de |
||||||
|
|
||||||
|
## Submitting your solution |
||||||
|
|
||||||
|
You can submit your solution using the `exercism submit ResistorColor.php` command. |
||||||
|
This command will upload your solution to the Exercism website and print the solution page's URL. |
||||||
|
|
||||||
|
It's possible to submit an incomplete solution which allows you to: |
||||||
|
|
||||||
|
- See how others have completed the exercise |
||||||
|
- Request help from a mentor |
||||||
|
|
||||||
|
## Need to get help? |
||||||
|
|
||||||
|
If you'd like help solving the exercise, check the following pages: |
||||||
|
|
||||||
|
- The [PHP track's documentation](https://exercism.org/docs/tracks/php) |
||||||
|
- [Exercism's support channel on gitter](https://gitter.im/exercism/support) |
||||||
|
- The [Frequently Asked Questions](https://exercism.org/docs/using/faqs) |
||||||
|
|
||||||
|
Should those resources not suffice, you could submit your (incomplete) solution to request mentoring. |
||||||
|
|
||||||
|
To get help if you're having trouble, you can use one of the following resources: |
||||||
|
|
||||||
|
- [/r/php](https://www.reddit.com/r/php) is the PHP subreddit. |
||||||
|
- [StackOverflow](https://stackoverflow.com/questions/tagged/php) can be used to search for your problem and see if it has been answered already. You can also ask and answer questions. |
@ -0,0 +1,35 @@ |
|||||||
|
# Resistor Color |
||||||
|
|
||||||
|
Welcome to Resistor Color on Exercism's PHP Track. |
||||||
|
If you need help running the tests or submitting your code, check out `HELP.md`. |
||||||
|
|
||||||
|
## Instructions |
||||||
|
|
||||||
|
Resistors have color coded bands, where each color maps to a number. The first 2 bands of a resistor have a simple encoding scheme: each color maps to a single number. |
||||||
|
|
||||||
|
These colors are encoded as follows: |
||||||
|
|
||||||
|
- Black: 0 |
||||||
|
- Brown: 1 |
||||||
|
- Red: 2 |
||||||
|
- Orange: 3 |
||||||
|
- Yellow: 4 |
||||||
|
- Green: 5 |
||||||
|
- Blue: 6 |
||||||
|
- Violet: 7 |
||||||
|
- Grey: 8 |
||||||
|
- White: 9 |
||||||
|
|
||||||
|
Mnemonics map the colors to the numbers, that, when stored as an array, happen to map to their index in the array: Better Be Right Or Your Great Big Values Go Wrong. |
||||||
|
|
||||||
|
More information on the color encoding of resistors can be found in the [Electronic color code Wikipedia article](https://en.wikipedia.org/wiki/Electronic_color_code) |
||||||
|
|
||||||
|
## Source |
||||||
|
|
||||||
|
### Created by |
||||||
|
|
||||||
|
- @camilopayan |
||||||
|
|
||||||
|
### Contributed to by |
||||||
|
|
||||||
|
- @MichaelBunker |
@ -0,0 +1,35 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* |
||||||
|
* By adding type hints and enabling strict type checking, code can become |
||||||
|
* easier to read, self-documenting and reduce the number of potential bugs. |
||||||
|
* By default, type declarations are non-strict, which means they will attempt |
||||||
|
* to change the original type to match the type specified by the |
||||||
|
* type-declaration. |
||||||
|
* |
||||||
|
* In other words, if you pass a string to a function requiring a float, |
||||||
|
* it will attempt to convert the string value to a float. |
||||||
|
* |
||||||
|
* To enable strict mode, a single declare directive must be placed at the top |
||||||
|
* of the file. |
||||||
|
* This means that the strictness of typing is configured on a per-file basis. |
||||||
|
* This directive not only affects the type declarations of parameters, but also |
||||||
|
* a function's return type. |
||||||
|
* |
||||||
|
* For more info review the Concept on strict type checking in the PHP track |
||||||
|
* <link>. |
||||||
|
* |
||||||
|
* To disable strict typing, comment out the directive below. |
||||||
|
*/ |
||||||
|
|
||||||
|
declare(strict_types=1); |
||||||
|
|
||||||
|
define("COLORS", |
||||||
|
array("black", "brown", "red", "orange", "yellow", "green", "blue", |
||||||
|
"violet", "grey", "white") |
||||||
|
); |
||||||
|
|
||||||
|
function colorCode(string $color): int |
||||||
|
{ |
||||||
|
return array_search($color, COLORS); |
||||||
|
} |
@ -0,0 +1,64 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* |
||||||
|
* By adding type hints and enabling strict type checking, code can become |
||||||
|
* easier to read, self-documenting and reduce the number of potential bugs. |
||||||
|
* By default, type declarations are non-strict, which means they will attempt |
||||||
|
* to change the original type to match the type specified by the |
||||||
|
* type-declaration. |
||||||
|
* |
||||||
|
* In other words, if you pass a string to a function requiring a float, |
||||||
|
* it will attempt to convert the string value to a float. |
||||||
|
* |
||||||
|
* To enable strict mode, a single declare directive must be placed at the top |
||||||
|
* of the file. |
||||||
|
* This means that the strictness of typing is configured on a per-file basis. |
||||||
|
* This directive not only affects the type declarations of parameters, but also |
||||||
|
* a function's return type. |
||||||
|
* |
||||||
|
* For more info review the Concept on strict type checking in the PHP track |
||||||
|
* <link>. |
||||||
|
* |
||||||
|
* To disable strict typing, comment out the directive below. |
||||||
|
*/ |
||||||
|
|
||||||
|
declare(strict_types=1); |
||||||
|
|
||||||
|
class ResistorColorTest extends PHPUnit\Framework\TestCase |
||||||
|
{ |
||||||
|
public static function setUpBeforeClass(): void |
||||||
|
{ |
||||||
|
require_once 'ResistorColor.php'; |
||||||
|
} |
||||||
|
|
||||||
|
public function testBlackColorCode(): void |
||||||
|
{ |
||||||
|
$this->assertEquals(colorCode("black"), 0); |
||||||
|
} |
||||||
|
|
||||||
|
public function testOrangeColorCode(): void |
||||||
|
{ |
||||||
|
$this->assertEquals(colorCode("orange"), 3); |
||||||
|
} |
||||||
|
|
||||||
|
public function testWhiteColorCode(): void |
||||||
|
{ |
||||||
|
$this->assertEquals(colorCode("white"), 9); |
||||||
|
} |
||||||
|
|
||||||
|
public function testColors(): void |
||||||
|
{ |
||||||
|
$this->assertEquals(COLORS, [ |
||||||
|
"black", |
||||||
|
"brown", |
||||||
|
"red", |
||||||
|
"orange", |
||||||
|
"yellow", |
||||||
|
"green", |
||||||
|
"blue", |
||||||
|
"violet", |
||||||
|
"grey", |
||||||
|
"white" |
||||||
|
]); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue