<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: permute code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 24 Jul 2008 18:35:20 GMT</pubDate>
    <description>DZone Snippets: permute code</description>
    <item>
      <title>Pyrex</title>
      <link>http://snippets.dzone.com/posts/show/2351</link>
      <description>// description of your code here&lt;br /&gt;Permute a list&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cdef class Permute2:&lt;br /&gt;&lt;br /&gt;    cdef int n, first&lt;br /&gt;    cdef object lst&lt;br /&gt;&lt;br /&gt;    def __init__(self, lst):&lt;br /&gt;        self.lst = lst&lt;br /&gt;        self.first = 0&lt;br /&gt;        self.n = len(lst) - 1&lt;br /&gt;&lt;br /&gt;    def __iter__(self):&lt;br /&gt;        return self&lt;br /&gt;&lt;br /&gt;    def __next__(self):&lt;br /&gt;        cdef int j, l, k, x, y, z&lt;br /&gt;        if self.first == 0:&lt;br /&gt;            self.first = 1&lt;br /&gt;            return self.lst&lt;br /&gt;        if self.n == 1:&lt;br /&gt;            return [self.lst[1], self.lst[0]]&lt;br /&gt;        while 1:&lt;br /&gt;            if self.lst[-2] &lt; self.lst[-1]:&lt;br /&gt;                self.lst[-2], self.lst[-1] = self.lst[-1], self.lst[-2]&lt;br /&gt;            elif self.lst[-3] &lt; self.lst[-2]:&lt;br /&gt;                if self.lst[-3] &lt; self.lst[-1]:&lt;br /&gt;                    self.lst[-3], self.lst[-2], self.lst[-1] = self.lst[-1], self.lst[-3], self.lst[-2]&lt;br /&gt;                else:&lt;br /&gt;                    self.lst[-3], self.lst[-2], self.lst[-1] = self.lst[-2], self.lst[-1], self.lst[-3]&lt;br /&gt;            else:&lt;br /&gt;                j = self.n - 3&lt;br /&gt;                if j &lt; 0: raise StopIteration&lt;br /&gt;                y = self.lst[j]&lt;br /&gt;                x = self.lst[-3]&lt;br /&gt;                z = self.lst[-1]&lt;br /&gt;                while y &gt;= x:&lt;br /&gt;                    j = j - 1&lt;br /&gt;                    if j &lt; 0: raise StopIteration&lt;br /&gt;                    x = y&lt;br /&gt;                    y = self.lst[j]&lt;br /&gt;                if y &lt; z:&lt;br /&gt;                    self.lst[j] = z&lt;br /&gt;                    self.lst[j+1] = y&lt;br /&gt;                    self.lst[self.n] = x&lt;br /&gt;                else:&lt;br /&gt;                    l = self.n - 1&lt;br /&gt;                    while y &gt;= self.lst[l]:&lt;br /&gt;                        l = l - 1&lt;br /&gt;                    self.lst[j], self.lst[l] = self.lst[l], y&lt;br /&gt;                    self.lst[self.n], self.lst[j+1] = self.lst[j+1], self.lst[self.n]&lt;br /&gt;                k = j + 2&lt;br /&gt;                l = self.n - 1&lt;br /&gt;                while k &lt; l:&lt;br /&gt;                    self.lst[k], self.lst[l] = self.lst[l], self.lst[k]&lt;br /&gt;                    k = k + 1&lt;br /&gt;                    l = l - 1&lt;br /&gt;            return self.lst&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 01 Aug 2006 23:11:36 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2351</guid>
      <author>llimllib (Bill Mill)</author>
    </item>
    <item>
      <title>Simple Permutation //JavaScript Function</title>
      <link>http://snippets.dzone.com/posts/show/1032</link>
      <description>&lt;a href="http://jsfromhell.com/array/permute"&gt;&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var a = ["A", "B", "C", "D"], j = permute(a);&lt;br /&gt;document.write(&lt;br /&gt;    "&lt;h2&gt;", a.join(" - "), " = ", j.length, "&lt;/h2&gt;",&lt;br /&gt;    j.join("&lt;br /&gt;")&lt;br /&gt;);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;code&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/array/permute [v1.0]&lt;br /&gt;&lt;br /&gt;permute = function(v, m){ //v1.0&lt;br /&gt;    for(var p = -1, j, k, f, r, l = v.length, q = 1, i = l + 1; --i; q *= i);&lt;br /&gt;    for(x = [new Array(l), new Array(l), new Array(l), new Array(l)], j = q, k = l + 1, i = -1;&lt;br /&gt;        ++i &lt; l; x[2][i] = i, x[1][i] = x[0][i] = j /= --k);&lt;br /&gt;    for(r = new Array(q); ++p &lt; q;)&lt;br /&gt;        for(r[p] = new Array(l), i = -1; ++i &lt; l; !--x[1][i] &amp;&amp; (x[1][i] = x[0][i],&lt;br /&gt;            x[2][i] = (x[2][i] + 1) % l), r[p][i] = m ? x[3][i] : v[x[3][i]])&lt;br /&gt;            for(x[3][i] = x[2][i], f = 0; !f; f = !f)&lt;br /&gt;                for(j = i; j; x[3][--j] == x[2][i] &amp;&amp; (x[3][i] = x[2][i] = (x[2][i] + 1) % l, f = 1));&lt;br /&gt;    return r;&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 29 Dec 2005 04:18:25 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1032</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Permute //JavaScript Function</title>
      <link>http://snippets.dzone.com/posts/show/680</link>
      <description>&lt;a href="http://www.jsfromhell.com/array/permute"&gt;&lt;br /&gt;It permutes elements in an array, the "m" parameter is a boolean which determines if the function should return an array with an "index map" or the real value.&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/array/permute [v1.0]&lt;br /&gt;&lt;br /&gt;permute = function( v, m ){&lt;br /&gt;	for( var j, l = v.length, i = ( 1 &lt;&lt; l ) - 1, r = new Array( i ); i; )&lt;br /&gt;		for( r[--i] = [], j = l; j; i + 1 &amp; 1 &lt;&lt; --j &amp;&amp; ( r[i].push( m ? j : v[j] ) ) );&lt;br /&gt;	return r;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;document.write( permute( ["A", "B", "C" ], 1 ).join( "&lt;br /&gt;" ), "&lt;hr /&gt;" );&lt;br /&gt;document.write( permute( ["A", "B", "C" ], 0 ).join( "&lt;br /&gt;" ) );&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 09 Sep 2005 07:20:40 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/680</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
  </channel>
</rss>
