(More specifically - the argument to the A. monad is the indices which perform a permutation.)
FYI, -- Raul On Fri, May 6, 2016 at 2:03 AM, Raul Miller <[email protected]> wrote: > I think it's a property of the domain (which is permutations). > > -- > Raul > > > On Fri, May 6, 2016 at 1:54 AM, 'Pascal Jasmin' via Programming > <[email protected]> wrote: >> 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
