diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-24 03:17:54 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-24 03:17:54 +0100 |
| commit | 9bdb587bea1c40e7262203d7a18f49bc3d161e36 (patch) | |
| tree | 981b1b45e52100d4be7dd9052be7f39ca5cb56e7 /challenge-070 | |
| parent | b3a812db0366471dcfdc1acfd55f1743a558dc56 (diff) | |
| download | perlweeklychallenge-club-9bdb587bea1c40e7262203d7a18f49bc3d161e36.tar.gz perlweeklychallenge-club-9bdb587bea1c40e7262203d7a18f49bc3d161e36.tar.bz2 perlweeklychallenge-club-9bdb587bea1c40e7262203d7a18f49bc3d161e36.zip | |
- Added Swift solution.
Diffstat (limited to 'challenge-070')
| -rwxr-xr-x | challenge-070/mohammad-anwar/swift/ch-1.swift | 63 |
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) +} |
