From abf3d494b4fbf07177c64d0c622e69ced34ec232 Mon Sep 17 00:00:00 2001 From: Tomas Norre Mikkelsen Date: Wed, 30 Oct 2024 15:43:49 +0100 Subject: [PATCH] Sync armstrong-numbers (#831) [no important files changed] --- .../armstrong-numbers/.docs/instructions.md | 8 ++- .../armstrong-numbers/.meta/config.json | 2 +- .../armstrong-numbers/.meta/example.php | 22 ------- .../armstrong-numbers/.meta/tests.toml | 39 +++++++++---- .../ArmstrongNumbersTest.php | 58 ++++++++++++------- 5 files changed, 70 insertions(+), 59 deletions(-) diff --git a/exercises/practice/armstrong-numbers/.docs/instructions.md b/exercises/practice/armstrong-numbers/.docs/instructions.md index 452a996f..5e56bbe4 100644 --- a/exercises/practice/armstrong-numbers/.docs/instructions.md +++ b/exercises/practice/armstrong-numbers/.docs/instructions.md @@ -1,12 +1,14 @@ # Instructions -An [Armstrong number](https://en.wikipedia.org/wiki/Narcissistic_number) is a number that is the sum of its own digits each raised to the power of the number of digits. +An [Armstrong number][armstrong-number] is a number that is the sum of its own digits each raised to the power of the number of digits. For example: - 9 is an Armstrong number, because `9 = 9^1 = 9` -- 10 is *not* an Armstrong number, because `10 != 1^2 + 0^2 = 1` +- 10 is _not_ an Armstrong number, because `10 != 1^2 + 0^2 = 1` - 153 is an Armstrong number, because: `153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153` -- 154 is *not* an Armstrong number, because: `154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190` +- 154 is _not_ an Armstrong number, because: `154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190` Write some code to determine whether a number is an Armstrong number. + +[armstrong-number]: https://en.wikipedia.org/wiki/Narcissistic_number diff --git a/exercises/practice/armstrong-numbers/.meta/config.json b/exercises/practice/armstrong-numbers/.meta/config.json index b0906dbb..14aea117 100644 --- a/exercises/practice/armstrong-numbers/.meta/config.json +++ b/exercises/practice/armstrong-numbers/.meta/config.json @@ -17,7 +17,7 @@ ".meta/example.php" ] }, - "blurb": "Determine if a number is an Armstrong number", + "blurb": "Determine if a number is an Armstrong number.", "source": "Wikipedia", "source_url": "https://en.wikipedia.org/wiki/Narcissistic_number" } diff --git a/exercises/practice/armstrong-numbers/.meta/example.php b/exercises/practice/armstrong-numbers/.meta/example.php index 2d61033e..b091bcea 100644 --- a/exercises/practice/armstrong-numbers/.meta/example.php +++ b/exercises/practice/armstrong-numbers/.meta/example.php @@ -1,27 +1,5 @@ . - * - * To disable strict typing, comment out the directive below. - */ - declare(strict_types=1); function isArmstrongNumber(int $number): bool diff --git a/exercises/practice/armstrong-numbers/.meta/tests.toml b/exercises/practice/armstrong-numbers/.meta/tests.toml index fdada6d1..5b305d25 100644 --- a/exercises/practice/armstrong-numbers/.meta/tests.toml +++ b/exercises/practice/armstrong-numbers/.meta/tests.toml @@ -1,30 +1,47 @@ -# This is an auto-generated file. Regular comments will be removed when this -# file is regenerated. Regenerating will not touch any manually added keys, -# so comments can be added in a "comment" key. +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. [c1ed103c-258d-45b2-be73-d8c6d9580c7b] description = "Zero is an Armstrong number" [579e8f03-9659-4b85-a1a2-d64350f6b17a] -description = "Single digit numbers are Armstrong numbers" +description = "Single-digit numbers are Armstrong numbers" [2d6db9dc-5bf8-4976-a90b-b2c2b9feba60] -description = "There are no 2 digit Armstrong numbers" +description = "There are no two-digit Armstrong numbers" [509c087f-e327-4113-a7d2-26a4e9d18283] -description = "Three digit number that is an Armstrong number" +description = "Three-digit number that is an Armstrong number" [7154547d-c2ce-468d-b214-4cb953b870cf] -description = "Three digit number that is not an Armstrong number" +description = "Three-digit number that is not an Armstrong number" [6bac5b7b-42e9-4ecb-a8b0-4832229aa103] -description = "Four digit number that is an Armstrong number" +description = "Four-digit number that is an Armstrong number" [eed4b331-af80-45b5-a80b-19c9ea444b2e] -description = "Four digit number that is not an Armstrong number" +description = "Four-digit number that is not an Armstrong number" [f971ced7-8d68-4758-aea1-d4194900b864] -description = "Seven digit number that is an Armstrong number" +description = "Seven-digit number that is an Armstrong number" [7ee45d52-5d35-4fbd-b6f1-5c8cd8a67f18] -description = "Seven digit number that is not an Armstrong number" +description = "Seven-digit number that is not an Armstrong number" + +[5ee2fdf8-334e-4a46-bb8d-e5c19c02c148] +description = "Armstrong number containing seven zeroes" +include = false +comment = "PHP does not support integers > 64bit in its standard library" + +[12ffbf10-307a-434e-b4ad-c925680e1dd4] +description = "The largest and last Armstrong number" +include = false +comment = "PHP does not support integers > 64bit in its standard library" diff --git a/exercises/practice/armstrong-numbers/ArmstrongNumbersTest.php b/exercises/practice/armstrong-numbers/ArmstrongNumbersTest.php index 9623f77a..a70b4503 100644 --- a/exercises/practice/armstrong-numbers/ArmstrongNumbersTest.php +++ b/exercises/practice/armstrong-numbers/ArmstrongNumbersTest.php @@ -1,27 +1,5 @@ . - * - * To disable strict typing, comment out the directive below. - */ - declare(strict_types=1); class ArmstrongNumbersTest extends PHPUnit\Framework\TestCase @@ -31,46 +9,82 @@ public static function setUpBeforeClass(): void require_once 'ArmstrongNumbers.php'; } + /** + * uuid: c1ed103c-258d-45b2-be73-d8c6d9580c7b + * @testdox Zero is an Armstrong number + */ public function testZero(): void { $this->assertTrue(isArmstrongNumber(0)); } + /** + * uuid: 579e8f03-9659-4b85-a1a2-d64350f6b17a + * @testdox Single-digit numbers are Armstrong numbers + */ public function testSingleDigit(): void { $this->assertTrue(isArmstrongNumber(5)); } + /** + * uuid: 2d6db9dc-5bf8-4976-a90b-b2c2b9feba60 + * @testdox There are no two-digit Armstrong numbers + */ public function testDoubleDigit(): void { $this->assertFalse(isArmstrongNumber(10)); } + /** + * uuid: 509c087f-e327-4113-a7d2-26a4e9d18283 + * @testdox Three-digit number that is an Armstrong number + */ public function testThreeDigitIsArmstrongNumber(): void { $this->assertTrue(isArmstrongNumber(153)); } + /** + * uuid: 7154547d-c2ce-468d-b214-4cb953b870cf + * @testdox Three-digit number that is not an Armstrong number + */ public function testThreeDigitIsNotArmstrongNumber(): void { $this->assertFalse(isArmstrongNumber(100)); } + /** + * uuid: 6bac5b7b-42e9-4ecb-a8b0-4832229aa103 + * @testdox Four-digit number that is an Armstrong number + */ public function testFourDigitIsArmstrongNumber(): void { $this->assertTrue(isArmstrongNumber(9474)); } + /** + * uuid: eed4b331-af80-45b5-a80b-19c9ea444b2e + * @testdox Four-digit number that is not an Armstrong number + */ public function testFourDigitIsNotArmstrongNumber(): void { $this->assertFalse(isArmstrongNumber(9475)); } + /** + * uuid: f971ced7-8d68-4758-aea1-d4194900b864 + * @testdox Seven-digit number that is an Armstrong number + */ public function testSevenDigitIsArmstrongNumber(): void { $this->assertTrue(isArmstrongNumber(9926315)); } + /** + * uuid: 7ee45d52-5d35-4fbd-b6f1-5c8cd8a67f18 + * @testdox Seven-digit number that is not an Armstrong number + */ public function testSevenDigitIsNotArmstrongNumber(): void { $this->assertFalse(isArmstrongNumber(9926314));