langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
25
Task/Balanced-brackets/OCaml/balanced-brackets.ocaml
Normal file
25
Task/Balanced-brackets/OCaml/balanced-brackets.ocaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
let generate_brackets n =
|
||||
let rec aux i acc =
|
||||
if i <= 0 then acc else
|
||||
aux (pred i) ('['::']'::acc)
|
||||
in
|
||||
let brk = aux n [] in
|
||||
List.sort (fun _ _ -> (Random.int 3) - 1) brk
|
||||
|
||||
let is_balanced brk =
|
||||
let rec aux = function
|
||||
| [], 0 -> true
|
||||
| '['::brk, level -> aux (brk, succ level)
|
||||
| ']'::brk, 0 -> false
|
||||
| ']'::brk, level -> aux (brk, pred level)
|
||||
| _ -> assert false
|
||||
in
|
||||
aux (brk, 0)
|
||||
|
||||
let () =
|
||||
let n = int_of_string Sys.argv.(1) in
|
||||
Random.self_init();
|
||||
let brk = generate_brackets n in
|
||||
List.iter print_char brk;
|
||||
Printf.printf " %B\n" (is_balanced brk);
|
||||
;;
|
||||
32
Task/Balanced-brackets/Objeck/balanced-brackets.objeck
Normal file
32
Task/Balanced-brackets/Objeck/balanced-brackets.objeck
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
bundle Default {
|
||||
class Balanced {
|
||||
function : IsBalanced(text : String) ~ Bool {
|
||||
level := 0;
|
||||
each(i : text) {
|
||||
character := text->Get(i);
|
||||
if(character = ']') {
|
||||
if(level = 0) {
|
||||
return false;
|
||||
};
|
||||
level -= 1;
|
||||
};
|
||||
|
||||
if(character = '[') {
|
||||
level += 1;
|
||||
};
|
||||
};
|
||||
|
||||
return level = 0;
|
||||
}
|
||||
|
||||
function : Main(args : String[]) ~ Nil {
|
||||
": "->Print(); IsBalanced("")->PrintLine();
|
||||
"[]: "->Print(); IsBalanced("[]")->PrintLine();
|
||||
"[][]: "->Print(); IsBalanced("[][]")->PrintLine();
|
||||
"[[][]]: "->Print(); IsBalanced("[[][]]")->PrintLine();
|
||||
"][: "->Print(); IsBalanced("][")->PrintLine();
|
||||
"][][: "->Print(); IsBalanced("][][")->PrintLine();
|
||||
"[]][[]: "->Print(); IsBalanced("[]][[]")->PrintLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
27
Task/Balanced-brackets/OxygenBasic/balanced-brackets.oxy
Normal file
27
Task/Balanced-brackets/OxygenBasic/balanced-brackets.oxy
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
function CheckBrackets(string s) as bool
|
||||
'=======================================
|
||||
sys co, le=len s
|
||||
byte b at strptr s
|
||||
indexbase 0
|
||||
for i=0 to <le
|
||||
select b(i)
|
||||
case "[" : co++
|
||||
case "]" : co--
|
||||
end select
|
||||
if co<0 then return 0
|
||||
next
|
||||
if co=0 then return 1
|
||||
end function
|
||||
|
||||
|
||||
'TEST
|
||||
'====
|
||||
|
||||
print CheckBrackets "" '1
|
||||
print CheckBrackets "[" '0
|
||||
print CheckBrackets "]" '0
|
||||
print CheckBrackets "[]" '1
|
||||
print CheckBrackets "[[]" '0
|
||||
print CheckBrackets "[]]" '0
|
||||
print CheckBrackets "[][]"'1
|
||||
print CheckBrackets "][" '0
|
||||
13
Task/Balanced-brackets/PARI-GP/balanced-brackets.pari
Normal file
13
Task/Balanced-brackets/PARI-GP/balanced-brackets.pari
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
balanced(s)={
|
||||
my(n=0,v=Vecsmall(s));
|
||||
for(i=1,#v,
|
||||
if(v[i]==91,
|
||||
n++
|
||||
,
|
||||
if(v[i]==93 && n, n--, return(0))
|
||||
)
|
||||
);
|
||||
!n
|
||||
};
|
||||
rnd(n)=Strchr(vectorsmall(n,i,if(random(2),91,93)))
|
||||
forstep(n=0,10,2,s=rnd(n);print(s"\t"if(balanced(s),"true","false")))
|
||||
17
Task/Balanced-brackets/Perl-6/balanced-brackets-1.pl6
Normal file
17
Task/Balanced-brackets/Perl-6/balanced-brackets-1.pl6
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
sub balanced($s) {
|
||||
my $l = 0;
|
||||
for $s.comb {
|
||||
when "]" {
|
||||
--$l;
|
||||
return False if $l < 0;
|
||||
}
|
||||
when "[" {
|
||||
++$l;
|
||||
}
|
||||
}
|
||||
return $l == 0;
|
||||
}
|
||||
|
||||
my $n = prompt "Number of brackets";
|
||||
my $s = (<[ ]> xx $n).pick(*).join;
|
||||
say "$s {balanced($s) ?? "is" !! "is not"} well-balanced"
|
||||
8
Task/Balanced-brackets/Perl-6/balanced-brackets-2.pl6
Normal file
8
Task/Balanced-brackets/Perl-6/balanced-brackets-2.pl6
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
sub balanced($s) {
|
||||
.none < 0 and .[*-1] == 0
|
||||
given [\+] '\\' «leg« $s.comb;
|
||||
}
|
||||
|
||||
my $n = prompt "Number of bracket pairs: ";
|
||||
my $s = <[ ]>.roll($n*2).join;
|
||||
say "$s { balanced($s) ?? "is" !! "is not" } well-balanced"
|
||||
8
Task/Balanced-brackets/Perl-6/balanced-brackets-3.pl6
Normal file
8
Task/Balanced-brackets/Perl-6/balanced-brackets-3.pl6
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
sub balanced($_ is copy) {
|
||||
() while s:g/'[]'//;
|
||||
$_ eq '';
|
||||
}
|
||||
|
||||
my $n = prompt "Number of bracket pairs: ";
|
||||
my $s = <[ ]>.roll($n*2).join;
|
||||
say "$s is", ' not' xx not balanced($s)), " well-balanced";
|
||||
8
Task/Balanced-brackets/Perl-6/balanced-brackets-4.pl6
Normal file
8
Task/Balanced-brackets/Perl-6/balanced-brackets-4.pl6
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
grammar BalBrack {
|
||||
token TOP { ^ <balanced>* $ };
|
||||
token balanced { '[' <balanced>* ']' }
|
||||
}
|
||||
|
||||
my $n = prompt "Number of bracket pairs: ";
|
||||
my $s = (<[ ]> xx $n).pick(*).join;
|
||||
say "$s { BalBrack.parse($s) ?? "is" !! "is not" } well-balanced";
|
||||
44
Task/Balanced-brackets/PureBasic/balanced-brackets.purebasic
Normal file
44
Task/Balanced-brackets/PureBasic/balanced-brackets.purebasic
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
Procedure.s Generate(N)
|
||||
For i=1 To N
|
||||
sample$+"[]"
|
||||
Next
|
||||
For i=Len(sample$)-1 To 2 Step -1
|
||||
r=Random(i-1)+1
|
||||
If r<>i
|
||||
a.c=PeekC(@sample$+r*SizeOf(Character))
|
||||
b.c=PeekC(@sample$+i*SizeOf(Character))
|
||||
PokeC(@sample$+r*SizeOf(Character), b)
|
||||
PokeC(@sample$+i*SizeOf(Character), a)
|
||||
EndIf
|
||||
Next
|
||||
ProcedureReturn sample$
|
||||
EndProcedure
|
||||
|
||||
Procedure Balanced(String$)
|
||||
Protected *p.Character, cnt
|
||||
*p=@String$
|
||||
While *p\c
|
||||
If *p\c='['
|
||||
cnt+1
|
||||
ElseIf *p\c=']'
|
||||
cnt-1
|
||||
If cnt<0: Break: EndIf
|
||||
EndIf
|
||||
*p+SizeOf(Character)
|
||||
Wend
|
||||
If cnt=0
|
||||
ProcedureReturn #True
|
||||
EndIf
|
||||
EndProcedure
|
||||
|
||||
;- Test code
|
||||
OpenConsole()
|
||||
For i=1 To 5
|
||||
TestString$ = Generate(i)
|
||||
Print(TestString$)
|
||||
If Balanced(TestString$)
|
||||
PrintN(" is ballanced.")
|
||||
Else
|
||||
PrintN(" is not ballanced")
|
||||
EndIf
|
||||
Next
|
||||
21
Task/Balanced-brackets/Qi/balanced-brackets.qi
Normal file
21
Task/Balanced-brackets/Qi/balanced-brackets.qi
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
(define balanced-brackets-0
|
||||
[] 0 -> true
|
||||
[] _ -> false
|
||||
[#\[|R] Sum -> (balanced-brackets-0 R (+ Sum 1))
|
||||
_ 0 -> false
|
||||
[_ |R] Sum -> (balanced-brackets-0 R (- Sum 1)))
|
||||
|
||||
|
||||
(define balanced-brackets
|
||||
"" -> true
|
||||
S -> (balanced-brackets-0 (explode (INTERN S)) 0))
|
||||
|
||||
(balanced-brackets "")
|
||||
|
||||
(balanced-brackets "[]")
|
||||
(balanced-brackets "[][]")
|
||||
(balanced-brackets "[[][]]")
|
||||
|
||||
(balanced-brackets "][")
|
||||
(balanced-brackets "][][")
|
||||
(balanced-brackets "[]][[]")
|
||||
21
Task/Balanced-brackets/Run-BASIC/balanced-brackets.run
Normal file
21
Task/Balanced-brackets/Run-BASIC/balanced-brackets.run
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
dim brk$(10)
|
||||
brk$(1) = "[[[][]]]"
|
||||
brk$(2) = "[[[]][[[][[][]]]]]"
|
||||
brk$(3) = "][][]][["
|
||||
brk$(4) = "[][][]"
|
||||
brk$(5) = "[][]][]][[]]][[["
|
||||
brk$(6) = "]][[[[]]]][]]][[[["
|
||||
brk$(7) = "[[][[[]]][]]"
|
||||
brk$(8) = "[]][][][[[]]"
|
||||
brk$(9) = "][]][["
|
||||
brk$(10) = "[]][][][[]"
|
||||
|
||||
for i = 1 to 10
|
||||
b$ = brk$(i)
|
||||
while instr(b$,"[]") <> 0
|
||||
x = instr(b$,"[]")
|
||||
if x > 0 then b$ = left$(b$,x - 1) + mid$(b$,x + 2)
|
||||
wend
|
||||
if trim$(b$) = "" then print " OK "; else print "Not OK ";
|
||||
print brk$(i)
|
||||
next i
|
||||
53
Task/Balanced-brackets/Seed7/balanced-brackets.seed7
Normal file
53
Task/Balanced-brackets/Seed7/balanced-brackets.seed7
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
$ include "seed7_05.s7i";
|
||||
|
||||
const func string: generateBrackets (in integer: count) is func
|
||||
result
|
||||
var string: stri is "";
|
||||
local
|
||||
var integer: index is 0;
|
||||
var integer: pos is 0;
|
||||
var char: ch is ' ';
|
||||
begin
|
||||
stri := "[" mult count & "]" mult count;
|
||||
for index range 1 to length(stri) do
|
||||
pos := rand(1, length(stri));
|
||||
ch := stri[index];
|
||||
stri @:= [index] stri[pos];
|
||||
stri @:= [pos] ch;
|
||||
end for;
|
||||
end func;
|
||||
|
||||
const func boolean: checkBrackets (in string: test) is func
|
||||
result
|
||||
var boolean: okay is TRUE;
|
||||
local
|
||||
var char: ch is ' ';
|
||||
var integer: open is 0;
|
||||
begin
|
||||
for ch range test do
|
||||
if ch = '[' then
|
||||
incr(open);
|
||||
elsif ch = ']' then
|
||||
if open = 0 then
|
||||
okay := FALSE;
|
||||
else
|
||||
decr(open);
|
||||
end if;
|
||||
end if;
|
||||
end for;
|
||||
okay := open = 0;
|
||||
end func;
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
var integer: n is 0;
|
||||
var integer: count is 0;
|
||||
var string: stri is "";
|
||||
begin
|
||||
for n range 0 to 4 do
|
||||
for count range 1 to 3 do
|
||||
stri := generateBrackets(n);
|
||||
writeln(stri <& ": " <& checkBrackets(stri));
|
||||
end for;
|
||||
end for;
|
||||
end func;
|
||||
29
Task/Balanced-brackets/TUSCRIPT/balanced-brackets.tuscript
Normal file
29
Task/Balanced-brackets/TUSCRIPT/balanced-brackets.tuscript
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
$$ MODE TUSCRIPT
|
||||
|
||||
SECTION gen_brackets
|
||||
values="[']",brackets=""
|
||||
LOOP n=1,12
|
||||
brackets=APPEND (brackets,"","~")
|
||||
LOOP m=1,n
|
||||
a=RANDOM_NUMBERS (1,2,1),br=SELECT(values,#a)
|
||||
brackets=APPEND(brackets,"",br)
|
||||
b=RANDOM_NUMBERS (1,2,1),br=SELECT(values,#b)
|
||||
brackets=APPEND(brackets,"",br)
|
||||
ENDLOOP
|
||||
ENDLOOP
|
||||
brackets=SPLIT (brackets,":~:")
|
||||
ENDSECTION
|
||||
|
||||
MODE DATA
|
||||
$$ BUILD X_TABLE brackets=*
|
||||
[[[[ (4 ]]]] )4
|
||||
[[[ (3 ]]] )3
|
||||
[[ (2 ]] )2
|
||||
[ (1 ] )1
|
||||
|
||||
$$ MODE TUSCRIPT
|
||||
DO gen_brackets
|
||||
LOOP b=brackets
|
||||
status=CHECK_BRACKETS (b,brackets,a1,e1,a2,e2)
|
||||
PRINT b," ",status
|
||||
ENDLOOP
|
||||
33
Task/Balanced-brackets/TXR/balanced-brackets.txr
Normal file
33
Task/Balanced-brackets/TXR/balanced-brackets.txr
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
@(define paren)@(maybe)[@(coll)@(paren)@(until)]@(end)]@(end)@(end)
|
||||
@(do (defvar r (make-random-state nil))
|
||||
(defun shuffle (list)
|
||||
(for* ((vec (vector-list list))
|
||||
(len (length vec))
|
||||
(i 0))
|
||||
((< i len) (list-vector vec))
|
||||
((inc i))
|
||||
(let ((j (random r len))
|
||||
(temp (vecref vec i)))
|
||||
(set (vecref vec i) (vecref vec j))
|
||||
(set (vecref vec j) temp))))
|
||||
(defun generate-1 (count)
|
||||
(for ((i 0) chars) ((< i count) (cat-str (shuffle chars) "")) ((inc i))
|
||||
(push #\[ chars)
|
||||
(push #\] chars)))
|
||||
(defun generate-list (num count)
|
||||
(for ((i 0) list) ((< i num) list) ((inc i))
|
||||
(push (generate-1 count) list))))
|
||||
@(next :list @(generate-list 22 6))
|
||||
@(output)
|
||||
INPUT MATCHED REST
|
||||
@(end)
|
||||
@ (collect)
|
||||
@ (all)
|
||||
@parens
|
||||
@ (and)
|
||||
@{matched (paren)}@mismatched
|
||||
@ (end)
|
||||
@ (output)
|
||||
@{parens 15} @{matched 15} @{mismatched 15}
|
||||
@ (end)
|
||||
@(end)
|
||||
8
Task/Balanced-brackets/Ursala/balanced-brackets.ursala
Normal file
8
Task/Balanced-brackets/Ursala/balanced-brackets.ursala
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#import std
|
||||
#import nat
|
||||
|
||||
balanced = @NiX ~&irB->ilZB ~&rh?/~&lbtPB ~&NlCrtPX
|
||||
|
||||
#cast %bm
|
||||
|
||||
main = ^(2-$'[]'*,balanced)* eql@ZFiFX*~ iota64
|
||||
66
Task/Balanced-brackets/VBA/balanced-brackets.vba
Normal file
66
Task/Balanced-brackets/VBA/balanced-brackets.vba
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
Public Function checkBrackets(s As String) As Boolean
|
||||
'function checks strings for balanced brackets
|
||||
Dim Depth As Integer
|
||||
Dim ch As String * 1
|
||||
|
||||
Depth = 0
|
||||
For i = 1 To Len(s)
|
||||
ch = Mid$(s, i, 1)
|
||||
If ch = "[" Then Depth = Depth + 1
|
||||
If ch = "]" Then
|
||||
If Depth = 0 Then 'not balanced
|
||||
checkBrackets = False
|
||||
Exit Function
|
||||
Else
|
||||
Depth = Depth - 1
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
checkBrackets = (Depth = 0)
|
||||
End Function
|
||||
|
||||
Public Function GenerateBrackets(N As Integer) As String
|
||||
'generate a string with N opening and N closing brackets in random order
|
||||
Dim s As String
|
||||
Dim N2 As Integer, j As Integer
|
||||
Dim Brackets() As String * 1
|
||||
Dim temp As String * 1
|
||||
|
||||
'catch trivial value
|
||||
If N <= 0 Then
|
||||
GenerateBrackets = ""
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
N2 = N + N
|
||||
ReDim Brackets(1 To N2)
|
||||
For i = 1 To N2 Step 2
|
||||
Brackets(i) = "["
|
||||
Brackets(i + 1) = "]"
|
||||
Next i
|
||||
'shuffle.
|
||||
For i = 1 To N2
|
||||
j = 1 + Int(Rnd() * N2)
|
||||
'swap brackets i and j
|
||||
temp = Brackets(i)
|
||||
Brackets(i) = Brackets(j)
|
||||
Brackets(j) = temp
|
||||
Next i
|
||||
'generate string
|
||||
s = ""
|
||||
For i = 1 To N2
|
||||
s = s & Brackets(i)
|
||||
Next i
|
||||
GenerateBrackets = s
|
||||
End Function
|
||||
|
||||
Public Sub BracketsTest()
|
||||
Dim s As String
|
||||
Dim i As Integer
|
||||
|
||||
For i = 0 To 10
|
||||
s = GenerateBrackets(i)
|
||||
Debug.Print """" & s & """: ";
|
||||
If checkBrackets(s) Then Debug.Print " OK" Else Debug.Print " Not OK"
|
||||
Next
|
||||
End Sub
|
||||
26
Task/Balanced-brackets/XPL0/balanced-brackets.xpl0
Normal file
26
Task/Balanced-brackets/XPL0/balanced-brackets.xpl0
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
include c:\cxpl\codes; \intrinsic code declarations
|
||||
|
||||
int N, I, C, Nest;
|
||||
char Str;
|
||||
[\Generate a string with N open brackets and N close brackets in arbitrary order
|
||||
N:= IntIn(0); \get number of brackets/2 from keyboard
|
||||
Str:= Reserve(2*N);
|
||||
for I:= 0 to 2*N-1 do Str(I):= ^[;
|
||||
C:= 0; \initialize count of "]"
|
||||
repeat I:= Ran(2*N); \change N random locations to "]"
|
||||
if Str(I) # ^] then [Str(I):= ^]; C:= C+1];
|
||||
until C>=N;
|
||||
|
||||
\Determine whether string consists of nested pairs of open/close brackets
|
||||
I:= 0; C:= 0; Nest:= false;
|
||||
while I<2*N do
|
||||
[if Str(I) = ^[ then C:= C+1 else C:= C-1;
|
||||
if C<0 then Nest:= true;
|
||||
ChOut(0,Str(I));
|
||||
I:= I+1;
|
||||
];
|
||||
ChOut(0,9\tab\);
|
||||
if Nest then Text(0,"NOT ");
|
||||
Text(0,"OK
|
||||
");
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue