Auch wenn der Thread-Titel anders gemeint war, passt diese SPOJ-Aufgabe auch irgendwie dazu.
Die Auswahl an möglichen Programmiersprachen ist groß und eine Prolog-Lösung gibt es bislang noch nicht.
Schere-Stein-Papier in nicht-Python
Erlang (ich bin gerade am Lernen von Erlang, also wird der Code vermutlich ziemlich unschön sein ...):
Code: Alles auswählen
-module(rock_paper_scissors).
-export([main/0]).
-define(Choices, [$r,$p,$s]).
main() ->
Input = hd(io:get_line("Choose [r]ock, [p]aper, or [s]cissors: ")),
Random = lists:nth(random:uniform(3), ?Choices),
case winner(Input, Random) of
error ->
io:format("Unknown input `~c`!~n", [Input]);
computer ->
io:format("You lost! Computer chose ~c~n", [Random]);
player ->
io:format("You won! Computer chose ~c~n", [Random]);
drawn ->
io:format("Drawn game...~n")
end.
winner(X,Y) ->
AreMembers = lists:member(X,?Choices) andalso lists:member(Y,?Choices),
case {X,Y} of
{X,Y} when not AreMembers ->
error;
{$r,$s} ->
player;
{$p,$r} ->
player;
{$s,$p} ->
player;
{X,X} ->
drawn;
_ ->
computer
end.