# .font: font.text_2
2022-08-22 15:06 nesdori  
# .font: font.text_1
the inhabitants of a nest of 7 fireflies had a problem; there was a fine picnic area full of yummies but they had to move straight to the left to reach it. the entire nest wanted to go at the same time but they couldn't do it; if they used fnf, only even number of flies could go simultaneously. and they of course can't use swarm-f8 extensions because there's not enough flies. one day the grand fly of the nest was having a honeymilk bath and he was playing with 7 rubber ducks, moving and rotating them in ffly style. suddenly he realized something, yelled "flyreka!", got out of the bath and immediately called out the other flies and told them: "now i know how we all can go out to the picnic grounds, let's go!" the flies were eager to try a new formation but while they were flying one of the younger flies got concerned: "how are we going to get back to the nest? do we have to invent another formation of 7 fflies going to the right "on the fly"? he asked. the grand fly smiled and calmly stated: don't you worry; i have a plan! :)  
  
some technical info:  
at first glance it looks like that the formation is powered by a fnf at the front and something resembling a fnf at the back. but it's actually vice versa. the front fnf is a transforming fnf, one the flies gets replaced by another fly once per loop while the other is always the same fly. the real pure fnf is at the back. it's always surrounded by other flies and still it doesn't see other flies (doesn't collide with them). so strictly technically speaking this formation is 5 flies freeriding a fnf and also these 5 flies form another transforming fnf :)  
  
the short loop is 5 cycles and the long loop is 20 cycles (all four extra flies spend 5 cycles being part of the transforming fnf in turns). the working title for this formation was "caterpillar" because there are front and back "wheels" and a track between them. other name suggestions are welcome :)  
  
inspired by  dustin 's brother's computer analysis, this formation was found by exhaustive computer search. this is the only dff consisting of 7 fflies. i'm not looking for dfs:s (at least yet).  
the formations of 7+ flies are already so big that i think that fully independent formations not freeriding any of the already known formations is becoming a rarity. they need the help of smaller dff:s both keep the formation together and gain momentum to move. exception to this is swarm-like formations.  
  
the story will continue.. maybe bflies got jealous of fflies' new capabilities? ;)

# .font: font.text_2
2022-08-22 15:59 dustin  
# .font: font.text_1
great! just wait for  Arno  to see this :d :d

# .font: font.text_2
2022-08-22 17:23 shredder  
# .font: font.text_1
WOW! COOL :)

# .font: font.text_2
2022-08-22 19:59 Arno  
# .font: font.text_1
oh this is amazing! :-D :-D  
  
i'm also curious what we know currently from the computer research, either by  nesdori  or  dustin 's brother... for example, have we yet discovered all 4-, 5- and 6-fly dff's? :-D

# .font: font.text_2
2022-08-22 21:41 dustin  
# .font: font.text_1
 Arno , about the 4-fly dffs i'm almost certain that we know them all. the engine search was complete and the engine has found all known dff plus the hug-dfs.   
  
a complete 5-fly search has just finished! it found 9/11 known dff but it missed the two bnbnb variants. this was most likely because of the "interaction validation" which my brother implemented in the search.  
  
this interaction validation is there to avoid that the engine misinterprets two small dffs for a big one. for example, two close but independant fnf would be misinterpreted to be a 4-fly dff without the interaction validation.   
  
as the bnbnb has a kind of non-standard interaction scheme, it probably did not pass the validation although it should have. fix is in work :)  
  
even based on the results so far, it seems very likely that we also know all 5-fly dffs.   
  
for a better overview, these are the 5-fly dffs found be the engine:  
| fright-3+2bf  
| fright-4+1bf  
| fright-5  
| lifted f-vortex+2bf  
| the 4 elements+ff  
| sinking-f5  
| cassiopeia  
| glider-f5  
| glider-b5  
  
and an overview of the dfs:  
| fright- and "bleft" cage (see funny flies 18)  
| smallest 5-fly versions of the real conveyor belt (see funny flies 8 and some episodes yet to come!)  
| and another funny dfs coming soon :)  
  
 nesdori , what have you searched so far? have you actually brute forced all 7-ffly formations so you can be sure that this cave shows the only 7-ffly dff? my brother said that checking all 7-fly formations would take too much time and diskspace to be realistic, but perhaps it was possible with the restriction of using only fflys/ only bflys? that's all very interesting! :D

