It is IMO quirkiness in A. rather than a mathematical principle (I could be very wrong) for how it fills in missing items as leading items.
It would IMO be more intuitive for it to fill in missing items to the right rather than left. Basically that would result in "the first permutation that starts with y", though this behaviour is easier to engage intentionally. permN does not use any implied fillins. ----- Original Message ----- From: Raul Miller <[email protected]> To: Programming forum <[email protected]> Sent: Friday, May 6, 2016 1:43 AM Subject: Re: [Jprogramming] permutation and combination numbers (with repeat) Note that A. has a property which permN does not: each sequence of distinct nonnegative integers of a given length which contains a 0 has a different index. A. 1 0 1 A. 2 0 3 A. 0 2 2 A. 9 0 409113 permN 1 0 1 permN 2 0 1 permN 0 2 0 permN 9 0 1 FYI, -- Raul On Fri, May 6, 2016 at 12:59 AM, 'Pascal Jasmin' via Programming <[email protected]> wrote: > The similarity to A. is that > > A. 2 3 1 0 is relative to 0 1 2 3 > > A. 2 3 1 0 > 17 > 17 A. 0 1 2 3 > 2 3 1 0 > > > > so, > > permN 2 2 1 011 > > > will have reverse F > > > 11 F 0 1 2 2 NB. 0 1 2 2 is sorted version of original > 2 2 1 0 > 11 F 0 1 1 2 > 2 1 1 0 > > > > ----- Original Message ----- > From: Raul Miller <[email protected]> > To: Programming forum <[email protected]> > Sent: Thursday, May 5, 2016 9:44 PM > Subject: Re: [Jprogramming] permutation and combination numbers (with repeat) > > A. allows adding a constant to the vector, and it allows preceding the > vector with (,~ (-.~ i.@(>./))), and any suffix of that which does not > eliminate the original values of the vector. (And, where the vector > can be formed using either of these mechanisms, it also allows > dropping certain prefixes of the vector.) > > But when you introduce repetitions, it seems to me that you need to > distinguish between different repetitions of the same values. And, in > some cases you do make that distinction, but in other cases you do > not. So I am trying to understand what it is that is consistent about > your implementation here. > > For example, let's consider these: > > permN 2 2 1 0 > 11 > permN 2 1 1 0 > 11 > permN 2 1 0 0 > 11 > > What is it that's being sorted here? > > It does not seem that you are sorting the values: > > /: 2 2 1 0 > 3 2 0 1 > /: 2 1 1 0 > 3 1 2 0 > /: 2 1 0 0 > 2 3 1 0 > > You might be using downgrade? > \: 2 2 1 0 > 0 1 2 3 > \: 2 1 1 0 > 0 1 2 3 > \: 2 1 0 0 > 0 1 2 3 > > But, no, that does not hold for a different example: > > \: 0 0 1 0 > 2 0 1 3 > \: 0 1 0 1 > 1 3 0 2 > \: 1 0 1 1 > 0 2 3 1 > permN 0 0 1 0 > 1 > permN 0 1 0 1 > 1 > permN 1 0 1 1 > 1 > > Put differently, what does "relative to the sorted permutation (with > repetitions) list of the argument" mean? > > A. does not deal with sorted permutations with repetitions, so simply > referencing A. does not actually mean anything to me. > > A. 0 0 > |index error > > Thanks, > > -- > Raul > > On Thu, May 5, 2016 at 7:29 PM, 'Pascal Jasmin' via Programming > <[email protected]> wrote: >> Because its relative to the sorted permutation (with repetitions) list of >> the argument. A. does this as well. >> >> >> A. 1 0 >> 1 >> A. 0 2 1 >> 1 >> >> >> >> >> ----- Original Message ----- >> From: Raul Miller <[email protected]> >> To: Programming forum <[email protected]> >> Sent: Thursday, May 5, 2016 7:25 PM >> Subject: Re: [Jprogramming] permutation and combination numbers (with repeat) >> >> I am not understanding, still. So let's try a different example: >> >> Why are these equal? >> >> permN 0 0 1 0 >> 1 >> permN 0 1 0 1 >> 1 >> permN 1 0 1 1 >> 1 >> >> Thanks, >> >> -- >> Raul >> >> On Thu, May 5, 2016 at 6:20 PM, 'Pascal Jasmin' via Programming >> <[email protected]> wrote: >>> Its relative to the sorted order of the input >>> >>> rp1 =: (] (] <@; $:^:(1<#)@del1~)"1 0 ~.@]) >>> untreep =: (({.,"0 1 $:^:(1<L.)@}.)&>) >>> rperm6 =: (a: ;"1@(]#~ -.@e."1) ,&.:(<"1)@:untreep@:rp1) >>> >>> rperm6 0 0 1 >>> 0 0 1 >>> 0 1 0 >>> 1 0 0 >>> >>> >>> rperm6 0 1 1 >>> 0 1 1 >>> 1 0 1 >>> 1 1 0 >>> >>> >>> >>> in both cases, the 0 index is the sorted order >>> >>> permN 1 0 1 >>> 1 >>> permN 1 0 0 >>> 2 >>> >>> the index in their respective permutation lists. >>> >>> ----- Original Message ----- >>> From: Raul Miller <[email protected]> >>> To: Programming forum <[email protected]> >>> Sent: Thursday, May 5, 2016 6:13 PM >>> Subject: Re: [Jprogramming] permutation and combination numbers (with >>> repeat) >>> >>> Why are these two results equal? >>> >>> permN 0 0 1 >>> 0 >>> permN 0 1 1 >>> 0 >>> >>> Thanks, >>> >>> -- >>> Raul >>> >>> >>> On Thu, May 5, 2016 at 5:58 PM, 'Pascal Jasmin' via Programming >>> <[email protected]> wrote: >>>> Some routines to calculate permutation and combination numbers, similar to >>>> A. (but allows permutations with repeat) >>>> >>>> del1 =: i.~ ({. , >:@[ }. ]) ] >>>> >>>> combN =: (0:`((<:@[ - {.@]) $: >:@{.@] -~ }.@])@.(0 < #@]) + 0:`(<:@#@] >>>> +/@:! <:@[ - i.@{.@])@.(0 < {.@]) ) >>>> >>>> combNF =: 3 : 'a =. 1 { 0 {:: y label_. (i.a) + +/\ 1 {:: ([ (] ;~ [ - 1 >>>> ,~ _2 >:@{ ]) }:@] , {:@] ([ ({.@] ,(- {:)) ] (] , {~) 1 i:~ >:) (0 , ] >>>> (+/\)@:! ( a i.@:-~ [) -~ [)/@:<:@[ )&>/^: (<:a) y'@:; >>>> >>>> permC =: # %&(x:@:(*/))&:! #/.~ >>>> >>>> permN1 =: ((0:`( (] - <./)@:({.@] del1 [) $: (] - <./)@:}.@] )@.(1 < >>>> #@])) + (permC % #)@] * [ i. {.@] ) f. >>>> >>>> permN =: /:~ permN1 ] >>>> >>>> 100x combN 15 25 35 45 55 65 85 >>>> 11284989655 >>>> >>>> 100 7 combNF 11284989655x >>>> 15 25 35 45 55 65 85 >>>> >>>> permN 1 0 0 2 1 3 3 1 >>>> 434 >>>> >>>> haven't done the reverse to permN yet, but these routines combined can be >>>> used to compress any list into 2 numbers (with a key). You can google for >>>> combinatorial number base, and there is A., but not sure A. has been done >>>> for permutations with repeats. Which produces smaller numbers than A. >>>> does (due to fewer underlying permutations). >>>> ---------------------------------------------------------------------- >>>> 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 > ---------------------------------------------------------------------- > 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
