Mike, You are right. I forgot about rotational duplicates. I had a similar problem awhile back, and Roger showed us several ways to remove rotational duplicates. Here is one of Roger's verbs:
rdr=.3 :'~.(y i."_1<./"1 y)|."_1 y' NB. Remove rotational duplicates. $n=.>:perm 8 40320 8 $rdr n 5040 8 So there are only 5,040 unique vertex permutations. Skip Cave Cave Consulting LLC On Sun, Mar 14, 2021 at 6:55 PM 'Mike Day' via Chat <[email protected]> wrote: > As these are supposed to be regular polygons, shouldn’t you identify > 123...8 with > 234...81 etc, in which case there are !7 rather than !8 different > octagons. > > Also, we only need consider the minimum triplet sum in each figure, > since, by definition, all other triplet sums in that octagon are greater > or equal. > > So: > $s3=.+/"1[3,\"1|:n,2{.n=.|:1,.2+tap 7 > 5040 8 > > +/m=.*./"1[11<"1 s3. NB. 8 times smaller because of equivalence under > rotation... > 40 > > +/11<<./"1 s3. NB. same comparing minimum triplet-sums > 40 > > It is fairly straightforward to develop a constructive function to > generate polygons with n > sides for which all k-tuplets of consecutive corners sum to more than some > value. It’s a lot slower than using perm or tap for octagons, but would > be competitive for somewhat larger polygons. > > Since +/>: i. 8 = 36, the average triplet sum is 13.5 = 108%3 , we know > that there is no > such octagon with all triplet sums exceeding 13. > > Mike > > > Sent from my iPad > > > On 14 Mar 2021, at 22:00, Skip Cave <[email protected]> wrote: > > > > I found this problem on Quora. I had fun solving it in J. Are there more > > efficient ways? > > > > The first 8 natural numbers (1 to 8) are positioned on the vertices of an > > octagon. Is it possible to position the numbers such that the sum of any > 3 > > adjacent vertices is greater than 11? Greater than 13? > > > > Using the J programming language, brute force approach: > > > > Wikipedia: "J (programming language)" > > > > J primitives: NuVoc - J Wiki <https://code.jsoftware.com/wiki/NuVoc> > > > > Generate all permutations of the integers 1–8, & store them in n. Count > the > > permutations & display the count: > > > > $n=.|:>:perm 8 > > > > 8 40320 > > > > So n contains the 40,320 possible permutations of the integers 1–8, > > representing all the possible permutations of the numbered vertices of an > > octagon. > > > > Now sum consecutive sets of three integers from each set of 8 integers > with > > wraparound, which will create sets of 8 sums, and store the sums in s3. > > Count the sums & display the count: > > > > $s3=.+/"1[3,\"1|:n,2{.n > > > > 40320 8 > > > > So s3 has 40,320 sets of 8 sums, where each set of 8 sums represents the > 8 > > sums of 3 adjacent vertices on each unique octagon. > > > > Now mark all the octagons have all their 3 consecutive vertex sums > greater > > than 11, sum the marks, and list the sum: > > > > +/m=.*./"1[11<"1 s3 > > > > 320 > > > > So 320s of the 40,320 possible octagons have all their 3 consecutive > vertex > > sums greater than 11: > > > > Use the mark vector to extract & display the first & last few sets of > > octagon vertices whose 3 consecutive vertex sums are greater than 11: > > > > {m#|:n > > > > │1 4 7 2 5 6 3 8│1 4 7 2 6 5 3 8│1 5 6 2 4 7 3 8│1 5 6 2 7 3 4 8│1 5 6 2 > 7 > > 4 3 8│1 5 6 2 8 3 4 7│1 5 6 3 7 2 4 8│1 5 6 3 8 2 4 7│1 5 6 4 2 7 3 8│1 > 5 6 > > 4 7 2 3 8│…. > > > > …..│8 3 5 6 2 7 4 1│8 3 6 4 2 7 5 1│8 3 6 5 1 7 4 2│8 3 6 5 2 7 4 1│8 3 > 7 2 > > 4 6 5 1│8 3 7 4 2 6 5 1│8 4 2 7 3 5 6 1│8 4 2 7 3 6 5 1│8 4 3 7 2 5 6 > 1│8 4 > > 3 7 2 6 5 1│ > > > > How many octagons have all their 3 consecutive vertex sums greater than > 13? > > > > +/*./"1[13<"1 s3 > > > > 0 > > > > There are no octagons whose 3 consecutive vertex sums are all greater > than > > 13. > > > > How many octagons have all their 3 consecutive vertex sums greater than > 10? > > > > +/*./"1[10<"1 s3 > > > > 3456 > > > > So 3,456 octagons of the 40,320 possible octagons have all their 3 > > consecutive vertex sums greater than 10. > > > > Skip Cave > > Cave Consulting LLC > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
