The taps are strictly monadic!   H & C but no control on the mix.
I suppose A. is not fine-tuned for working on the full set.

Cheers,

Mike


On 15/03/2021 15:04, Skip Cave wrote:
Comparing permutation verbs:


perm

3 : 0

z=. i.1 0

for. i.y do. z=. ,/ (0 ,. 1 + z) {"2 1 \:"1 = i. 1 + {: $z end.

:

,/ ({~ perm@#)"1 x comb y

)


tap

A.&i.~ !


tap1

i.@! A. i.


timespacex 'perm 10'

0.125342 6.03984e8

timespacex 'tap 10'

0.845453 1.11569e9

timespacex 'tap1 10'

0.847798 1.11569e9


Dyadic use:


    timespacex '5 perm 15'
0.0318871 2.00029e7
    timespacex '5 tap 10'
|index error: tap
|   5     tap 10
    timespacex '5 tap1 10'
|index error: tap1
|   5     tap1 10


So 'perm', the explicit recursive version of a permutation-generating verb,
is considerably more efficient, and it is dyadic. It also handles
permutation subsets.

Skip Cave
Cave Consulting LLC


On Mon, Mar 15, 2021 at 8:08 AM 'Mike Day' via Chat <[email protected]>
wrote:

Sorry,  I forgot to spell it out.
tap achieves the same as perm,  though I think perm is an explicit
recursive or looping
function.

tap is probably one of Roger’s whizzbangs;  tap is an acronym for
something like Table all
permutations.

The version I happened to use yesterday is
     i.@! A. i.
but I love the more compact
     A.&i.~!

In either case, my expression involving tap could just as well be
   1,. 2 + perm 7
which generates 5040 permutations of 2,3,...8 and pretends 1 in “fixed”
position.

Cheers,

Mike

Sent from my iPad

On 15 Mar 2021, at 02:35, Skip Cave <[email protected]> wrote:

Here is the J Programming thread about Rotational Duplicates:
http://jsoftware.com/pipermail/programming/2020-May/055839.html

Mike Day - What is the "tap"  verb in your equation?

  $s3=.+/"1[3,\"1|:n,2{.n=.|:1,.2+tap 7
5040 8


Skip Cave
Cave Consulting LLC


On Sun, Mar 14, 2021 at 8:01 PM Skip Cave <[email protected]>
wrote:
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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to