aboutsummaryrefslogtreecommitdiff
path: root/challenge-070
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-07-24 03:17:54 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-07-24 03:17:54 +0100
commit9bdb587bea1c40e7262203d7a18f49bc3d161e36 (patch)
tree981b1b45e52100d4be7dd9052be7f39ca5cb56e7 /challenge-070
parentb3a812db0366471dcfdc1acfd55f1743a558dc56 (diff)
downloadperlweeklychallenge-club-9bdb587bea1c40e7262203d7a18f49bc3d161e36.tar.gz
perlweeklychallenge-club-9bdb587bea1c40e7262203d7a18f49bc3d161e36.tar.bz2
perlweeklychallenge-club-9bdb587bea1c40e7262203d7a18f49bc3d161e36.zip
- Added Swift solution.
Diffstat (limited to 'challenge-070')
-rwxr-xr-xchallenge-070/mohammad-anwar/swift/ch-1.swift63
1 files changed, 63 insertions, 0 deletions
diff --git a/challenge-070/mohammad-anwar/swift/ch-1.swift b/challenge-070/mohammad-anwar/swift/ch-1.swift
new file mode 100755
index 0000000000..350cee1041
--- /dev/null
+++ b/challenge-070/mohammad-anwar/swift/ch-1.swift
@@ -0,0 +1,63 @@
+import Foundation
+
+/*
+Perl Weekly Challenge - 070
+
+Task #1: Character Swapping
+
+https://perlweeklychallenge.org/blog/perl-weekly-challenge-070
+*/
+
+enum ParamError: Error {
+ case missingStringCountAndOffset
+ case missingCountAndOffset
+ case missingOffset
+}
+
+do {
+ let paramCount:Int = Int(CommandLine.argc)
+
+ if paramCount <= 1 {
+ throw ParamError.missingStringCountAndOffset
+ }
+ else if paramCount <= 2 {
+ throw ParamError.missingCountAndOffset
+ }
+ else if paramCount <= 3 {
+ throw ParamError.missingOffset
+ }
+
+ let string:String = String(CommandLine.arguments[1])
+ let count:String = String(CommandLine.arguments[2])
+ let offset:String = String(CommandLine.arguments[3])
+
+ let o:Int = Int(offset)!
+ let l:Int = string.count;
+
+ // split string
+ var s:[Character] = []
+ for c in string {
+ s.append(c)
+ }
+
+ for i in 1...Int(count)! {
+ let a:Int = i % l;
+ let b:Int = (i + o) % l;
+ (s[a], s[b]) = (s[b], s[a]);
+ }
+
+ // join array of characters
+ print(String(s))
+}
+catch ParamError.missingStringCountAndOffset {
+ print("Missing String, Count and Offset")
+}
+catch ParamError.missingCountAndOffset {
+ print("Missing Count and Offset")
+}
+catch ParamError.missingOffset {
+ print("Missing Offset")
+}
+catch let error {
+ print(error)
+}