# .font: font.text_2
2022-08-22 22:34 Arno  
# .font: font.text_1
thanks  dustin ; i'm curious! :-D

# .font: font.text_2
2022-08-23 00:11 dustin  
# .font: font.text_1
 Arno , you're welcome! it's all very exciting! :d  
  
 nesdori : now i also examined your caterpillar (btw i like the name a lot!) a bit. in addition to your notes, i also like how the four flies rotate inside the formation. for example, the second-rightmost fly of your map will now move left five times in a row to take the lead of the formation! :D  
  
i also like your story much! and i have a strong idea what the boss firefly's plan is to get back to the right after the picnic. it's almost the only possibility, given all your information in your comment... :d

# .font: font.text_2
2022-08-23 00:25 nesdori  
# .font: font.text_1
 Arno  and  dustin , i also already checked all 2, 3, 4, 5 and 6-fly formations and some 7-formations. indeed we already know all possible formations with 5 or less flies. i have found new 6- and 7-fly formations not yet revealed. i'll double-check them and reveal them later either in showroom cave just introducing them or in dedicated cave with some kind of story.  
  
 dustin , it sounds like your brother's program does heavy hashing of cave states because it uses so much memory. it can be used to cut out search space but it probably isn't worth it. i only hash cave states per starting formation to detect when the state gets repeated. the memory usage is so low that i think that all data fits in 48kb L1 cache. i use a lot of bitmaps and bitwise operations to optimize memory usage and speed (i have assembly programming background :) each object takes only 4 bits, 2 bits for object type (empty, ffly, bfly) and 2 bits for direction. i also had "already scanned bit" first but then i realized i can get rid of it :) "the interaction validation" is indeed a nice coding problem. but again, it was quite simple to do with collision bitmaps :)  
  
checking all 5-fly formations took under a minute, checking all 6-fly formations took few hours. i haven't yet checked all 7-formations but it probably takes 1-2 days. could be faster with modern cpu:s, my cpu is already quite old and i used only one thread. also i think i can optimize the speed and the search logic even more but i'll think about it more when i reach 9- and 10-fly formations :)  
  
but anyway, it's nice to have two separate programs looking for formations; then it's less likely than we miss something because of a an evil bug :)

# .font: font.text_2
2022-08-23 00:29 dustin  
# .font: font.text_1
btw  darkstoorm 's above cave (dsm dash 166) shows one of the 5-fly conveyor belt dfs i mentioned :)

# .font: font.text_2
2022-08-23 01:07 dustin  
# .font: font.text_1
 nesdori , (and  Arno ), my brother also just fixed his program and now he also found all 11/11 5-fly formations (not in under a minute, though, it took an hour or so).   
  
now he started with 6 flies and although it's still running it already found all 6 known ones plus a new one as well! it looks truly fascinating and well, let's say compared with the new one, the sinking-f6 dff (9 frames to move 1 down) is already moving with lightning speed :d isn't it fun that we're the only two people in the world who know yet what i'm talking about? :d :d (ok, 3 people including my bro, but he isn't really interested in bd, just in programming :d)  
  
i'll just show your technical notes to my brother. i do kind of understand some of it, but it's more for him than for me, i suppose :d

# .font: font.text_2
2022-08-23 01:34 nesdori  
# .font: font.text_1
 dustin , formation finding co-operation between bd enthusiast who knows just a little about coding and coding enthusiast who knows nothing about bd must be a mind blowing experience for both :)

# .font: font.text_2
2022-08-23 11:12 nesdori  
# .font: font.text_1
 shredder , congrats for finding 7-ffly formation moving to the right! :D not sure if that formation would pass "the interaction validation" though.. ;)

# .font: font.text_2
2022-08-23 11:26 shredder  
# .font: font.text_1
 nesdori , i did a FSC :( i'll try to find intended solution later, after work.

# .font: font.text_2
2022-08-23 11:35 nesdori  
# .font: font.text_1
 shredder , i think you didn't get my joke and you actually did the intended solution. or else i'm not aware of the short cut you are talking about :)

# .font: font.text_2
2022-08-23 11:51 shredder  
# .font: font.text_1
 nesdori  yes indeed. I write first, then think ;)

# .font: font.text_2
2022-08-23 14:39 dustin  
# .font: font.text_1
i s'pose they'd even have problems to pass the "identic speed" validation :d

