-
-
Notifications
You must be signed in to change notification settings - Fork 158
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5f659a4
commit 8eff39b
Showing
4 changed files
with
68 additions
and
73 deletions.
There are no files selected for viewing
4 changes: 2 additions & 2 deletions
4
...s/practice/armstrong-numbers/.meta/Sources/ArmstrongNumbers/ArmstrongNumbersExample.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
import Foundation | ||
|
||
func isArmstrongNumber(_ number: Int128) -> Bool { | ||
func isArmstrongNumber(_ number: Int) -> Bool { | ||
let stringNumber = String(number) | ||
let numberLength = stringNumber.count | ||
let sum = stringNumber.compactMap { Int(String($0)) }.reduce(0) { $0 + Int(pow(Double($1), Double(numberLength))) } | ||
let sum: Int = stringNumber.compactMap { Int(String($0)) }.reduce(0) { $0 + Int(pow(Double($1), Double(numberLength))) } | ||
return sum == number | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
105 changes: 49 additions & 56 deletions
105
exercises/practice/armstrong-numbers/Tests/ArmstrongNumbersTests/ArmstrongNumbersTests.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,61 +1,54 @@ | ||
import Testing | ||
import Foundation | ||
import Testing | ||
|
||
@testable import ArmstrongNumbers | ||
|
||
let RUNALL = Bool(ProcessInfo.processInfo.environment["RUNALL", default: "false"]) ?? false | ||
|
||
@Test("Zero is an Armstrong number") | ||
func testZeroIsAnArmstrongNumber() { | ||
#expect(isArmstrongNumber(0)) | ||
} | ||
|
||
@Test("Single-digit numbers are Armstrong numbers", .enabled(if: RUNALL)) | ||
func testSingleDigitNumbersAreArmstrongNumbers() throws { | ||
#expect(isArmstrongNumber(5)) | ||
} | ||
|
||
@Test("There are no two-digit Armstrong numbers", .enabled(if: RUNALL)) | ||
func testThereAreNoTwoDigitArmstrongNumbers() throws { | ||
#expect(isArmstrongNumber(10)) | ||
} | ||
|
||
@Test("Three-digit number that is an Armstrong number", .enabled(if: RUNALL)) | ||
func testThreeDigitNumberThatIsAnArmstrongNumber() throws { | ||
#expect(isArmstrongNumber(153)) | ||
} | ||
|
||
@Test("Three-digit number that is not an Armstrong number", .enabled(if: RUNALL)) | ||
func testThreeDigitNumberThatIsNotAnArmstrongNumber() throws { | ||
#expect(isArmstrongNumber(100)) | ||
} | ||
|
||
@Test("Four-digit number that is an Armstrong number", .enabled(if: RUNALL)) | ||
func testFourDigitNumberThatIsAnArmstrongNumber() throws { | ||
#expect(isArmstrongNumber(9474)) | ||
} | ||
|
||
@Test("Four-digit number that is not an Armstrong number", .enabled(if: RUNALL)) | ||
func testFourDigitNumberThatIsNotAnArmstrongNumber() throws { | ||
#expect(isArmstrongNumber(9475)) | ||
} | ||
|
||
@Test("Seven-digit number that is an Armstrong number", .enabled(if: RUNALL)) | ||
func testSevenDigitNumberThatIsAnArmstrongNumber() throws { | ||
#expect(isArmstrongNumber(9_926_315)) | ||
} | ||
|
||
@Test("Seven-digit number that is not an Armstrong number", .enabled(if: RUNALL)) | ||
func testSevenDigitNumberThatIsNotAnArmstrongNumber() throws { | ||
#expect(isArmstrongNumber(9_926_314)) | ||
} | ||
|
||
@Test("Armstrong number containing seven zeroes", .enabled(if: RUNALL)) | ||
func testArmstrongNumberContainingSevenZeroes() throws { | ||
#expect(isArmstrongNumber(186_709_961_001_538_790_100_634_132_976_990)) | ||
} | ||
|
||
@Test("The largest and last Armstrong number", .enabled(if: RUNALL)) | ||
func testTheLargestAndLastArmstrongNumber() throws { | ||
#expect(isArmstrongNumber(115_132_219_018_763_992_565_095_597_973_971_522_401)) | ||
let RUNALL = Bool(ProcessInfo.processInfo.environment["RUNALL", default: "true"]) ?? false | ||
|
||
@Suite struct ArmstrongNumbersTests { | ||
|
||
@Test("Zero is an Armstrong number") | ||
func testZeroIsAnArmstrongNumber() { | ||
#expect(isArmstrongNumber(0)) | ||
} | ||
|
||
@Test("Single-digit numbers are Armstrong numbers", .enabled(if: RUNALL)) | ||
func testSingleDigitNumbersAreArmstrongNumbers() { | ||
#expect(isArmstrongNumber(5)) | ||
} | ||
|
||
@Test("There are no two-digit Armstrong numbers", .enabled(if: RUNALL)) | ||
func testThereAreNoTwoDigitArmstrongNumbers() { | ||
#expect(!isArmstrongNumber(10)) | ||
} | ||
|
||
@Test("Three-digit number that is an Armstrong number", .enabled(if: RUNALL)) | ||
func testThreeDigitNumberThatIsAnArmstrongNumber() { | ||
#expect(isArmstrongNumber(153)) | ||
} | ||
|
||
@Test("Three-digit number that is not an Armstrong number", .enabled(if: RUNALL)) | ||
func testThreeDigitNumberThatIsNotAnArmstrongNumber() { | ||
#expect(!isArmstrongNumber(100)) | ||
} | ||
|
||
@Test("Four-digit number that is an Armstrong number", .enabled(if: RUNALL)) | ||
func testFourDigitNumberThatIsAnArmstrongNumber() { | ||
#expect(isArmstrongNumber(9474)) | ||
} | ||
|
||
@Test("Four-digit number that is not an Armstrong number", .enabled(if: RUNALL)) | ||
func testFourDigitNumberThatIsNotAnArmstrongNumber() { | ||
#expect(!isArmstrongNumber(9475)) | ||
} | ||
|
||
@Test("Seven-digit number that is an Armstrong number", .enabled(if: RUNALL)) | ||
func testSevenDigitNumberThatIsAnArmstrongNumber() { | ||
#expect(isArmstrongNumber(9_926_315)) | ||
} | ||
|
||
@Test("Seven-digit number that is not an Armstrong number", .enabled(if: RUNALL)) | ||
func testSevenDigitNumberThatIsNotAnArmstrongNumber() { | ||
#expect(!isArmstrongNumber(9_926_314)) | ||
} | ||
} |