Another try.

blnc3=:  3 : 0
z=. +/1 2 3 * (0 1 2,:1 _1 0) rpl (_2 [\ '[]{}()') i."1 y
z=. ((}...@])`,`,@.(*...@+{.))/ z
(0:`1:`2: @.(*@<./))(,#) z
)

   blnc3 '[({[({})]} [({})] )]'
0
   blnc3 '[({[({})]} [({})]'
1
   blnc3 '[({ [({})] [({})] )]'
2


R.E. Boss


> -----Oorspronkelijk bericht-----
> Van: [email protected] [mailto:programming-
> [email protected]] Namens R.E. Boss
> Verzonden: woensdag 7 oktober 2009 16:45
> Aan: 'Programming forum'
> Onderwerp: Re: [Jprogramming] Balanced parens
> 
> Thanks to Schott who pointed out I misunderstood the specs.
> 
> 
> R.E. Boss
> 
> 
> > -----Oorspronkelijk bericht-----
> > Van: [email protected] [mailto:programming-
> > [email protected]] Namens R.E. Boss
> > Verzonden: woensdag 7 oktober 2009 14:42
> > Aan: 'Programming forum'
> > Onderwerp: Re: [Jprogramming] Balanced parens
> >
> > Alternative:
> >
> > blnc1=: 3 : 0
> > z=. * +/\"1 (0 1 2,:1 _1 0) rpl (_2 [\ '[]{}()') i."1 y
> > (((0 ~: {:) *. 0 <: <./) + 2 * 0 > <./)"1 z
> > )
> >
> > gives the desired output per paren.
> >
> >    [t=:'[{(]{]1)}([)'
> > [{(]{]1)}([)
> >
> >     blnc1 t
> > 2 1 0
> >
> > so [] is unbalanced, {} has closing delimiters to come and () is
> balanced.
> >
> >
> > R.E. Boss
> >
> >
> > > -----Oorspronkelijk bericht-----
> > > Van: [email protected] [mailto:programming-
> > > [email protected]] Namens R.E. Boss
> > > Verzonden: woensdag 7 oktober 2009 12:18
> > > Aan: 'Programming forum'
> > > Onderwerp: Re: [Jprogramming] Balanced parens
> > >
> > > I gave an incomplete answer.
> > >
> > > rpl=:] - (-/ , 0:)@[ {~ {...@[ i. ]       NB. from rpl2a in
> > > NB. http://www.jsoftware.com/pipermail/programming/2007-
> July/007303.html
> > >
> > > blnc0=: 3 : ' * +/"1 (0 1 2,:1 _1 0) rpl (_2[\''[]{}()'') i."1 y'
> > >
> > > blnc=: 3 : '(((0 < >./)*.0 <: <./)+ 2 * 0 > <./) blnc0 y'
> > >
> > >    [t=:'[]{}()' {~ 1...@# 6
> > > (({(][)[)]
> > >
> > >    blnc\ t
> > > 1 1 1 1 2 1 1 1 1 1
> > >
> > >  so  >./ blnc\ t  is the ultimate answer.
> > >
> > >    |: blnc0\ t
> > > 0 0 0 0 _1 0 0 1 1 0
> > > 0 0 1 1  1 1 1 1 1 1
> > > 1 1 1 1  1 1 1 1 1 1
> > >
> > >  indicates where what went wrong.
> > >
> > >
> > > R.E. Boss
> > >
> > >
> > > > -----Oorspronkelijk bericht-----
> > > > Van: [email protected] [mailto:programming-
> > > > [email protected]] Namens R.E. Boss
> > > > Verzonden: woensdag 7 oktober 2009 11:59
> > > > Aan: 'Programming forum'
> > > > Onderwerp: Re: [Jprogramming] Balanced parens
> > > >
> > > >
> > > >    [t=:'[]{}()' {~ 10 ?...@# 6  NB. test data
> > > > [))({}{]({
> > > >
> > > >    (_2[\'[]{}()') i."1 t        NB. indicate different parents
> > > > 0 2 2 2 2 2 2 1 2 2
> > > > 2 2 2 2 0 1 0 2 2 0
> > > > 2 1 1 0 2 2 2 2 0 2
> > > >
> > > >    [T=: * +/"1 (0 1 2,:1 _1 0) rpl (_2[\'[]{}()')i."1 t NB.
> > indicate
> > > > situation per parent
> > > > 0 1 0
> > > >
> > > >    (((0 < >./)*.0 <: <./)+ 2 * 0 > <./) T       NB. produce required
> result
> > > > 1
> > > >
> > > > T already gives the information per parent:
> > > >  0 = balanced
> > > > >0 = balanced so far
> > > > <0 = unbalanced
> > > >
> > > >
> > > > R.E. Boss
> > > >
> > > >
> > > > > -----Oorspronkelijk bericht-----
> > > > > Van: [email protected] [mailto:programming-
> > > > > [email protected]] Namens Chris Burke
> > > > > Verzonden: woensdag 7 oktober 2009 7:06
> > > > > Aan: Programming forum
> > > > > Onderwerp: [Jprogramming] Balanced parens
> > > > >
> > > > > How to check if a string has balanced [] {} ()?
> > > > >
> > > > > Any pair by itself is easy enough, but I want to check all three
> > > balance
> > > > > together, e.g.
> > > > >
> > > > >    ...[(])...
> > > > >
> > > > > would fail. Assume there are no character strings.
> > > > >
> > > > > Ideally, I'd like a result of
> > > > >
> > > > >    0 = balanced
> > > > >    1 = balanced so far, but some closing delimiters to come
> > > > >    2 = unbalanced (and broken)
> > > > >
> > > > >
> > > > > ------------------------------------------------------------------
> --
> > --
> > > > > For information about J forums see
> > http://www.jsoftware.com/forums.htm
> > > >
> > > > --------------------------------------------------------------------
> --
> > > > For information about J forums see
> http://www.jsoftware.com/forums.htm
> > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to