# .font: font.text_2
2022-08-23 21:12 nesdori  
# .font: font.text_1
 dustin , so how's your 6-fly dff search going?  
  
here are my results:  
  
0f+6b: 2  
1f+5b: 1  
2f+4b: 3  
3f+3b: 1  
4f+2b: 1  
5f+1b: 1  
6f+0b: 1  
  
so my program found total of 10 6-fly dff:s. it's interesting to see if there are any differences :)

# .font: font.text_2
2022-08-23 22:54 dustin  
# .font: font.text_1
 nesdori , does this include the 6 known ones? namely:  
| fright-3 + 3bf (3ff, 3bf)  
| fright-4 + 2bf (4ff, 2bf)  
| fright-5 + 1bf (5ff, 1bf)  
| lifted f-vortex + 3bf (2ff, 4bf)  
| sinking-f6 (6ff, 0bf)  
| the 6 elements (0ff, 6bf)  
  
so far, my brother's computer found these six plus a new one with 2ff, 4bf, short loop length is a square number and moving direction is upwards. i hope that's enough to identify it :d  
  
he had some extra criteria for when a formation should not be examined because it's too unlikely to be a dff. these criteria were oriented at the known dffs, but it looks like the three missing dffs are too different from the known ones and don't fulfill thecriteria.  
  
currently my brother isn't at home. no new attempts before weekend he said :( :d  
  
but actually the one new dff his engine found is already so fascinating to me that i'm happy with it for the moment :d

# .font: font.text_2
2022-08-23 22:58 dustin  
# .font: font.text_1
ah, and also two 6-fly dfs were found!

# .font: font.text_2
2022-08-23 23:17 nesdori  
# .font: font.text_1
 dustin , yes, 10 is the complete number of dff:s including the already known formations.  
  
and yes, i know what formation you are referring to. it's crazy! :D  
  
interesting, the new 2f+4b formation you are missing is the most compact and standard looking of all 2f+4b formations so i don't see a reason why your criteria would reject it.

# .font: font.text_2
2022-08-24 00:11 nesdori  
# .font: font.text_1
 dustin , actually, both 2f+4b formations in addition to the "extreme slow" are 3bf freeriding lifted f-vortex. just completely different because the other one needs all 3bf to function. so you found the formation which  Arno  explains in his dff article and demoes in " Arno  1007 flying kitten" and not the other one?

# .font: font.text_2
2022-08-24 00:13 nesdori  
# .font: font.text_1
 dustin , kitten = kites :D :D

# .font: font.text_2
2022-08-24 01:29 dustin  
# .font: font.text_1
 nesdori , oh, good question! i just spotted the lifted f-vortex and saw three bflies around it, so i didn't check it further. wait a moment...

# .font: font.text_2
2022-08-24 02:06 dustin  
# .font: font.text_1
yes, it's actually the one we already know.

# .font: font.text_2
2022-08-24 12:35 nesdori  
# .font: font.text_1
here's a detailed list:  
  
0f+6b: 2  
- the 6 elements  
- bob & bobette & babette + 1b (new!)  
  
1f+5b: 1  
- lifted b-vortex + 3b (new!)  
  
2f+4b: 3  
- lifted f-vortex + 3b (the "flying kites" variation)  
- lifted f-vortex + 3b (a variation not yet discovered, new!)  
- unique, extremely slow and funny (new!)  
  
3f+3b: 1  
fright-3 + 3b  
  
4f+2b: 1  
fright-4 + 2b  
  
5f+1b: 1  
fright-5 + 1b  
  
6f+0b: 1  
sinking-f6   
  
 dustin , as you can see, your program found the most interesting new formation but not the rest which are known formations + free riders, and b+b+b + b actually is a free rider riding free riders :D  
maybe there's still something wrong with your interaction validation check; seems that it finds some free riders but not all?  
  
i guess it's time to publish the new findings.  dustin , "the extremely slow" was the first new dff found by your program so i'll give you the honor to introduce it :) maybe you have some ideas what to build around it? :) i'll put the rest in a single demo cave; they are not that interesting and i don't have cool ideas for them.

# .font: font.text_2
2022-08-24 16:18 DarkStoorM  
# .font: font.text_1
I think I wanna jump on the research train too :D I could make use of  the cave scanning routine from my BD clone and have some fun :D   
  
 nesdori , what are the actual steps your program takes? Let's assume we are looking for stagnant formation. Is it purely based on state comparison between the initial... "snapshot" and the state in the current frame? I don't know how to call it :D  
  
