Seite 2 von 2

Re: Schere-Stein-Papier in nicht-Python

Verfasst: Montag 11. Juli 2011, 12:47
von numerix
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. :)

Re: Schere-Stein-Papier in nicht-Python

Verfasst: Montag 18. Juli 2011, 19:55
von nomnom
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.