aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-08-05 14:11:47 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-08-05 14:11:47 +0100
commit6c629eebd5e470e2c8d9a60b1e38598232cc8068 (patch)
tree535e732ed93f12b0e8cf31137d84f6cc9adcc37e
parent05aee9e5d10b3a224a75ac15302adc64b029057a (diff)
downloadperlweeklychallenge-club-6c629eebd5e470e2c8d9a60b1e38598232cc8068.tar.gz
perlweeklychallenge-club-6c629eebd5e470e2c8d9a60b1e38598232cc8068.tar.bz2
perlweeklychallenge-club-6c629eebd5e470e2c8d9a60b1e38598232cc8068.zip
- Added Swift solution to the "Lines Range" task.
-rwxr-xr-xchallenge-072/mohammad-anwar/swift/ch-2.swift82
-rw-r--r--challenge-072/mohammad-anwar/swift/input.txt100
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