I assume it would take for example 6 fireflies and bruteforce fly placement and their directions one-by-one, checking if they repeat the cycle after a certain amount of frames. Now I'm interested to do some experiments :D

# .font: font.text_2
2022-08-24 16:46 shredder  
# .font: font.text_1
Fred ;)

# .font: font.text_2
2022-08-24 18:09 dustin  
# .font: font.text_1
 nesdori : thx for the honour! :d before uploading the "unique, slow and cool" 6fly formation, i still have some 5- and 6-fly dfs to show for the dff, i don't have a cool story (yet?) but some technical analysis in connection to this, i'm also especially interested to see the lifted f/b-vortex + 3bf! maybe these 3bf form a similar formation like in the dff? let's see :d  
and i have two technical questions on your search:  
\ how much space do you give the (starting) formations your engine examines?  
\ how many frames do you analyze each formation until a negative result is given?  
  
 darkstoorm , welcome on the train! it's great fun! :d  
  
 shredder , great run! :d

# .font: font.text_2
2022-08-24 18:20 dustin  
# .font: font.text_1
or perhaps it's better to publish the dff before all the dfs, given how much we already talked about it. otherwise these discussions would be cryptic for everyone else :d i'll think of a worthy cave around the dff tomorrow. release tomorrow or friday :)

# .font: font.text_2
2022-08-24 19:02 shredder  
# .font: font.text_1
Thx  dustin  :D btw. I REALy Like idea WITH the nest - forced 7 ffs slime BLOCK.

# .font: font.text_2
2022-08-24 20:25 dustin  
# .font: font.text_1
i agree  shredder  :)

# .font: font.text_2
2022-08-24 21:46 Arno  
# .font: font.text_1
great work! :-D  
  
fright-4 and -3 are indeed what i expected for the way to the right, given the story that one of the younger flies (probably not yet familiar with the "classic" dff's) got worried about the way back.  
  
i'm curious to see the new dff/dfs's. :-)

# .font: font.text_2
2022-08-25 10:44 nesdori  
# .font: font.text_1
 shredder , no fsc:s, your solution is the intended and also nicely executed as well :)  
  
 darkstoorm , welcome aboard! triple-checking things instead of double checking is even more safe :)  
  
basically dfs/dff checking goes like you said; the initial state gets repeated somewhere else on the field. but that's not all; you also have to check that each group of flies is somehow linked to all other groups. otherwise two separate vortexes is classified as a dfs or two separate fnf:s classified as a 4-fly dff. this is what we have called "interaction validation check" in conversations with  dustin . it's not a trivial thing to do and is a good coding exercise :)  
  
 dustin ,  
  
1) i used 4x4 initial position window for 4 and less flies, and 5x5 for 5 ja 6 flies. i thought that 5x5 will be sufficient for 6 flies because all states of a formation don't have to fit in it; the formation will be caught if any of the states will fit. but the new slow formation scared me a little bit; out of its many short loop states, just 7 fit in 5x5 box. after that i wondered could there really be a 6-fly dff that is so stretched that all of its states are bigger than 5x5. two fflies accompanied with a lot of bflies tend to have this ability; "the flying kites" formation is also quite scretched. that's why also ran 6x6 check for 2f+4b but it didn't find any ultra scretched new formations missed by the first run, phew! :) but from now on, i'll check with special care any initial formations with 2 fflies and a lot of bflies.  
  
2) the formation analysis won't stop after a certain amount of frames but it will stop when the state is repeated anywhere or if any of the flies moves outside the 16x16 field. in theory, it's possible that there's a dff that moves so much during the short loop that it hits the border before repeating a state although it's very unlikely. but in that case there's a double check; the initial formation is placed on the opposite corner instead on center and checked again. if still no repeats, the program will conclude that it's dealing with two or more different dff:s going into different directions (or with different speed) and not with a new formation that takes a gigantic leap during the short loop :)  
  
there's a specific reason why the field is 16x16. like i said before, any object in my engine takes 4 bits. 16*4 = 64 so i can store the data of the entire horizontal row in a single 64 bit variable and entire field in an array of 16 variables. this has huge advantages when dealing with things like hashes and state comparisons. the disadvantage is that dealing with bitmaps may be complicated and the code literally is cryptic. but the complexity hides a beautiful simpleness :)  
  
 dustin , so what's your area size for starting positions and do you use a fixed size cave field like me or perhaps a dynamic field which expands when the flies move apart. i thought about a dynamic field when i did my first engine but decided to do it in a simple way first.  
  
