NEW PEALS OF
CAMBRIDGE SURPRISE MAJOR




This project, initiated in late January 1988 using a Research Machines 380Z computer, had as its original object the production of new peals of Cambridge Surprise Major in parts, or proving by exhaustion that they are unattainable under the conditions proposed.

The Conditions

The project considered only peals with the tenors kept together, allowing the option of singles at Middle, Wrong and Home. The possible calls were therefore: bob at Before, bob or single at Middle, bob or single at Wrong, bob or single at Home. The original intention was to produce peals in exact parts, which cut out the possibility of ending two changes after the Wrong (though such an ending might be superimposed later by inspection) but, as explained later, a one-part search for palindromes was found to be possible, and was carried out exhaustively, and it was found possible to compose a peal with a coda ending after the Wrong. Since out-of-course leads were to be used, the falsity of the method (with tenors fixed) needed to be investigated first.

Program CAM

This BASIC program investigated the falseness of Cambridge Major with the tenors 'together'. It started off with a section construct- ing the course from places (given in a fixed statement), adapted from another program. The combinations of positions of 1,7,8 were plotted, and false sections deduced. Owing to the limitations of the calls proposed, the course was considered in five sections, the first two and last two leads being grouped as Sections 1 and 5 respectively as they could not be separated by the call pattern. The output of the program was a disk file OUT.DAT. There were three columns: the first gave the section (1 to 5) of the plain course, the second the section with which the first repeats, and the third gave the false coursend of the second. The third column gave the usual form of the coursend in terms of the figures 2 to 6. This file OUT.DAT was edited under WordStar in order (a) to compress the format and replace the blanks by necessary commas, (b) to remove repetitions of the same line, and (c) to reduce the figures in the third column by one, so that the false coursends were trans- formed in terms of numbers 1 to 5. The file was also sorted, though this was not in fact necessary. Its final form had 48 lines, and was named file FALSEX.DAT. This file stated the full falseness of Cambridge Major with the tenors together.

Programs CALLS and FCE

These two programs started off with the same section which classified the 120 possible coursends (all permutations of 23456) into types. In order to simplify the calculations, the figures 1 to 5 were used throughout, substituted for 2 to 6. Early on in each program, the order of the Group to be used was stated in a fixed statement, such as NN=5, and the set of trans- figures to be used for generating the Group were given in a data statement. From this information, the program classified the 120 coursends into types, and the whole subsequent train of events could be restarted for a different Group by restating the declarations of order and generators. This common section ended by producing an array F(120) listing the type numbers of the 120 possible coursends.

Program CALL

Program CALL contained DATA statements holding details of the seven permitted calls, and computed the table of calls by types. There were 120/NN types of course, each having five course sections. Thus there were 5*(120/NN) types in all (when NN=5 this happens to be 120), one row of the table for each type, and three columns tabulated the type resulting by Plain, Bob and Single.

The numbering of the types was of course arbitrary, but the logic of the process adopted was as follows:

  1. The 120 coursends were arranged in ascending order, considering each to be a 5-digit integer.
  2. The first was taken arbitrarily as course No.1, and the other NN-1 courses found which were of the same type. Then the next unused course was No.2, and so on.
  3. Types 1 to 5 were the five course sections, in order, of the first course coset; types 6 to 10 of the second course coset; and so on.
The resulting table had a number of zeros in it, denoting 'im- possible' calls. Thus Types 1, 6, 11 etc which were the first sections of courses could only lead to Plain or Bob (Before), not Single; while Types 4, 9, 14 etc. which were the fourth sections (fifth leads) of courses could only lead to a Plain. Sections 4 and 5 had to be kept distinct because of the shunt of the Bob Before, which resulted in a Section 5 without its preceding Section 4.

Program FCE This program calculated a table of falsity of types. It read in the information on false sections from file FALSEX.DAT, then went through all types, working out those types which were false with each. The number of such false types was, initially,

Types 1, 6, 11 etc.      13 false types
Types 2, 7, 12 etc.       8 false types
Types 3, 8, 13 etc.       6 false types
Types 4, 9, 14 etc.       8 false types
Types 5, 10, 15 etc.     13 false types
Accordingly, a matrix C(13,120) was computed, and unused elements were left as zero. However, as a section is (very!) false with itself, time was saved in the tree search by making the first false type the type itself. Accordingly, when the table was written as a disk file FTYPES.DAT the number of the line was written in as the first element, making a maximum of fourteen elements in the row. During the tree search, examination of whether or not the starting point had been reached (thus completing a round block) had to precede the examination for falsity.

Vetting of the Data File FTYPES.DAT

It was frequently found that the same false type occurred more than once in a row. This is a feature of composition in parts. The program FCE.BAS detected this, and removed duplications in order to save time in the tree search.

It sometimes happened that, when transpositions of false sections coincided in character with internal transpositions of the generating Group, some types were false with themselves. This did not happen with a 5-part plan, since none of the transpositions of falsity have a 5 part cycle. In such cases, the types involved could not be used at all, and consequently the tables were purged of them so as not to waste time in the tree search.

A further possible way of contracting the tables is as follows: suppose that a type A gives a type B by means of a particular call, and that type B is on the list of false sections of type A (in which case A will also be on the list of type B). The logical outcome is that this particular call cannot be used, and the possibility of using it can be removed from the table of calls. If the result is no choice left, A necessarily involving being followed by C, then there will be a 'knock on' effect to the next in the chain which might be pursued. Such a procedure was not however carried out.

Program SEARCH

This program implemented the tree search after reading in data from the files CALLS.DAT and FTYPES.DAT into memory. At each point, normally there were three alternative calls (P, B or S) but presence of a zero in the CALLS array resulted in the next call being taken.

The tree search incorporated a simple test for a round block of minimum length, then a more complex test to check the length that had been assembled. A minimum of 157 leads is required for a peal. For a 5-part, this means a minimum of 160 leads, 32 in each part. Since a full course of 7 leads had 5 sections (1.4 leads per section) and a short course of 4 leads had 2 sections (2 leads per section) the minimum number of sections per part for a peal was 16. Hence the first test for a possible peal was that a minimum of 16 sections had given a round block of types. A similar calculation applied to other numbers of parts, and SEARCH was programmed for it.

There were 24 possible "tenors home" starts for a 5-part search, and sets of these were likely to be equivalent, but (unlike some other part plans) it was difficult to see any such sets for the 5-part search.


Next section Synopsis of Results from the Plans
Up to Contents