Balanced brackets: Difference between revisions
Content added Content deleted
m (Reduced some redundant expressions in the section of Common Lisp) |
(→{{header|Nim}}: Mercury) |
||
Line 3,729: | Line 3,729: | ||
false</lang> |
false</lang> |
||
=={{header|Mercury}}== |
|||
<lang Mercury> |
|||
:- 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) |
|||
). |
|||
</lang> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |
||
<lang nim> |
<lang nim> |