Julio Biason
3 years ago
6 changed files with 177 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||||||
|
{ |
||||||
|
"blurb": "Reverse a string", |
||||||
|
"authors": ["MichaelBunker"], |
||||||
|
"contributors": [], |
||||||
|
"files": { |
||||||
|
"solution": ["ReverseString.php"], |
||||||
|
"test": ["ReverseStringTest.php"], |
||||||
|
"example": [".meta/example.php"] |
||||||
|
} |
||||||
|
} |
@ -0,0 +1 @@ |
|||||||
|
{"track":"php","exercise":"reverse-string","id":"af5aa937e83b4c10940c1025f6c9c4b7","url":"https://exercism.org/tracks/php/exercises/reverse-string","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 ReverseString.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,18 @@ |
|||||||
|
# Reverse String |
||||||
|
|
||||||
|
Welcome to Reverse String on Exercism's PHP Track. |
||||||
|
If you need help running the tests or submitting your code, check out `HELP.md`. |
||||||
|
|
||||||
|
## Instructions |
||||||
|
|
||||||
|
Reverse a string |
||||||
|
|
||||||
|
For example: |
||||||
|
input: "cool" |
||||||
|
output: "looc" |
||||||
|
|
||||||
|
## Source |
||||||
|
|
||||||
|
### Created by |
||||||
|
|
||||||
|
- @MichaelBunker |
@ -0,0 +1,34 @@ |
|||||||
|
<?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); |
||||||
|
|
||||||
|
function reverseString(string $text): string |
||||||
|
{ |
||||||
|
$result = ''; |
||||||
|
for ($i = strlen($text) - 1; $i >= 0; --$i) { |
||||||
|
$result .= $text[$i]; |
||||||
|
} |
||||||
|
return $result; |
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
<?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 ReverseStringTest extends PHPUnit\Framework\TestCase |
||||||
|
{ |
||||||
|
public static function setUpBeforeClass(): void |
||||||
|
{ |
||||||
|
require_once 'ReverseString.php'; |
||||||
|
} |
||||||
|
|
||||||
|
public function testEmptyString(): void |
||||||
|
{ |
||||||
|
$this->assertEquals("", reverseString("")); |
||||||
|
} |
||||||
|
|
||||||
|
public function testWord(): void |
||||||
|
{ |
||||||
|
$this->assertEquals("tobor", reverseString("robot")); |
||||||
|
} |
||||||
|
|
||||||
|
public function testCapitalizedWord(): void |
||||||
|
{ |
||||||
|
$this->assertEquals("nemaR", reverseString("Ramen")); |
||||||
|
} |
||||||
|
|
||||||
|
public function testSentenceWithPunctuation(): void |
||||||
|
{ |
||||||
|
$this->assertEquals("!yrgnuh m'I", reverseString("I'm hungry!")); |
||||||
|
} |
||||||
|
|
||||||
|
public function testPalindrome(): void |
||||||
|
{ |
||||||
|
$this->assertEquals("racecar", reverseString("racecar")); |
||||||
|
} |
||||||
|
|
||||||
|
public function testEvenSizedWord(): void |
||||||
|
{ |
||||||
|
$this->assertEquals("reward", reverseString("drawer")); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue