Re: a problem to solve




John Salerno wrote:
Ok, here's a problem I've sort of assigned to myself for fun, but it's
turning out to be quite a pain to wrap my mind around. It's from a
puzzle game. It will help if you look at this image:

http://www.johnjsal.devisland.net/switches.jpg

Here's the situation: Each of the four rows in the diagram is considered
a single 'panel'. Each panel has eight 'switches', which are composed of
two columns each, and these columns have a total of 20 lights (10 in one
column, 10 in the other). The picture hopefully makes this description
clear.

The shaded boxes denote which lights turn on when you select that
particular switch. So, the very first switch in the first row, if turned
on, would turn on the first four lights, not the fifth, turn on the
sixth, not the seventh, and turn on 8-14, etc. up to the 20th light.

You can only turn on one switch per panel, so eventually you will have
four switches lit.

What you are shooting for is to find a combination of four switches so
that exactly three lights in the same location are lit, no more or less.
So turning on the first switch in each row would not work, because that
would mean that the second light in each switch would be lit, and you
can't have all four lit, just three.

So anyway, the reason I describe all this isn't so you can solve it for
me, because I really want to figure it out. I just was hoping you can
give me some tips as to how to implement the algorithm. Maybe Python has
some functions that I can use to make it easier than it seems.

My plan right now is to do a comparison of panel 1, switch 1, light 1
with panel 2, switch 1, light 1, then panel 3, switch 1, light 1, etc.,
which sounds scary. I didn't know if Python had a way to compare the
whole switch in one step, perhaps.

Also, I was wondering how I might implement the switches as data
structures. Right now I have them as a list of 32 strings, but I thought
maybe some type of bitwise comparisons could help.

Then you'll want to represent the lights as a 20-bit binary number.

Each bit position corresponds to 4 lamps, so there are 16 possible
ways those 4 lamps could be lit. Construct a truth table and see which
of the outcomes have exactly 3 lit.

A B C D Y
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0

The boolean equation (where ~ means NOT, + means OR, x means XOR)
for Y is thus

Y = ~ABCD + A~BCD + AB~CD + ABC~D

which can be reduced to

Y = CD(AxB) + AB(CxD)

You'll need to do that for each bit position.

Now for each combination of four switches, look for one that
gives you 11111111111111111111 when you calculate the
20 Y values.

For eaxample, the first switch in each panel (using hex)
would be:

A1 = 0xf5fdc
B1 = 0xddb7d
C1 = 0xf33bd
D1 = 0x77edb

Y = ((C1 & D1) & (A1 ^ B1)) | ((A1 & B1) & (C1 ^ D1))
Y
674245

But which positions have 3 lights lit?

Printing Y in base 2 will tell us:

import gmpy
print gmpy.digits(Y,2)
10100100100111000101

Now you'll want A,B,C,D to be lists and adjust the formula for Y
accordingly. Then simply try every combination of ABCD.



Anyway, any advice for how to proceed would be great! I hope I described
it well enough.

.



Relevant Pages

  • Re: Generator Hub and Light for a non retro roadbike
    ... the difference between primary and secondary lights is the switch. ... The main circuit runs from the generator output through one headlight ...
    (rec.bicycles.tech)
  • a problem to solve
    ... Each panel has eight 'switches', which are composed of two columns each, and these columns have a total of 20 lights. ... The shaded boxes denote which lights turn on when you select that particular switch. ... What you are shooting for is to find a combination of four switches so that exactly three lights in the same location are lit, ... So turning on the first switch in each row would not work, because that would mean that the second light in each switch would be lit, and you can't have all four lit, just three. ...
    (comp.lang.python)
  • Re: bally mr mrs pacman pinball help
    ... If nothing happens drop one of the offending DTs (Drop Targets) and try ... Also you'll want to run switch test with the ball removed from the game and ... So i checked the light driver board and a few connecter ... Now all lights work ...
    (rec.games.pinball)
  • Re: JEEP Cherokee Brake Lights
    ... check of lights and found that I had no brake lights. ... no adjustment on that switch... ... tab with a 5-spd but it is simply sitting there with no connection. ...
    (rec.autos.4x4)
  • Re: 1992 Suzuki GSXR 1100 Power/Electrical Issues
    ... the ignition, much less actually on the "ON" position... ... to the ignition switch and found that all my lights are still on? ... What do you mean by "all my lights"? ... headlight relays ...
    (rec.motorcycles.tech)