Just peeking-in since I'm uber-busy with my work-load in my day job right now (just taking a short breather). I'm also cross posting so as not to disturb the original thread in the programming forum.
Ok, this actually reminded me of the Sojourn Chronicles by Rick Cook <http://en.wikipedia.org/wiki/Rick_Cook>. In one of the books, they created a password cracking deamon which materialized in-front of the 3 guardians and started speaking gibberish. The idea was that the guardians were created by a wizard so the password to bypass them is just a few comprehensible phrases. So the deamon would randomly speak words until it got the password right. It's a brute force hack! :) I hope Rick Cook finishes the series. It was a great read! -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dan Bron Sent: Tuesday, June 24, 2008 11:48 PM To: Programming forum Subject: [Jprogramming] Applied J: burglarly 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
