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