Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
57
Task/Balanced-brackets/Ada/balanced-brackets.adb
Normal file
57
Task/Balanced-brackets/Ada/balanced-brackets.adb
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
with Ada.Numerics.Discrete_Random;
|
||||
with Ada.Text_IO;
|
||||
with Ada.Strings.Fixed;
|
||||
procedure Brackets is
|
||||
package Random_Positive is new Ada.Numerics.Discrete_Random (Positive);
|
||||
Positive_Generator : Random_Positive.Generator;
|
||||
procedure Swap (Left, Right : in out Character) is
|
||||
Temp : constant Character := Left;
|
||||
begin
|
||||
Left := Right;
|
||||
Right := Temp;
|
||||
end Swap;
|
||||
function Generate_Brackets (Bracket_Count : Natural;
|
||||
Opening_Bracket : Character := '[';
|
||||
Closing_Bracket : Character := ']')
|
||||
return String is
|
||||
use Ada.Strings.Fixed;
|
||||
All_Brackets : String := Bracket_Count * Opening_Bracket & Bracket_Count * Closing_Bracket;
|
||||
begin
|
||||
for I in All_Brackets'Range loop
|
||||
Swap (All_Brackets (I), All_Brackets (Random_Positive.Random (Positive_Generator) mod (Bracket_Count * 2) + 1));
|
||||
end loop;
|
||||
return All_Brackets;
|
||||
end Generate_Brackets;
|
||||
|
||||
function Check_Brackets (Test : String;
|
||||
Opening_Bracket : Character := '[';
|
||||
Closing_Bracket : Character := ']')
|
||||
return Boolean is
|
||||
Open : Natural := 0;
|
||||
begin
|
||||
for I in Test'Range loop
|
||||
if Test (I) = Opening_Bracket then
|
||||
Open := Open + 1;
|
||||
elsif Test (I) = Closing_Bracket then
|
||||
if Open = 0 then
|
||||
return False;
|
||||
else
|
||||
Open := Open - 1;
|
||||
end if;
|
||||
end if;
|
||||
end loop;
|
||||
return True;
|
||||
end Check_Brackets;
|
||||
begin
|
||||
Random_Positive.Reset (Positive_Generator);
|
||||
Ada.Text_IO.Put_Line ("Brackets");
|
||||
for I in 0 .. 4 loop
|
||||
for J in 0 .. I loop
|
||||
declare
|
||||
My_String : constant String := Generate_Brackets (I);
|
||||
begin
|
||||
Ada.Text_IO.Put_Line (My_String & ": " & Boolean'Image (Check_Brackets (My_String)));
|
||||
end;
|
||||
end loop;
|
||||
end loop;
|
||||
end Brackets;
|
||||
28
Task/Balanced-brackets/AutoIt/balanced-brackets.au3
Normal file
28
Task/Balanced-brackets/AutoIt/balanced-brackets.au3
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#include <Array.au3>
|
||||
Local $Array[1]
|
||||
_ArrayAdd($Array, "[]")
|
||||
_ArrayAdd($Array, "[][]")
|
||||
_ArrayAdd($Array, "[[][]]")
|
||||
_ArrayAdd($Array, "][")
|
||||
_ArrayAdd($Array, "][][")
|
||||
_ArrayAdd($Array, "[]][[]")
|
||||
|
||||
For $i = 0 To UBound($Array) -1
|
||||
Balanced_Brackets($Array[$i])
|
||||
If @error Then
|
||||
ConsoleWrite($Array[$i] &" = NOT OK"&@CRLF)
|
||||
Else
|
||||
ConsoleWrite($Array[$i] &" = OK"&@CRLF)
|
||||
EndIf
|
||||
Next
|
||||
|
||||
Func Balanced_Brackets($String)
|
||||
Local $cnt = 0
|
||||
$Split = Stringsplit($String, "")
|
||||
For $i = 1 To $Split[0]
|
||||
If $split[$i] = "[" Then $cnt += 1
|
||||
If $split[$i] = "]" Then $cnt -= 1
|
||||
If $cnt < 0 Then Return SetError(1,0,0)
|
||||
Next
|
||||
Return 1
|
||||
EndFunc
|
||||
12
Task/Balanced-brackets/AutoLISP/balanced-brackets.lsp
Normal file
12
Task/Balanced-brackets/AutoLISP/balanced-brackets.lsp
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
(defun BalancedBrackets (str / cntOpen curr)
|
||||
(setq cntOpen 0)
|
||||
(setq str (vl-string->list str))
|
||||
(while (and (>= cntOpen 0) str)
|
||||
(setq curr (car str) str (cdr str))
|
||||
(cond
|
||||
((= 91 curr) (setq cntOpen (1+ cntOpen)))
|
||||
((= 93 curr) (setq cntOpen (1- cntOpen)))
|
||||
)
|
||||
)
|
||||
(and (null str) (zerop cntOpen))
|
||||
)
|
||||
98
Task/Balanced-brackets/COBOL/balanced-brackets.cob
Normal file
98
Task/Balanced-brackets/COBOL/balanced-brackets.cob
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. test-balanced-brackets.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 True-Val CONSTANT 0.
|
||||
01 False-Val CONSTANT 1.
|
||||
|
||||
LOCAL-STORAGE SECTION.
|
||||
01 current-time PIC 9(10).
|
||||
|
||||
01 bracket-type PIC 9.
|
||||
88 add-open-bracket VALUE 1.
|
||||
|
||||
01 bracket-string-area.
|
||||
03 bracket-string PIC X(10) OCCURS 10 TIMES.
|
||||
|
||||
01 i PIC 999.
|
||||
01 j PIC 999.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
*> Seed RANDOM().
|
||||
MOVE FUNCTION CURRENT-DATE (7:10) TO current-time
|
||||
MOVE FUNCTION RANDOM(current-time) TO current-time
|
||||
|
||||
|
||||
*> Generate random strings of brackets.
|
||||
PERFORM VARYING i FROM 1 BY 1 UNTIL 10 < i
|
||||
PERFORM VARYING j FROM 1 BY 1 UNTIL i < j
|
||||
COMPUTE bracket-type =
|
||||
FUNCTION REM(FUNCTION RANDOM * 1000, 2)
|
||||
|
||||
IF add-open-bracket
|
||||
MOVE "[" TO bracket-string (i) (j:1)
|
||||
ELSE
|
||||
MOVE "]" TO bracket-string (i) (j:1)
|
||||
END-IF
|
||||
END-PERFORM
|
||||
END-PERFORM
|
||||
|
||||
*> Display if the strings are balanced or not.
|
||||
PERFORM VARYING i FROM 1 BY 1 UNTIL 10 < i
|
||||
CALL "check-if-balanced" USING bracket-string (i)
|
||||
IF RETURN-CODE = True-Val
|
||||
DISPLAY FUNCTION TRIM(bracket-string (i))
|
||||
" is balanced."
|
||||
ELSE
|
||||
DISPLAY FUNCTION TRIM(bracket-string (i))
|
||||
" is not balanced."
|
||||
END-IF
|
||||
END-PERFORM
|
||||
|
||||
GOBACK
|
||||
.
|
||||
|
||||
END PROGRAM test-balanced-brackets.
|
||||
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. check-if-balanced.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 True-Val CONSTANT 0.
|
||||
01 False-Val CONSTANT 1.
|
||||
|
||||
LOCAL-STORAGE SECTION.
|
||||
01 nesting-level PIC S999.
|
||||
01 i PIC 999.
|
||||
|
||||
LINKAGE SECTION.
|
||||
01 bracket-string PIC X(100).
|
||||
|
||||
PROCEDURE DIVISION USING bracket-string.
|
||||
PERFORM VARYING i FROM 1 BY 1
|
||||
UNTIL (100 < i)
|
||||
OR (bracket-string (i:1) = SPACE)
|
||||
OR (nesting-level < 0)
|
||||
IF bracket-string (i:1) = "["
|
||||
ADD 1 TO nesting-level
|
||||
ELSE
|
||||
SUBTRACT 1 FROM nesting-level
|
||||
IF nesting-level < 0
|
||||
MOVE False-Val TO RETURN-CODE
|
||||
GOBACK
|
||||
END-IF
|
||||
END-IF
|
||||
END-PERFORM
|
||||
|
||||
IF nesting-level = 0
|
||||
MOVE True-Val TO RETURN-CODE
|
||||
ELSE
|
||||
MOVE False-Val TO RETURN-CODE
|
||||
END-IF
|
||||
|
||||
GOBACK
|
||||
.
|
||||
|
||||
END PROGRAM check-if-balanced.
|
||||
45
Task/Balanced-brackets/Euphoria/balanced-brackets.eu
Normal file
45
Task/Balanced-brackets/Euphoria/balanced-brackets.eu
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
function check_brackets(sequence s)
|
||||
integer level
|
||||
level = 0
|
||||
for i = 1 to length(s) do
|
||||
if s[i] = '[' then
|
||||
level += 1
|
||||
elsif s[i] = ']' then
|
||||
level -= 1
|
||||
if level < 0 then
|
||||
return 0
|
||||
end if
|
||||
end if
|
||||
end for
|
||||
return level = 0
|
||||
end function
|
||||
|
||||
function generate_brackets(integer n)
|
||||
integer opened,closed,r
|
||||
sequence s
|
||||
opened = n
|
||||
closed = n
|
||||
s = ""
|
||||
for i = 1 to n*2 do
|
||||
r = rand(opened+closed)
|
||||
if r<=opened then
|
||||
s &= '['
|
||||
opened -= 1
|
||||
else
|
||||
s &= ']'
|
||||
closed -= 1
|
||||
end if
|
||||
end for
|
||||
return s
|
||||
end function
|
||||
|
||||
sequence s
|
||||
for i = 1 to 10 do
|
||||
s = generate_brackets(3)
|
||||
puts(1,s)
|
||||
if check_brackets(s) then
|
||||
puts(1," OK\n")
|
||||
else
|
||||
puts(1," NOT OK\n")
|
||||
end if
|
||||
end for
|
||||
18
Task/Balanced-brackets/PowerShell/balanced-brackets-1.ps1
Normal file
18
Task/Balanced-brackets/PowerShell/balanced-brackets-1.ps1
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
function Get-BalanceStatus ( $String )
|
||||
{
|
||||
$Open = 0
|
||||
ForEach ( $Character in [char[]]$String )
|
||||
{
|
||||
switch ( $Character )
|
||||
{
|
||||
"[" { $Open++ }
|
||||
"]" { $Open-- }
|
||||
default { $Open = -1 }
|
||||
}
|
||||
# If Open drops below zero (close before open or non-allowed character)
|
||||
# Exit loop
|
||||
If ( $Open -lt 0 ) { Break }
|
||||
}
|
||||
$Status = ( "NOT OK", "OK" )[( $Open -eq 0 )]
|
||||
return $Status
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# Test
|
||||
$Strings = @( "" )
|
||||
$Strings += 1..5 | ForEach { ( [char[]]("[]" * $_) | Get-Random -Count ( $_ * 2 ) ) -join "" }
|
||||
|
||||
ForEach ( $String in $Strings )
|
||||
{
|
||||
$String.PadRight( 12, " " ) + (Get-BalanceStatus $String)
|
||||
}
|
||||
57
Task/Balanced-brackets/PowerShell/balanced-brackets-3.ps1
Normal file
57
Task/Balanced-brackets/PowerShell/balanced-brackets-3.ps1
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
function Test-BalancedBracket
|
||||
{
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Tests a string for balanced brackets.
|
||||
.DESCRIPTION
|
||||
Tests a string for balanced brackets. ("<>", "[]", "{}" or "()")
|
||||
.EXAMPLE
|
||||
Test-BalancedBracket -Bracket Brace -String '{abc(def[0]).xyz}'
|
||||
Test a string for balanced braces.
|
||||
.EXAMPLE
|
||||
Test-BalancedBracket -Bracket Curly -String '{abc(def[0]).xyz}'
|
||||
Test a string for balanced curly braces.
|
||||
.EXAMPLE
|
||||
Test-BalancedBracket -Bracket Curly -String ([System.IO.File]::ReadAllText('.\Foo.ps1'))
|
||||
Test a file for balanced curly braces.
|
||||
.LINK
|
||||
http://go.microsoft.com/fwlink/?LinkId=133231
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
[OutputType([bool])]
|
||||
Param
|
||||
(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[ValidateSet("Angle", "Brace", "Curly", "Paren")]
|
||||
[string]
|
||||
$Bracket,
|
||||
|
||||
[Parameter(Mandatory=$true)]
|
||||
[AllowEmptyString()]
|
||||
[string]
|
||||
$String
|
||||
)
|
||||
|
||||
$notFound = -1
|
||||
|
||||
$brackets = @{
|
||||
Angle = @{Left="<"; Right=">"; Regex="^[^<>]*(?>(?>(?'pair'\<)[^<>]*)+(?>(?'-pair'\>)[^<>]*)+)+(?(pair)(?!))$"}
|
||||
Brace = @{Left="["; Right="]"; Regex="^[^\[\]]*(?>(?>(?'pair'\[)[^\[\]]*)+(?>(?'-pair'\])[^\[\]]*)+)+(?(pair)(?!))$"}
|
||||
Curly = @{Left="{"; Right="}"; Regex="^[^{}]*(?>(?>(?'pair'\{)[^{}]*)+(?>(?'-pair'\})[^{}]*)+)+(?(pair)(?!))$"}
|
||||
Paren = @{Left="("; Right=")"; Regex="^[^()]*(?>(?>(?'pair'\()[^()]*)+(?>(?'-pair'\))[^()]*)+)+(?(pair)(?!))$"}
|
||||
}
|
||||
|
||||
if ($String.IndexOf($brackets.$Bracket.Left) -eq $notFound -and
|
||||
$String.IndexOf($brackets.$Bracket.Right) -eq $notFound -or $String -eq [String]::Empty)
|
||||
{
|
||||
return $true
|
||||
}
|
||||
|
||||
$String -match $brackets.$Bracket.Regex
|
||||
}
|
||||
|
||||
|
||||
'', '[]', '][', '[][]', '][][', '[[][]]', '[]][[]' | ForEach-Object {
|
||||
if ($_ -eq "") { $s = "(Empty)" } else { $s = $_ }
|
||||
"{0}: {1}" -f $s.PadRight(8), "$(if (Test-BalancedBracket Brace $s) {'Is balanced.'} else {'Is not balanced.'})"
|
||||
}
|
||||
21
Task/Balanced-brackets/Rebol/balanced-brackets.rebol
Normal file
21
Task/Balanced-brackets/Rebol/balanced-brackets.rebol
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
Rebol [
|
||||
title: "Rosetta code: Balanced brackets"
|
||||
file: %Balanced_brackets.r3
|
||||
url: https://rosettacode.org/wiki/Balanced_brackets
|
||||
]
|
||||
|
||||
;; Returns TRUE if all square brackets in `str` are properly nested and balanced
|
||||
balanced?: function/with [str][parse str rule][
|
||||
;; Recursive rule: a balanced group is [ followed by any nested balanced groups, then ]
|
||||
balanced-brackets: [#"[" any balanced-brackets #"]"]
|
||||
;; Full string must consist entirely of balanced groups with nothing left over
|
||||
rule: [any balanced-brackets end]
|
||||
]
|
||||
|
||||
;; Test: generate 10 random substrings of bracket pairs and check each
|
||||
random/seed 2
|
||||
repeat i 10 [
|
||||
str: random copy/part "[][][][][][][][][][]" i * 2 ;; shuffle first i*2 chars
|
||||
res: pick ["balanced" "unbalanced"] balanced? str ;; label the result
|
||||
printf [-2 ". " 11] reduce [i res mold str] ;; print index, verdict, string
|
||||
]
|
||||
36
Task/Balanced-brackets/VBScript/balanced-brackets-1.vbs
Normal file
36
Task/Balanced-brackets/VBScript/balanced-brackets-1.vbs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
For n = 1 To 10
|
||||
sequence = Generate_Sequence(n)
|
||||
WScript.Echo sequence & " is " & Check_Balance(sequence) & "."
|
||||
Next
|
||||
|
||||
Function Generate_Sequence(n)
|
||||
For i = 1 To n
|
||||
j = Round(Rnd())
|
||||
If j = 0 Then
|
||||
Generate_Sequence = Generate_Sequence & "["
|
||||
Else
|
||||
Generate_Sequence = Generate_Sequence & "]"
|
||||
End If
|
||||
Next
|
||||
End Function
|
||||
|
||||
Function Check_Balance(s)
|
||||
Set Stack = CreateObject("System.Collections.Stack")
|
||||
For i = 1 To Len(s)
|
||||
char = Mid(s,i,1)
|
||||
If i = 1 Or char = "[" Then
|
||||
Stack.Push(char)
|
||||
ElseIf Stack.Count <> 0 Then
|
||||
If char = "]" And Stack.Peek = "[" Then
|
||||
Stack.Pop
|
||||
End If
|
||||
Else
|
||||
Stack.Push(char)
|
||||
End If
|
||||
Next
|
||||
If Stack.Count > 0 Then
|
||||
Check_Balance = "Not Balanced"
|
||||
Else
|
||||
Check_Balance = "Balanced"
|
||||
End If
|
||||
End Function
|
||||
40
Task/Balanced-brackets/VBScript/balanced-brackets-2.vbs
Normal file
40
Task/Balanced-brackets/VBScript/balanced-brackets-2.vbs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
option explicit
|
||||
|
||||
function do_brackets(bal)
|
||||
dim s,i,cnt,r
|
||||
if bal then s="[":cnt=1 else s="":cnt=0
|
||||
for i=1 to 20
|
||||
if (rnd>0.7) then r=not r
|
||||
if not r then
|
||||
s=s+"[" :cnt=cnt+1
|
||||
else
|
||||
if not bal or (bal and cnt>0) then s=s+"]":cnt=cnt-1
|
||||
end if
|
||||
next
|
||||
if bal and cnt<>0 then s=s&string(cnt,"]")
|
||||
if not bal and cnt=0 then s=s&"]"
|
||||
do_brackets=s
|
||||
end function
|
||||
|
||||
function isbalanced(s)
|
||||
dim s1,i,cnt: cnt=0
|
||||
for i=1 to len(s)
|
||||
s1=mid(s,i,1)
|
||||
if s1="[" then cnt=cnt+1
|
||||
if s1="]" then cnt=cnt-1
|
||||
if cnt<0 then isbalanced=false:exit function
|
||||
next
|
||||
isbalanced=(cnt=0)
|
||||
end function
|
||||
|
||||
function iif(a,b,c): if a then iif=b else iif=c end if : end function
|
||||
|
||||
randomize timer
|
||||
dim i,s,bal,bb
|
||||
for i=1 to 10
|
||||
bal=(rnd>.5)
|
||||
s=do_brackets(bal)
|
||||
bb=isbalanced(s)
|
||||
wscript.echo iif (bal,"","un")& "balanced string " &vbtab _
|
||||
& s & vbtab & " Checks as " & iif(bb,"","un")&"balanced"
|
||||
next
|
||||
Loading…
Add table
Add a link
Reference in a new issue