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}}==