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