Wordle comparison: Difference between revisions
Content added Content deleted
(Wordle comparison in FreeBASIC) |
|||
Line 714: | Line 714: | ||
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|Picat}}== |
|||
My preferred representation of textual answer is: |
|||
* correct pos (green): Uppercase |
|||
* correct char (yellow): lowercase + "*" |
|||
* not in word (grey): lowercase |
|||
{{trans|Go}} |
|||
<lang Picat>main => |
|||
Pairs = [["ALLOW", "LOLLY"], |
|||
["BULLY", "LOLLY"], |
|||
["ROBIN", "ALERT"], |
|||
["ROBIN", "SONIC"], |
|||
["ROBIN", "ROBIN"], |
|||
["ROBBY", "OBBYR"], |
|||
["ROSETTA", "OSSETAR"]], |
|||
foreach([Answer,Guess] in Pairs) |
|||
Res = wordle(Answer,Guess), |
|||
Len = Res.len, |
|||
Show = new_list(Len), |
|||
foreach(I in 1..Len) |
|||
if Res[I] == green then |
|||
Show[I] := [to_uppercase(Guess[I])] ++ " " |
|||
elseif Res[I] == yellow then |
|||
Show[I] := [to_lowercase(Guess[I])] ++ "*" |
|||
else |
|||
Show[I] := [to_lowercase(Guess[I])] ++ " " |
|||
end |
|||
end, |
|||
printf("%w v %w => %w %w\n", Answer, Guess, Show, Res) |
|||
end, |
|||
nl. |
|||
wordle(Answer,Guess) = Result => |
|||
N = Guess.len, |
|||
if N != Answer.len then |
|||
print("The words must be of the same length.") |
|||
else |
|||
Answer2 = copy_term(Answer), % don't touch Answer |
|||
Result = new_list(N,grey), % grey by default |
|||
foreach(I in 1..N, Guess[I] == Answer2[I]) |
|||
Answer2[I] := "", |
|||
Result[I] := green |
|||
end, |
|||
foreach(I in 1..N, Ix = find_first_of(Answer2,Guess[I]), Ix > 0) |
|||
Answer2[Ix] := "", |
|||
Result[I] := yellow |
|||
end |
|||
end.</lang> |
|||
{{out}} |
|||
<pre>ALLOW v LOLLY => [l*,o*,L ,l ,y ] [yellow,yellow,green,grey,grey] |
|||
BULLY v LOLLY => [l ,o ,L ,L ,Y ] [grey,grey,green,green,green] |
|||
ROBIN v ALERT => [a ,l ,e ,r*,t ] [grey,grey,grey,yellow,grey] |
|||
ROBIN v SONIC => [s ,O ,n*,I ,c ] [grey,green,yellow,green,grey] |
|||
ROBIN v ROBIN => [R ,O ,B ,I ,N ] [green,green,green,green,green] |
|||
ROBBY v OBBYR => [o*,b*,B ,y*,r*] [yellow,yellow,green,yellow,yellow] |
|||
ROSETTA v OSSETAR => [o*,s ,S ,E ,t*,a*,r*] [yellow,grey,green,green,yellow,yellow,yellow]</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |