diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-24 12:37:53 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-24 12:37:53 +0100 |
| commit | d4ef2c42773b5878950e4b55741fb2934705ddeb (patch) | |
| tree | 1bdccb3f070773793cc10470c5ad5549487e0dd4 /challenge-069 | |
| parent | b27c87b1c0b4b8ffb916d9938c373e4d60d82dc1 (diff) | |
| download | perlweeklychallenge-club-d4ef2c42773b5878950e4b55741fb2934705ddeb.tar.gz perlweeklychallenge-club-d4ef2c42773b5878950e4b55741fb2934705ddeb.tar.bz2 perlweeklychallenge-club-d4ef2c42773b5878950e4b55741fb2934705ddeb.zip | |
- Added solutions by Mark Anderson
- Added Swift solution to Task #1 of Week #069.
Diffstat (limited to 'challenge-069')
| -rw-r--r-- | challenge-069/mohammad-anwar/swift/ch-1.swift | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/challenge-069/mohammad-anwar/swift/ch-1.swift b/challenge-069/mohammad-anwar/swift/ch-1.swift new file mode 100644 index 0000000000..cad8eb1c81 --- /dev/null +++ b/challenge-069/mohammad-anwar/swift/ch-1.swift @@ -0,0 +1,73 @@ +import Foundation + +/* +Perl Weekly Challenge - 069 + +Task #1: Strobogrammatic Number + +https://perlweeklychallenge.org/blog/perl-weekly-challenge-069 +*/ + +extension Int { + var digits : [Int] { + var result = [Int]() + var remaining = abs(self) + while remaining > 0 { + result.insert(remaining % 10, at: 0) + remaining /= 10 + } + return result + } +} + +enum ParamError: Error { + case missingAandB + case missingB +} + +do { + let paramCount:Int = Int(CommandLine.argc) + + if paramCount <= 1 { + throw ParamError.missingAandB + } + else if paramCount <= 2 { + throw ParamError.missingB + } + + let A:Int = Int(CommandLine.arguments[1])! + let B:Int = Int(CommandLine.arguments[2])! + + var strobogrammatic:[Int] = [] + let digits: [Int: Int] = [6 : 9, 8 : 8, 9 : 6] + for i in A...B { + var found:Bool = true + var match:String = "" + for d in i.digits { + if digits[d] != nil { + match += String(digits[d]!) + } + else { + found = false + break + } + } + + if found { + if String(i) == String(match.reversed()) { + strobogrammatic.append(i) + } + } + } + + print(strobogrammatic) +} +catch ParamError.missingAandB { + print("Missing A and B") +} +catch ParamError.missingB { + print("Missing B") +} +catch let error { + print(error) +} |
