Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/Balanced-brackets/Mercury/balanced-brackets.mercury
Normal file
40
Task/Balanced-brackets/Mercury/balanced-brackets.mercury
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
:- module balancedbrackets.
|
||||
:- interface.
|
||||
|
||||
:- import_module io.
|
||||
|
||||
:- pred main(io::di, io::uo) is det.
|
||||
|
||||
|
||||
:- import_module list, random, char.
|
||||
|
||||
:- pred brackets(int::in,list(char)::out,supply::mdi,supply::muo) is det.
|
||||
|
||||
:- pred imbalance(list(char)::in,int::out) is semidet.
|
||||
:- pred balanced(list(char)::in) is semidet.
|
||||
|
||||
:- implementation.
|
||||
|
||||
:- import_module int.
|
||||
|
||||
imbalance([],0).
|
||||
imbalance(['['|T],N) :- imbalance(T,N+1).
|
||||
imbalance([']'|T],N) :- N > 0, imbalance(T,N-1).
|
||||
|
||||
balanced(S) :- imbalance(S,0).
|
||||
|
||||
brackets(N,S,!RS) :-
|
||||
(
|
||||
N < 1 -> S is []
|
||||
; random(0,2,R,!RS),
|
||||
( R is 0 -> S is ['['|T], brackets(N-1,T,!RS)
|
||||
; S is [']'|T], brackets(N-1,T,!RS))).
|
||||
|
||||
main(!IO) :-
|
||||
random.init(0,RS),
|
||||
brackets(4,S,RS,_),
|
||||
print(S,!IO),
|
||||
(
|
||||
balanced(S) -> print(" is balanced\n",!IO)
|
||||
; print(" is unbalanced\n", !IO)
|
||||
).
|
||||
Loading…
Add table
Add a link
Reference in a new issue