Dan - I solved a similar problem a number of years ago: the codes for answering machines are often only 2-digits and they ignore incorrect parts of the sequence before and after the correct one. I recall that I came up with a 101-digit "universal" answering machine code. Back in the days when the audio modem was prevalent, it was easy to program this to be sent over a phone line as well, so you could crack it in one try.
Regards, Devon On 6/24/08, Dan Bron <[EMAIL PROTECTED]> wrote: > > For convenience's sake, some cars allow you to unlock their doors with a > numeric code rather than a key. The code is entered on a buttonpad on the > door. Your mission, should you choose to accept it, is to become an > efficient burglar of such cars. I'll start you off with some hints. Most > cars have two glaring security flaws: > > (A) Unlike, for example, a computer keyboard or cell phone, there is > no "enter" or "send" key. If you press the right 4 buttons in > the > right sequence, the car door unlocks. Importantly, the lock > ignores everything before and after the right sequence is > pressed. > > (B) You get as many chances as you want (you can press as many > incorrect > buttons as you like, with no ill consequences). > > Let's examine a concrete example. The following hold for most such locks: > > (C) The unlock code consists of 4 button-presses. > > (D) Though it appears there are 10 buttons, there are really > only 5; each button merely carries two labels. So there's no > difference between (eg) pressing "1" or "2": > > [1 | 2] [3 | 4] [5 | 6] [7 | 8] [9 | 0] > > So, if the buttons are labeled A B C D E respectively, and the unlock code > is BCBC, then ABCBCC will open the door, as will DDDDDBCBCDDDDD, etc. > > Theoretically, there is some minimal length sequence which contains all > possible codes (sub-sequences of 4 button pushes). Your job is to construct > a J program to find this sequence (given the set of all buttons and the > length of the unlock code). > > Put another way, write a dyadic J verb "burgle" whose output satisfies the > following criteria: with the five buttons A B C D E and the unlock > code key (with 4=#key ) then your sequence is defined by sequence =: 4 > burgle 'ABCDE' and key e. 4 ]\ > sequence with #sequence minimized. Remember your dyad must be general > enough to unlock a door with any number of buttons (given as the list y ) > and an unlock sequence of any length (given as the integer x ). > > -Dan > > PS: I stole this idea from > http://www.everything2.com/index.pl?node_id=1520430 where the correct > answer is given (for the specific case of 4=x and 5=#y ) in addition to > pointers to the theory underlying its derivation. Try to solve the puzzle > first before visiting the link. > > PPS: Here's a picture of a car buttonpad: > > > http://bp3.blogger.com/_AKM4HWd7eMo/RwaWHOmXQmI/AAAAAAAAAAc/WE7U88UruSI/S760/keyless_entry.jpg > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- Devon McCormick, CFA ^me^ at acm. org is my preferred e-mail ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
