diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-08-05 14:11:47 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-08-05 14:11:47 +0100 |
| commit | 6c629eebd5e470e2c8d9a60b1e38598232cc8068 (patch) | |
| tree | 535e732ed93f12b0e8cf31137d84f6cc9adcc37e | |
| parent | 05aee9e5d10b3a224a75ac15302adc64b029057a (diff) | |
| download | perlweeklychallenge-club-6c629eebd5e470e2c8d9a60b1e38598232cc8068.tar.gz perlweeklychallenge-club-6c629eebd5e470e2c8d9a60b1e38598232cc8068.tar.bz2 perlweeklychallenge-club-6c629eebd5e470e2c8d9a60b1e38598232cc8068.zip | |
- Added Swift solution to the "Lines Range" task.
| -rwxr-xr-x | challenge-072/mohammad-anwar/swift/ch-2.swift | 82 | ||||
| -rw-r--r-- | challenge-072/mohammad-anwar/swift/input.txt | 100 |
2 files changed, 182 insertions, 0 deletions
diff --git a/challenge-072/mohammad-anwar/swift/ch-2.swift b/challenge-072/mohammad-anwar/swift/ch-2.swift new file mode 100755 index 0000000000..062818f55e --- /dev/null +++ b/challenge-072/mohammad-anwar/swift/ch-2.swift @@ -0,0 +1,82 @@ +import Foundation + +/* +Perl Weekly Challenge - 072 + +Task #2: Lines Range + +https://perlweeklychallenge.org/blog/perl-weekly-challenge-072 +*/ + +enum ParamError: Error { + case missingFile + case missingA + case missingB + case invalidA + case invalidB +} + +do { + let paramCount:Int = Int(CommandLine.argc) + + if paramCount <= 1 { + throw ParamError.missingFile + } + + if paramCount <= 2 { + throw ParamError.missingA + } + + if paramCount <= 3 { + throw ParamError.missingB + } + + let fileName:String = CommandLine.arguments[1] + let a:Int = Int(CommandLine.arguments[2])! + let b:Int = Int(CommandLine.arguments[3])! + + if a <= 0 || a > b { + throw ParamError.invalidA + } + if b <= 0 { + throw ParamError.invalidB + } + + let ranges:[String] = linesRange(fileName, a, b) + print(ranges.joined(separator: "\n")) +} +catch ParamError.missingFile { + print("Missing file.") +} +catch ParamError.missingA { + print("Missing A.") +} +catch ParamError.missingB { + print("Missing B.") +} +catch ParamError.invalidA { + print("Invalid A.") +} +catch ParamError.invalidB { + print("Invalid B.") +} +catch let error { + print(error) +} + +// +// +// Function + +func linesRange(_ fileName:String, _ a:Int, _ b:Int) -> [String] { + + let contents = try! String(contentsOfFile: fileName) + let lines = contents.split(separator:"\n") + + var ranges = [String]() + for i in a-1...b-1 { + ranges.append(String(lines[i])) + } + + return ranges +} diff --git a/challenge-072/mohammad-anwar/swift/input.txt b/challenge-072/mohammad-anwar/swift/input.txt new file mode 100644 index 0000000000..e5a15512e0 --- /dev/null +++ b/challenge-072/mohammad-anwar/swift/input.txt @@ -0,0 +1,100 @@ +L1 +L2 +L3 +L4 +L5 +L6 +L7 +L8 +L9 +L10 +L11 +L12 +L13 +L14 +L15 +L16 +L17 +L18 +L19 +L20 +L21 +L22 +L23 +L24 +L25 +L26 +L27 +L28 +L29 +L30 +L31 +L32 +L33 +L34 +L35 +L36 +L37 +L38 +L39 +L40 +L41 +L42 +L43 +L44 +L45 +L46 +L47 +L48 +L49 +L50 +L51 +L52 +L53 +L54 +L55 +L56 +L57 +L58 +L59 +L60 +L61 +L62 +L63 +L64 +L65 +L66 +L67 +L68 +L69 +L70 +L71 +L72 +L73 +L74 +L75 +L76 +L77 +L78 +L79 +L80 +L81 +L82 +L83 +L84 +L85 +L86 +L87 +L88 +L89 +L90 +L91 +L92 +L93 +L94 +L95 +L96 +L97 +L98 +L99 +L100 |
