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

Reply via email to