i'm actually currently rewriting my engine to be more efficient with 7+ fly formations. the first one will still function as a brute force reference engine :)

# .font: font.text_2
2022-08-25 12:47 dustin  
# .font: font.text_1
 nesdori : as far as i understood it, my brother used the following search algorithm:  
  
starting field: 5x5 but with top-middle position always occupied and the two squares to its left never occupied. the top-middle fly always has coordinates (0,0).  
  
in general, after each frame the coordinate system is rearranged such that the leftmost fly out of the topmost flies has (0,0).  
  
stop if the (exact) formation is repeated or after 48 frames.  
  
no cache/memory.  
  
some more conditions when a start position is skipped, for example the "isolation check": if a fly has no horizontal, vertical or diagonal contact to another fly, the start position is not examined.  
  
i don't know exactly how he programmed the interaction validation, but my suggestion was the following: x is related to y if x interacts with y during the short loop, or if x takes y's position after a short loop. interaction validation positive if the resulting graph is (completely) connected.

# .font: font.text_2
2022-08-25 16:15 nesdori  
# .font: font.text_1
 dustin , interesting!  
  
i have only one condition for fly positions: there must be at least one fly on the top row and on the leftmost column. otherwise the same position will be checked multiple times just shifted down and/or right. this assumption is perfectly safe. other heuristics is not used so i have many very isolated flies checked. but i did that on purpose. the dumb brute force search is so fast up to 6 flies that i wanted to be sure that all possible candidates are checked. it's surprisingly difficult to determine which heuristics is guaranteed not to skip any real dff:s. but i also realize that at some point (with 8+ flies) the search is so slow that some kind of heuristics must be used even if there's a risk that some formations are not found.  
  
even the the simple isolated fly check sounds uncertain. there might be a position where there are two flies that both are isolated at times and the rest of flies move between them colliding with them but on each state one them is isolated. so every state of the formation will be skipped in search. an exaggerated example but in theory something like might be possible :)

# .font: font.text_2
2022-08-25 19:04 DarkStoorM  
# .font: font.text_1
This is actually difficult! It will take a while to figure out :D

# .font: font.text_2
2022-08-25 20:06 dustin  
# .font: font.text_1
 nesdori , well actually your example does not look so exaggerated anymore if we look at our new dff. it comes very close to "all frames have an isolated fly". we were just lucky that two fireflies are needed to make the dff work so none of them is ever isolated :d

# .font: font.text_2
2022-08-26 13:51 DarkStoorM  
# .font: font.text_1
So I tried to bruteforce-search for DFS, the code works for already existing ones, I had to make sure they pass the test, but no luck with random unique formation in a box of 5x3 with 7 flies running for 7 hours. I used this size to target  Arno 's DFS to make sure it can detect a formation in random generation. Chrome has a limit of 4ms interval per render, so it's too slow and I can't use my game for this test, so the search continues :D  
  
With 4ms per scan and max of 48 frames per formation, it gives me one check per approx. 192ms, so this is way too slow for the test. My cave scan alone takes 0.01ms per scan (still 0.5ms per formation), but the game is not currently suitable for the extraction. Time for a separate program :D  
  
 nesdori , what speed of formations per second did you achieve? I need to know what to expect, because I can't seem to calculate how many possible combinations of flies are in certain square with known number of flies - just in case I make a mistake and exhaust the max possible amount of combinations without knowing to not waste time :D  
  
If, for example, we have a square of 3x3 and 3 flies, the actual number of unique combinations is different than the following, right?  
- A * B * directions * flies_amount  
  
That does not seem right, because in a box of 5x3 with 7 flies this gives me 420 possible fly combinations, but the generation keeps going :D

# .font: font.text_2
2022-08-26 14:56 nesdori  
# .font: font.text_1
 darkstoorm , are you using a browser and javascript to check positions? :O that's hardcore! :D  
  
your math is slightly wrong :)  
  
if you have 7 fflies, there's 5531 ways to position them into 5x3 box. then each fly can have 4 directions so total number of direction combinations is 4 ** 7 = 16384.  
  
so in total, there's 5531 * 16384 = 90619904 possible initial formations for 7 fflies (with a direction) in a 5x3 box.  
  
