Thanks, Jesse! Your solution looks fine. I'll study the words 'keep' and 
'reduce' so I can understand the magic involved. ;-)

There may be a more direct way to do this. Maybe some recursive method? 
As you may have seen, if the initial sequence is
{ 0 1 2 3 4 5 6 7 8 9 }, then the result will be
{ 0 2 4 6 8 1 5 9 7 3 }. As I'm going to apply the move-core-to-end on 
that, over and over, I could use the first result as a permutation 
sequence with Daniel Ehrenberg's map-permutation word.

/Jon

On 2/25/09 1:11 PM, Jesse Rusak wrote:
> How about this?
> 
> : move-core-to-end ( seq -- seq )
>    [ length 2 - [1,b] ] keep [ swap move-to-end ] reduce ;
> 
> Though I feel like there's probably a more direct way to do this than  
> moving each element in turn.
> 
> - Jesse
> 
> On 25-Feb-09, at 4:30 AM, Jon Kleiser wrote:
> 
>> Here's follow-up to my first question about how to move the nth  
>> element
>> to the end, which Daniel and Slava had several solutions for.
>>
>> On 2/23/09 7:19 PM, Daniel Ehrenberg wrote:
>>> Well, here's an inefficient way to do it, but the code is pretty:
>>>
>>> : move-to-end ( n seq -- newseq )
>>>    [ remove-nth ] [ nth ] 2bi suffix ;
>> I now wanted to apply that operation for n=1 to n=length-2, i.e.
>> skipping the first (0) and last (length-1) index. I came up with the
>> following solution, but I suspect Daniel, Slava, or other Factor heads
>> on this list, may have a better (looking) way of doing it, maybe  
>> without
>> the variable. Here's mine:
>>
>> : move-core-to-end ( seq -- seq )
>>     SYMBOL: target
>>     dup
>>     target set
>>     length 2 - [1,b] [ target get move-to-end target set ] each
>>     target get ;
>>
>> /Jon

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to