Skip to content

Commit 704aaea

Browse files
authored
feat: add swift implementation to lcci problem: No.16.15 (#2746)
1 parent db9dab5 commit 704aaea

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed

Diff for: lcci/16.15.Master Mind/README.md

+29
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,35 @@ var masterMind = function (solution, guess) {
122122
};
123123
```
124124

125+
```swift
126+
class Solution {
127+
func masterMind(_ solution: String, _ guess: String) -> [Int] {
128+
var x = 0
129+
var y = 0
130+
var cnt1: [Character: Int] = [:]
131+
var cnt2: [Character: Int] = [:]
132+
133+
for i in solution.indices {
134+
let a = solution[i]
135+
let b = guess[i]
136+
if a == b {
137+
x += 1
138+
}
139+
cnt1[a, default: 0] += 1
140+
cnt2[b, default: 0] += 1
141+
}
142+
143+
let colors = "RYGB"
144+
for c in colors {
145+
let minCount = min(cnt1[c, default: 0], cnt2[c, default: 0])
146+
y += minCount
147+
}
148+
149+
return [x, y - x]
150+
}
151+
}
152+
```
153+
125154
<!-- tabs:end -->
126155

127156
<!-- end -->

Diff for: lcci/16.15.Master Mind/README_EN.md

+29
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,35 @@ var masterMind = function (solution, guess) {
129129
};
130130
```
131131

132+
```swift
133+
class Solution {
134+
func masterMind(_ solution: String, _ guess: String) -> [Int] {
135+
var x = 0
136+
var y = 0
137+
var cnt1: [Character: Int] = [:]
138+
var cnt2: [Character: Int] = [:]
139+
140+
for i in solution.indices {
141+
let a = solution[i]
142+
let b = guess[i]
143+
if a == b {
144+
x += 1
145+
}
146+
cnt1[a, default: 0] += 1
147+
cnt2[b, default: 0] += 1
148+
}
149+
150+
let colors = "RYGB"
151+
for c in colors {
152+
let minCount = min(cnt1[c, default: 0], cnt2[c, default: 0])
153+
y += minCount
154+
}
155+
156+
return [x, y - x]
157+
}
158+
}
159+
```
160+
132161
<!-- tabs:end -->
133162

134163
<!-- end -->

Diff for: lcci/16.15.Master Mind/Solution.swift

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
func masterMind(_ solution: String, _ guess: String) -> [Int] {
3+
var x = 0
4+
var y = 0
5+
var cnt1: [Character: Int] = [:]
6+
var cnt2: [Character: Int] = [:]
7+
8+
for i in solution.indices {
9+
let a = solution[i]
10+
let b = guess[i]
11+
if a == b {
12+
x += 1
13+
}
14+
cnt1[a, default: 0] += 1
15+
cnt2[b, default: 0] += 1
16+
}
17+
18+
let colors = "RYGB"
19+
for c in colors {
20+
let minCount = min(cnt1[c, default: 0], cnt2[c, default: 0])
21+
y += minCount
22+
}
23+
24+
return [x, y - x]
25+
}
26+
}

0 commit comments

Comments
 (0)