Wordle comparison: Difference between revisions
Content added Content deleted
(Added Swift solution) |
|||
Line 909: | Line 909: | ||
BBAABBB vs BBBBBAA green green yellow yellow green yellow yellow |
BBAABBB vs BBBBBAA green green yellow yellow green yellow yellow |
||
BBAABBB vs AABBBAA yellow yellow yellow yellow green grey grey |
BBAABBB vs AABBBAA yellow yellow yellow yellow green grey grey |
||
</pre> |
|||
=={{header|Swift}}== |
|||
<lang swift>enum Colour : CustomStringConvertible { |
|||
case grey |
|||
case yellow |
|||
case green |
|||
var description : String { |
|||
switch self { |
|||
case .grey: return "grey" |
|||
case .yellow: return "yellow" |
|||
case .green: return "green" |
|||
} |
|||
} |
|||
} |
|||
func wordle(answer: String, guess: String) -> [Colour]? { |
|||
guard answer.count == guess.count else { |
|||
return nil |
|||
} |
|||
var a = Array(answer) |
|||
let g = Array(guess) |
|||
let n = a.count |
|||
var result = Array(repeating: Colour.grey, count: n) |
|||
for i in 0..<n { |
|||
if g[i] == a[i] { |
|||
a[i] = "\0" |
|||
result[i] = Colour.green |
|||
} |
|||
} |
|||
for i in 0..<n { |
|||
if let j = a.firstIndex(of: g[i]) { |
|||
a[j] = "\0" |
|||
result[i] = Colour.yellow |
|||
} |
|||
} |
|||
return result |
|||
} |
|||
let pairs = [("ALLOW", "LOLLY"), ("BULLY", "LOLLY"), |
|||
("ROBIN", "ALERT"), ("ROBIN", "SONIC"), |
|||
("ROBIN", "ROBIN")] |
|||
for pair in pairs { |
|||
if let result = wordle(answer: pair.0, guess: pair.1) { |
|||
print("\(pair.0) v \(pair.1) => \(result)") |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
ALLOW v LOLLY => [yellow, yellow, green, grey, grey] |
|||
BULLY v LOLLY => [grey, grey, green, green, green] |
|||
ROBIN v ALERT => [grey, grey, grey, yellow, grey] |
|||
ROBIN v SONIC => [grey, green, yellow, green, grey] |
|||
ROBIN v ROBIN => [green, green, green, green, green] |
|||
</pre> |
</pre> |
||