Program this!, Programming thread |
Program this!, Programming thread |
Mar 23 2009, 09:27 AM
Post
#1
|
|
![]() Senior Member ![]() ![]() ![]() ![]() ![]() ![]() Group: Administrator Posts: 2,648 Joined: Apr 2008 Member No: 639,265 |
I'm of the understand that there are a few Technology forum aficionados that are programmers, or are at least interested in programming, so I thought I'd start a thread -- a sort of game. The game was inspired by this thread. It's pretty simple: just implement the following program in whatever language you desire. If someone's already posted a program in your favorite language, see if you can do better! You get bragging rights if you implement the program in a weird/unusual/rare language.
Here are the guidelines for the program:
|
|
|
|
![]() |
Mar 23 2009, 09:29 AM
Post
#2
|
|
![]() Senior Member ![]() ![]() ![]() ![]() ![]() ![]() Group: Administrator Posts: 2,648 Joined: Apr 2008 Member No: 639,265 |
Erlang
CODE -module(matcher). -export([matches_pattern_1/1, matches_pattern_2/1, matches_pattern_3/1]). matches_pattern_1(S) -> mp1(S, {0,0,0}). mp1([], {A, B, C}) -> A + B =:= C; mp1([H|T], {A, B, C}) when H =:= $a -> mp1(T, {A+1, B, C}); mp1([H|T], {A, B, C}) when H =:= $b -> mp1(T, {A, B+1, C}); mp1([H|T], {A, B, C}) when H =:= $c -> mp1(T, {A, B, C+1}). matches_pattern_2(S) -> mp2(S, {0,0,0}, {false,false,false}). mp2([], {A, B, C}, _) -> A + B =:= C; mp2([H|T], {A, B, C}, {_, Saw_b, Saw_c}) when H =:= $a -> if Saw_b -> false; Saw_c -> false; true -> mp2(T, {A+1, B, C}, {true, Saw_b, Saw_c}) end; mp2([H|T], {A, B, C}, {Saw_a, _, Saw_c}) when H =:= $b -> if Saw_c -> false; true -> mp2(T, {A, B+1, C}, {Saw_a, true, Saw_c}) end; mp2([H|T], {A, B, C}, {Saw_a, Saw_b, _}) when H =:= $c -> mp2(T, {A, B, C+1}, {Saw_a, Saw_b, true}). matches_pattern_3(S) -> mp3(S, {0,0,0}, {false,false,false}). mp3([], {A, _, C}, _) -> A =:= C andalso A > 0; mp3([H|T], {A, B, C}, {_, Saw_b, Saw_c}) when H =:= $a -> if Saw_b -> false; Saw_c -> false; true -> mp3(T, {A+1, B, C}, {true, Saw_b, Saw_c}) end; mp3([H|T], {A, B, C}, {Saw_a, _, Saw_c}) when H =:= $b -> if Saw_c -> false; true -> mp3(T, {A, B+1, C}, {Saw_a, true, Saw_c}) end; mp3([H|T], {A, B, C}, {Saw_a, Saw_b, _}) when H =:= $c -> mp3(T, {A, B, C+1}, {Saw_a, Saw_b, true}). Source: matcher.erl |
|
|
|
mipadi Program this! Mar 23 2009, 09:27 AM
mipadi Haskell
CODEmatchesPattern1 s = mp s (0, 0, 0... Mar 23 2009, 09:28 AM
Uronacid I'd love to do this, but "anbmc(n + m), w... Mar 23 2009, 10:21 AM
mipadi QUOTE(Uronacid @ Mar 23 2009, 11:21 AM) I... Mar 23 2009, 10:24 AM
Uronacid QUOTE(mipadi @ Mar 23 2009, 11:24 AM) It... Mar 23 2009, 10:38 AM
9001 Any specific language we have to use?
I might sta... Mar 23 2009, 10:35 AM
mipadi QUOTE(9001 @ Mar 23 2009, 11:35 AM) Any s... Mar 23 2009, 12:09 PM
Uronacid QUOTE(mipadi @ Mar 23 2009, 01:09 PM) No,... Mar 23 2009, 01:11 PM
mipadi QUOTE(Uronacid @ Mar 23 2009, 02:11 PM) y... Mar 23 2009, 06:41 PM
Uronacid QUOTE(mipadi @ Mar 23 2009, 07:41 PM) Yea... Mar 23 2009, 09:25 PM
mipadi QUOTE(Uronacid @ Mar 23 2009, 10:25 PM) Y... Mar 23 2009, 09:39 PM
Uronacid QUOTE(mipadi @ Mar 23 2009, 10:39 PM) Neg... Mar 23 2009, 10:19 PM
9001 Cool. I'll see if I can somehow get this done... Mar 23 2009, 12:15 PM
mipadi Ruby
CODEdef matches_pattern_1?(s)
if s ... Mar 23 2009, 12:32 PM
mipadi C
CODE#include <stdio.h>
#include <str... Mar 23 2009, 01:05 PM
mipadi Python
CODEdef matches_pattern_1(s):
... Mar 23 2009, 07:21 PM
mipadi Hey! There are more programmers than just the ... Apr 5 2009, 01:55 PM
9001 QUOTE(mipadi @ Apr 5 2009, 12:55 PM) Hey... Apr 5 2009, 02:44 PM
mipadi QUOTE(9001 @ Apr 5 2009, 03:44 PM) At lea... Apr 5 2009, 02:47 PM
mipadi Objective-C
This one isn't dramatically diffe... Apr 5 2009, 02:30 PM![]() ![]() |