# All Models of 2x4 LEGO Bricks - Findings

## Introduction

This page contains a detailed breakdown of the findings from the main page. You can go directly to the models and SCC pages if you prefer. Before going into details of the findings, we briefly present the theory behind the results.

We want to count the number of models of up to six bricks. Our approach to this counting problem is to construct all possible configurations and count the models. Our solution is made possible by considering configurations as being constructed by a special kind of rectilinear configurations called SCC's. The counting problem is thus transformed into many smaller problems where combinations of SCC's are considered.

The remainder of this page is structured as follows. First we extend upon the terminology introduced on the main page in order to cover the terms used on this page. This includes the precise definition of SCC's. This is followed by an overview of the findings where we provide some intuition into the way that models are found, as well as insight into the software and its current limitations. In the remaining sections we present the raw data of our current findings.

## Terminology (extended)

This section extends the terminology of the main page.

**Strongly Connected Configuration (SCC):**Our software for finding configurations relies on configurations where you can't turn the individual bricks. An SCC is a configuration that has this property. The configuration consisting of a single brick is an SCC. Any SCC can be constructed by taking an existing SCC and adding a new brick while obeying the following rule: The new brick has to connect to at least two studs of another brick. The picture below shows how to construct some SCC's. Notice, that an SCC is an RC, but the opposite is not necessarily true. The picture below shows RC's which are not SCC's.**Connection point:**A corner stud is one of the four studs on a brick which is located at a corner. The four corner studs, together with the four "holes" below the corner studs, form the connection points of a brick. Any configuration can be constructed by connecting SCC's at connection points.**Combination type:**A combination type on the form*a*, where_{1}/a_{2}/.../a_{n}*a*for any_{i}≥ a_{j}*i < j*, represents the set of configurations with*n*SCC's where*a*is the size of the i'th SCC._{i}**Combination:**Given a set of SCC's, the configurations that can be created using the SCC's form a combination. Notice, that a combination is a subset of a combination type.

## Overview of the findings

The table from the main page can be extended with the number of SCC's of different sizes.

Number of bricks | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|

RC's (previous results) | 1 | 24 | 1.560 | 119.580 | 10.166.403 | 915.103.765 |

SCC's (intermediate results) | 1 | 20 | 1.004 | 58.862 | 3.817.291 | 261.534.637 |

Models (our main results) | 0 | 0 | 0 | 1.144 | 213.221* | 26.417.316* |

For a given combination type our software tries out all combinations and reports the models that are found by connecting the SCC's of a combination at the connection points in any way possible. The results of these findings are presented in the sections below.

The software currently has two limitations:

- For some combination types the search space is too large for the program to handle. In these cases a lower bound on the number of models is found and the results are marked with an asterix (*).
- When finding models with three or more SCC's there are some special cases where the software can not properly identify models due to the granularity of angles which are considered. These cases are identified by the software and require human interaction (manual attention) in order to be properly counted.

We are currently working on improving upon these limitations.

## Findings for 4 bricks

For configurations of size 4 the problem space is small enough for our software to find all models and report the cases that require manual attention. These cases arise from the combination types 2/1/1 and 1/1/1/1 and there are 33 cases in total. We dedicate a section for explaining how our software finds these cases, as well as a section for presenting each of the cases.

Combination type | RC's (excluding SCC's) | Models found by the software | Cases requiring manual attention | Manually added models | Total models |
---|---|---|---|---|---|

1/1/1/1 | 912 | 114 | 27 | 2 | 116 |

2/1/1 | 11.984 | 508 | 6 | 2 | 510 |

2/2 | 14.226 | 390 | 0 | 0 | 390 |

3/1 | 33.576 | 128 | 0 | 0 | 128 |

Totals | 60.698 | 1.140 | 33 | 4 | 1.144 |

## Findings for 5 bricks

For configurations of size 5 our software is simply not fast enough to compute the number of models with 4 or more SCC's. This is why we resort to a simpler piece of software which finds a lower bound on the number of models by considering far fewer angles of which the SCC's are connected at their connection points.

The cases that require manual attention are far more numerous than for configurations of size 4. We have not provided insight into the cases that require manual attention as we expect time is better spent on improving the software to significantly reduce the number of cases.

Combination type | RC's (excluding SCC's) | Models found by the software | Cases requiring manual attention | Manually added models | Total models |
---|---|---|---|---|---|

1/1/1/1/1 | 16.260* | 2.436* | 0 | 0 | 2.436* |

2/1/1/1 | 284.320* | 22.447* | 0 | 0 | 22.447* |

2/2/1 | 797.876 | 59.439 | 1.799 | 0 | 59.439 |

3/1/1 | 928.022 | 45.209 | 1.018 | 0 | 45.209 |

3/2 | 1.873.114 | 65.606 | 0 | 0 | 65.606 |

4/1 | 2.449.520 | 18.084 | 0 | 0 | 18.084 |

Totals | 6.349.112 | 213.221* | 2.817 | 0 | 213.221* |

* These numbers are not final. The number of models represent the currently best known lower bounds.

## Findings for 6 bricks

For configurations of size 6 there still are a lot of combination types for which we currently don't have the correct number of models. The problems for configurations of size 5 are only exagerated with the addition of an extra brick.

Combination type | RC's (excluding SCC's) | Models found by the software | Cases requiring manual attention | Manually added models | Total models |
---|---|---|---|---|---|

1/1/1/1/1/1 | 306.674* | 81.413* | 0 | 0 | 81.413* |

2/1/1/1/1 | 6.723.860* | 1.102.133* | 0 | 0 | 1.102.133* |

2/2/1/1 | 31.077.959* | 3.140.371* | 0 | 0 | 3.140.371* |

2/2/2 | 16.739.546* | 1.118.024* | 0 | 0 | 1.118.024* |

3/1/1/1 | 23.909.698* | 2.048.104* | 0 | 0 | 2.048.104* |

3/2/1 | 117.998.790* | 6.124.628* | 0 | 0 | 6.124.628* |

3/3 | 60.608.281 | 2.789.290 | 0 | 0 | 2.789.290 |

4/1/1 | 76.051.344* | 2.700.811* | 0 | 0 | 2.700.811* |

4/2 | 133.642.756 | 5.706.242 | 0 | 0 | 5.706.242 |

5/1 | 186.510.220 | 1.606.300 | 0 | 0 | 1.606.300 |

Totals | 653.569.128 | 26.417.316* | 0 | 0 | 26.417.316* |

* These numbers are not final. The number of models represent the currently best known lower bounds.

## Cases requiring manual attention

Our software is currently only able to consider exact geometry for configurations with a single connection. This is why our results are reported as being correct for combination types for configurations with two SCC's (such as combination types 2/1, 3/3, and 5/1).

When a configuration consists of more than two SCC's, then a different algorithm is used to find models. The possible angles of a connection is divided up into a number of angles. If two configurations for neighboring angles are realizable, then the algorithm assumes that any configuration for angles between the two angles, are realizable, and thus belong to the same model. This assumption can fail by both allowing too many configurations, and too few. It is when this assumtion fails, that configurations have to be handled manually. We attempt to provide intuition for these failures, and how they are detected, in the two sections below.

### When the assumption allows too much

Consider the exagerated example below where a yellow brick is connected to a red brick at two "neighboring angles" (This example is for illustrative purposes; The actual difference between angles is much, much, smaller). The algorithm will incorrectly assume that the configuration is realizable if the yellow brick is connected at any angle between the two angles shown.

The algorithm detects cases like this by repeating the construction of configurations for bricks that are slightly larger. Informally, bricks are enlarged by an amount that is greater than the maximal difference in position for two neighboring angles. This ensures that if this case arises, then at least one of the configurations for the neighboring angles is not be realizable for the enlarged bricks. The models found for the normal sized and enlarged bricks will now differ, and the program will report the case for manual verification.

### When the assumption allows too little

Consider now the opposite case where two neighboring angles do not result in realizable ocnfigurations as illustrated in the figura below. The algorithm will not detect the realizable configurations with angles between the two angles shown.

The algorithm detects cases like this by repeating the construction of configurations for bricks that are slightly smaller. This ensures that if this case arises, then at least one of the configurations for the neighboring angles is realizable for the smaller bricks. The models found for the normal sized and smaller bricks will now differ, and the program will report the case for manual verification.

## Cases requiring manual attention for configurations of size 4

In this section we present all the cases which require manual attention. Use the table below for quick navigation. The cases which result in new models are **highlighted**.

