Wordle comparison: Difference between revisions
Content added Content deleted
No edit summary |
(Created Nim solution.) |
||
Line 843: | Line 843: | ||
ROBIN v ROBIN => [2, 2, 2, 2, 2] => ["green", "green", "green", "green", "green"] |
ROBIN v ROBIN => [2, 2, 2, 2, 2] => ["green", "green", "green", "green", "green"] |
||
</pre> |
</pre> |
||
=={{header|Nim}}== |
|||
{{trans|Wren}} |
|||
<syntaxhighlight lang="Nim">import std/[strformat, strutils] |
|||
type Color {.pure.} = enum Grey = "grey", Yellow = "yellow", Green = "green" |
|||
proc wordle(answer, guess: string): seq[Color] = |
|||
let n = guess.len |
|||
if answer.len != n: |
|||
quit "The words must be of the same length.", QuitFailure |
|||
var answer = answer |
|||
result.setLen(n) |
|||
for i in 0..<n: |
|||
if guess[i] == answer[i]: |
|||
answer[i] = '\0' |
|||
result[i] = Green |
|||
for i in 0..<n: |
|||
let ix = answer.find(guess[i]) |
|||
if ix >= 0: |
|||
answer[ix] = '\0' |
|||
result[i] = Yellow |
|||
const Pairs = [["ALLOW", "LOLLY"], |
|||
["BULLY", "LOLLY"], |
|||
["ROBIN", "ALERT"], |
|||
["ROBIN", "SONIC"], |
|||
["ROBIN", "ROBIN"]] |
|||
for pair in Pairs: |
|||
let res = wordle(pair[0], pair[1]) |
|||
echo &"""{pair[0]} v {pair[1]} → ({res.join(", ")})""" |
|||
</syntaxhighlight> |
|||
{{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> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |