Schere-Stein-Papier in nicht-Python

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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. :)
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

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.
Antworten