#1 | #2 | #3 | #4 |
#5 | #6 | #7 | #8 | #9 | #10 | #11 |

#12 | #13 | #14 | #15 | #16 | #17 | #18 | #19 | #20 | #21 | #22 |

#23 | #24 | #25 | #26 | #27 | #28 |
#29 | #30 | #31 |
#32 | #33 |

### Case #1

Identifier | 0_0_0_0_cc1082724547_angles_0_0_0 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1082724547.mpd |

Technical data | This configuration represents M-island 1/2. There are 1 L-islands in this M-island |

New model identified | No |

This configuration is rectilinear. Since a model can, by definition, not contain a rectilinear configuration, this configuration does not belong to a model. Now why would the software be confused by a configuration like this which is obviously not a model? The answer is that Case #2 was wrongfully disconnected from the set of configurations that includes this one.

### Case #2

Identifier | 0_0_0_0_cc1082724547_angles_370_-203_-10000 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1082724547.mpd |

Technical data | This configuration represents M-island 2/2. There are 0 L-islands in this M-island |

New model identified | No |

This configuration belongs to the same set of configurations as Case #1.

### Case #3

Identifier | 0_0_0_0_cc1086860483_angles_24_-105_-7562 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1086860483.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from a larger model.

### Case #4

Identifier | 0_0_0_0_cc1095315619_angles_136_536_-9917 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1095315619.mpd |

Technical data | This configuration represents M-island 1/5. There are 5 L-islands in this M-island |

New model identified | Yes |

This configuration belongs to the same model as the 6 other reported configurations of Case #5, Case #6, Case #7, Case #8, Case #9, and Case #10.

### Case #5

Identifier | 0_0_0_0_cc1095315619_angles_169_526_8953 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1095315619.mpd |

Technical data | This configuration represents M-island 2/5. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #4.

### Case #6

Identifier | 0_0_0_0_cc1095315619_angles_175_520_9268 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1095315619.mpd |

Technical data | This configuration represents M-island 3/5. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #4.

### Case #7

Identifier | 0_0_0_0_cc1095315619_angles_179_517_9502 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1095315619.mpd |

Technical data | This configuration represents M-island 4/5. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #4.

### Case #8

Identifier | 0_0_0_0_cc1095315619_angles_185_514_9882 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1095315619.mpd |

Technical data | This configuration represents M-island 5/5. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #4.

### Case #9

Identifier | 0_0_0_0_cc1095315619_angles_172_532_9530 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1095315619.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #4.

### Case #10

Identifier | 0_0_0_0_cc1095315619_angles_178_529_9920 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1095315619.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #4.

### Case #11

Identifier | 0_0_0_0_cc1111569523_angles_-370_136_9640 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | This configuration represents M-island 1/6. There are 6 L-islands in this M-island |

New model identified | Yes |

This configuration belongs to the same model as the 8 other reported configurations of Case #12, Case #13, Case #14, Case #15, Case #16, Case #17, Case #18, and Case #19.

### Case #12

Identifier | 0_0_0_0_cc1111569523_angles_-357_176_-9320 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | This configuration represents M-island 2/6. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #11.

### Case #13

Identifier | 0_0_0_0_cc1111569523_angles_-356_178_-9440 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | This configuration represents M-island 3/6. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #11.

### Case #14

Identifier | 0_0_0_0_cc1111569523_angles_-355_180_-9552 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | This configuration represents M-island 4/6. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #11.

### Case #15

Identifier | 0_0_0_0_cc1111569523_angles_-354_183_-9745 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | This configuration represents M-island 5/6. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #11.

### Case #16

Identifier | 0_0_0_0_cc1111569523_angles_-353_186_-9934 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | This configuration represents M-island 6/6. There are 0 L-islands in this M-island |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #11.

### Case #17

Identifier | 0_0_0_0_cc1111569523_angles_-368_168_-9291 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #11.

### Case #18

Identifier | 0_0_0_0_cc1111569523_angles_-365_174_-9652 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #11.

### Case #19

Identifier | 0_0_0_0_cc1111569523_angles_-364_177_-9845 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1111569523.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from the model of Case #11.

### Case #20

Identifier | 0_0_0_0_cc1107767475_angles_-18_-157_-7453 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1107767475.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from a larger model similarly to Case #3.

### Case #21

Identifier | 0_0_0_0_cc1107767475_angles_-17_-158_-7433 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1107767475.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from a larger model similarly to Case #3.

### Case #22

Identifier | 0_0_0_0_cc1351161027_angles_0_0_0 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1351161027.mpd |

Technical data | This configuration represents M-island 1/2. There are 1 L-islands in this M-island |

New model identified | No |

This configuration is rectilinear similarly to Case #1.

### Case #23

Identifier | 0_0_0_0_cc1351161027_angles_370_-203_-10000 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1351161027.mpd |

Technical data | This configuration represents M-island 2/2. There are 0 L-islands in this M-island |

New model identified | No |

This configuration belongs to the same set of configurations as the rectilinear configuration of Case #22.

### Case #24

Identifier | 0_0_0_0_cc1355356371_angles_146_-112_-935 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc1355356371.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration can not be constructed using real bricks.

### Case #25

Identifier | 0_0_0_0_cc18283508915_angles_-149_-157_-1308 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc18283508915.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration is incorrectly disconnected from a larger model similarly to Case #3.

### Case #26

Identifier | 0_0_0_0_cc18535224531_angles_0_0_0 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc18535224531.mpd |

Technical data | This configuration represents M-island 1/2. There are 1 L-islands in this M-island |

New model identified | No |

This configuration is rectilinear similarly to Case #1.

### Case #27

Identifier | 0_0_0_0_cc18535224531_angles_370_-203_-10000 |

Download 3D model | size4_sccs4_sccsizes_1_1_1_1_sccindices_0_0_0_0_cc18535224531.mpd |

Technical data | This configuration represents M-island 2/2. There are 0 L-islands in this M-island |

New model identified | No |

This configuration belongs to the same set of configurations as the rectilinear configuration of Case #26.

### Case #28

Identifier | 12_0_0_cc29896882_angles_-32768_-811 |

Download 3D model | size4_sccs3_sccsizes_2_1_1_sccindices_12_0_0_cc29896882.mpd |

Technical data | This configuration represents M-island 1/1. There are 2 L-islands in this M-island |

New model identified | Yes |

This configuration can be built using real LEGO bricks and the model should be counted.

### Case #29

Identifier | 13_0_0_cc29896882_angles_28536_2086 |

Download 3D model | size4_sccs3_sccsizes_2_1_1_sccindices_13_0_0_cc29896882.mpd |

Technical data | This configuration represents M-island 1/1. There are 2 L-islands in this M-island |

New model identified | No |

After testing with real LEGO bricks, it is determined that this configuration does not belongs to a model because the model would contain a rectilinear configuration.

### Case #30

Identifier | 15_0_0_cc25769122_angles_32091_1063 |

Download 3D model | size4_sccs3_sccsizes_2_1_1_sccindices_15_0_0_cc25769122.mpd |

Technical data | This configuration represents M-island 1/1. There are 2 L-islands in this M-island |

New model identified | No |

After testing with real LEGO bricks, it is determined that this configuration does not belongs to a model because the model would contain a rectilinear configuration. This configuration is a mirror of Case #29.

### Case #31

Identifier | 16_0_0_cc25769122_angles_32091_1063 |

Download 3D model | size4_sccs3_sccsizes_2_1_1_sccindices_16_0_0_cc25769122.mpd |

Technical data | This configuration represents M-island 1/1. There are 2 L-islands in this M-island |

New model identified | Yes |

This configuration can be built using real LEGO bricks and the model should be counted. This configuration is a mirror of Case #28.

### Case #32

Identifier | 17_0_0_cc4730946_angles_-2719_3708 |

Download 3D model | size4_sccs3_sccsizes_2_1_1_sccindices_17_0_0_cc4730946.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration does not belongs to a model because the model would contain a rectilinear configuration.

### Case #33

Identifier | 19_0_0_cc8991826_angles_2719_-3708 |

Download 3D model | size4_sccs3_sccsizes_2_1_1_sccindices_19_0_0_cc8991826.mpd |

Technical data | S islands without M-islands inside! |

New model identified | No |

This configuration does not belongs to a model because the model would contain a rectilinear configuration. This configuration is a mirror of Case #32.

## Credits

The 3D-models are powered by brigl by Nicola MSX Lugato.

## Contact

Lasse Deleuran can be contacted at e-mail lassedeleuran@gmail.com. For any issues with the code, please use the issue list on GitHub.