this post was submitted on 17 Aug 2023
14 points (100.0% liked)

Programming Challenges

6 readers
1 users here now

Welcome to the programming.dev challenge community!

Three challenges will be posted every week to complete

Easy challenges will give 1 point, medium will give 2, and hard will give 3. If you have the fastest time or use the least amount of characters you will get a bonus point (in ties everyone gets the bonus point)

Exact duplicate solutions are not allowed and will not give you any points. Submissions on a challenge will be open for a week.

A leaderboard will be posted every month showing the top people for that month

founded 1 year ago
MODERATORS
 

Bracket Inc. wants to ship out new products using their excess brackets. They have tasked you with generating every possible assortment of brackets for some n brackets where the brackets will match

  • A bracket match is an opening and closing version of the same kind of bracket beside each other ()
  • If a bracket matches then outer brackets can also match (())
  • n will be an even number
  • The valid brackets are ()[]{}

For example for n = 4 the options are

  • ()()
  • (())
  • [][]
  • [[]]
  • {}{}
  • {{}}
  • []()
  • ()[]
  • (){}
  • {}()
  • []{}
  • {}[]
  • ({})
  • {()}
  • ([])
  • [()]
  • {[]}
  • [{}]

You must accept n as a command line argument (entered when your app is ran) and print out all of the matches, one per line

(It will be called like node main.js 4 or however else to run apps in your language)

You can use the solution tester in this post to test you followed the correct format https://programming.dev/post/1805174

Any programming language may be used. 2 points will be given if you pass all the test cases with 1 bonus point going to whoevers performs the quickest and 1 for whoever can get the least amount of characters

To submit put the code and the language you used below

you are viewing a single comment's thread
view the rest of the comments
[–] Ategon@programming.dev 1 points 1 year ago* (last edited 1 year ago) (2 children)

Yeah ill have to push an update to it. I'll likely check accuracy manually and just use it to calculate the runtime to deal with the random ordering or I can do some sort of formatting that handles that

[–] brie 1 points 1 year ago

If order doesn't matter, implementations can be quickly compared with a reference implementation using diff + sort:

>> for i in 2 4 6 8; do diff -qs <(./a.out $i|sort) <(./a.out $i|sort); done
Files /dev/fd/63 and /dev/fd/62 are identical
Files /dev/fd/63 and /dev/fd/62 are identical
Files /dev/fd/63 and /dev/fd/62 are identical
Files /dev/fd/63 and /dev/fd/62 are identical
>> for i in 2 4 6 8; do diff -qs <(./a.out $i|sort) <(true $i|sort); done
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
[–] oessessnex@programming.dev 1 points 1 year ago (1 children)

You can sort the lines alphabetically before comparing.

[–] Ategon@programming.dev 1 points 1 year ago

True, would be a simple way to solve it. Will get that in