On 5/5/06, Ruby Quiz <james / grayproductions.net> wrote: > The three rules of Ruby Quiz: > > 1. Please do not post any solutions or spoiler discussion for this quiz until > 48 hours have passed from the time on this message. > > 2. Support Ruby Quiz by submitting ideas as often as you can: > > http://www.rubyquiz.com/ > > 3. Enjoy! > > Suggestion: A [QUIZ] in the subject of emails about the problem helps everyone > on Ruby Talk follow the discussion. Please reply to the original quiz message, > if you can. > > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > by Ross Bamford > > The BigCo Bracket Company, one of the world's largest suppliers of brackets, > hinges and fittings, has lately been experiencing problems in it's manufacturing > division, with a large number or brackets lost or broken in transit owing to > faulty packaging at the end of the line. > > Investigations into the cause of the problem have led engineers to an ancient > COBOL program controlling the packaging machinery. This program is responsible > for selecting the type of packaging a given bracket should be shipped in, based > on input from an array of sensors on the production line. It then sends a > description of the package to the packager itself, which packs the bracket and > sends it on to shipping. The description is a simple text string, made up of > brackets with the following format: > > (B) - Bracket in a soft wrapping > [B] - Bracket in a cardboard box > {B} - Bracket in a wooden box > > Often, brackets have multiple layers of packaging for protection, for example: > > {(B)} - Soft-wrapped bracket in a wooden box > [{B}] - Wooden-boxed bracket with cardboard outer > > [{(B)}{(B)(B)}] - Wooden boxed single and double bracket packs with soft > inner wrap, in cardboard outer. > > Now, the problem is that this venerable program has for some reason begun to > output malformed packaging descriptions, occasionally missing off a bracket, for > example: > > [{(B}{(B)(B)}] > > or: > > {(B)}{(B)(B)}] > > After a fruitless search for someone with the skills to fix this problem, the > engineers changed tack and called you in to fix the problem from the outside. > > What needs to be done? > ====================== > > Basically, the plan is to insert another computer between the controller and the > packer, upon which will run your program. The engineers can handle the > integration with their systems - they just need you to write a slick bit of Ruby > code to validate the packaging descriptions as they're passed in. You've been > given two choices: > > * Check the description, and return exitcode indicating it's okay (0) > or bad (1). If correct, you should also print the description to stdout. > If it's bad, the system can then force the controller to try again. > > * Fix the description, if possible, and print it to stdout. The system > will then pass the fixed code to the packer. > > Do the brackets have to have a parent wrapper? i.e. {(B)(B)} is of course valid but (B)(B) isn't. I imagine that's the case, I just want to make sure. Pat