but.. if some of the flies are bflies, the number of formations is even higher. for example, if there are 4 fflies and 3 bflies, there is 35 different ways to arrange them into any of the general 7 fly template formation. so in that case, the total number of initial formations is:  
  
5531 * 35 * 16384 = 3171696640  
  
my program's checking speed varies based on that how easy the status of formations generally are to determine. some ffly+bfly combos are faster to check because the formations on average settle more quickly. but on average my program can check 2-3 millions formations / sec. i have an oldie i7-4790 cpu so with modern cpu:s breaking 10M / sec would be easy. but this is with highly optimized data structures and code. but still can be improved by adding heuristics to quickly discard some initial formations and to quit the formation analysis if it's clear that the formation never would repeat itself. i'm actually working on these heuristics now because even with a speed of few million formations / sec, checking 7+ fly formations takes annoyingly long :)

# .font: font.text_2
2022-08-26 15:13 DarkStoorM  
# .font: font.text_1
Thanks  nesdori ! I was so confused, because I didn't know how to calculate this :D  
  
and yes, I used Javascript as my BD clone is browser based, so I tried to use something I already had working, but that is more than one million times slower :) but now that I know the numbers I know what to aim for :D  
  
This will be a great experience!

# .font: font.text_2
2022-08-26 16:05 nesdori  
# .font: font.text_1
 darkstoorm , a little correction so you are not too confused: 5531 is the number of unique 7 fly formations without directions where those formations which are checked multiple times are removed. if the top row and/or the leftmost column are empty, the formation can be trimmed and moved to the top left corner. that formation already is on the check list so the double can be removed. if this check is not done, there is a total of 6435 formations.

# .font: font.text_2
2022-08-28 02:21 DarkStoorM  
# .font: font.text_1
So I decided to go with C#, I assumed it will be faster :D   
It partially seems to work with DFS :D <a href="https://i.imgur.com/WsYwfKZ.gif" target="external">https://i.imgur.com/WsYwfKZ.gif</a>  
This is a console output from frame by frame test (the frame flash is just a same formation regeneration)  
  
So far I just tried to run the same formation to check the speeds, and with the interaction validation check I get twice as low speed, because it's an additional 8-directions check, if I understood correctly how it should work, so with this I can run 1,500,000 loops per second or 3-4 million without interaction validation check.  
  
I had to cram everything into one bitfield enum, with a little help of logic operators I went from 200k to 3 million per sec :D This is actually fun, gonna try actually fully getting it to work rather than trying to optimize it :D

# .font: font.text_2
2022-08-28 16:47 nesdori  
# .font: font.text_1
 darkstoorm , so you are checking strictly 5x3 and if any fly moves out of the box you can just quit the analysis? that should be blazing fast :)  
  
you really shouldn't worry about interaction validation in the first phase of formation search. because there are so few potential dff/dfs:s compared to the total search space you can do the validation separately when a potential dff/dfs is found. then it really doesn't matter how much time it takes because the checks are done so rarely and 99.99% of the total time is spent on basic search anyway :)

# .font: font.text_2
2022-08-29 11:47 DarkStoorM  
# .font: font.text_1
 nesdori , I just read your comment and I facepalmed :D That's a very important piece of information I missed. It's still not going to be as fast as programs at assembly level, but slowly getting it to work :D I was too focused on making it as fast as possible and I made one big of a mess :D  
  
I'm also curious, can your program catch formations like in  dustin 's recent "three busy bees", where a bfly is disconnected from the formation for 20 frames?  
  
There may potentially be more formations like that! :D

# .font: font.text_2
2022-08-29 12:12 nesdori  
# .font: font.text_1
 darkstoorm , yes my program found it (check previous comments about it :) and also found 3 dff:s which  dustin 's program missed for some reason. 6-fly search was clean and pure brute force search which tested all possible formations. so it didn't matter how far the flies were at any time. originally i made 5x5 initial formation area search but if there's formation where all its phases are so stretched that any of them don't fit in 5x5 box then the formation is missed. for that reason i also made another 6x6 check for all fly combinations with heuristics to speed up the checks. it didn't find new formations missed by 5x5 so now i'm even more confident that all 6-fly formations have been found. now i'm doing 7-fly formation runs and i already know that there are a lot of new formations. 15 new dff:s have already been found and there are still many fly combinations that i haven't checked at all :)