[r-t] Delta-based transposition representation
Basil Potts
basilpotts at gmail.com
Wed Jun 15 01:16:26 UTC 2016
This thread has provided fascinating reading. I find that I can nearly
understand one of the contributions and then it reverts to technical
language way beyond my depth. Is it possible to occasionally provide a
non-technical summary of, say, what has been achieved so far by the experts?
On 15 Jun 2016 9:25 am, "Alexander Holroyd" <holroyd at math.ubc.ca> wrote:
> I used something related in Inpact. (
> http://www.math.ubc.ca/~holroyd/ringing.html)
> When it was written (in 2000 or so), it was vitally important to apply
> place notations very fast, so that a peal could be reproved instantly
> whenever the user makes a change.
>
> I found a way to do this using bit operations. A row r on up to 16 bells
> is represented as a 64-bit word, with 4 bits per place. A change c is
> represented by 3 64-bit masks, representing the positions of bells that
> move up, down, or make a place.
>
> E.g. the change 14 on 6 bells would be:
> down = 0000 1111 0000 0000 1111 0000
> up = 0000 0000 1111 0000 0000 1111
> place = 1111 0000 0000 1111 0000 0000
>
> We can apply this to row r in just 7 operations:
>
> (r>>4)&down | (r<<4)&up | r&place
>
> where <<,>> are bit shift operators, and &,| are bitwise and and or.
>
> Ironically it was just after finishing writing this that I became
> interested in ringing on more than 16...
>
> Ander
>
> On Thu, 9 Jun 2016, Alan Burlison wrote:
>
> A while ago I wrote some code to expand place notation to the
>> corresponding blue line numbers. One thing that I did to make my life
>> easier was to describe the difference between two rows as deltas. For
>> example the change between the following two rows:
>>
>> A 1 2 3 4 5 6
>> B 2 1 4 3 6 5
>>
>> would be:
>>
>> +1 -1 +1 -1 +1 -1
>>
>> Between the two ends of a sequence of rows:
>>
>> A 2 6 4 1 5 3
>> :
>> N 5 3 6 2 1 4
>>
>> +3 +1 +3 +1 -4 -4
>>
>> i.e. the bell in place 1 (#2) has moved +3 places to place 4. the bell in
>> place 6 (#3) has moved -4 places to place 2.
>>
>> Applying a change to ma row is very simple - just add the deltas to the
>> current bell positions. It's easy to create the inverse of a change by
>> simply reversing the signs of the deltas, and you trivially know if a
>> change is valid by summing the deltas - the result must be 0. It's also
>> easy to check for other validity errors, for example the first colunm must
>> be either 0 or 1 as the bell can't move off the end of the row and so forth.
>>
>> I haven't seen changes described this way anywhere else which puzzles me
>> a bit, because to me it's the blindingly obvious way of doing it, rather
>> than the position-based notation I've seen used elsewhere.
>>
>> --
>> Alan Burlison
>> --
>>
>> _______________________________________________
>> ringing-theory mailing list
>> ringing-theory at bellringers.net
>> http://bellringers.net/mailman/listinfo/ringing-theory_bellringers.net
>>
>>
> _______________________________________________
> ringing-theory mailing list
> ringing-theory at bellringers.net
> http://bellringers.net/mailman/listinfo/ringing-theory_bellringers.net
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://bellringers.net/pipermail/ringing-theory/attachments/20160615/1d98a10e/attachment-0002.html>
More information about the ringing-theory
mailing list