aboutsummaryrefslogtreecommitdiff
path: root/challenge-069
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-07-24 12:37:53 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-07-24 12:37:53 +0100
commitd4ef2c42773b5878950e4b55741fb2934705ddeb (patch)
tree1bdccb3f070773793cc10470c5ad5549487e0dd4 /challenge-069
parentb27c87b1c0b4b8ffb916d9938c373e4d60d82dc1 (diff)
downloadperlweeklychallenge-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.swift73
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)
+}