<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Adityon</title>
	<atom:link href="http://blog.adityon.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.adityon.com</link>
	<description>Simpler solution for complex problem. Think different - Keshav Shetty</description>
	<lastBuildDate>Sat, 04 Jun 2011 17:32:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Random data compression &#8211; Lowerband &amp; upper band filtering</title>
		<link>http://blog.adityon.com/2011/01/random-data-compression-lowerband-upper-band-filtering/</link>
		<comments>http://blog.adityon.com/2011/01/random-data-compression-lowerband-upper-band-filtering/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 15:12:25 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Data compression]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[comp.compression]]></category>
		<category><![CDATA[infinity compression]]></category>
		<category><![CDATA[lossless data compression]]></category>
		<category><![CDATA[lossless random data compression]]></category>
		<category><![CDATA[magic compressor]]></category>
		<category><![CDATA[million random digit]]></category>
		<category><![CDATA[random data compression]]></category>
		<category><![CDATA[unsorting algorithm]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2011/01/random-data-compression-lowerband-upper-band-filtering/</guid>
		<description><![CDATA[Wish you all happy new year 2011.
in this article I will explain how a set of unique elements can be represented with less bits using filtering elements into two sets of upper and lower band.



Few users suggested to change the title, because title says &#8220;Random data&#8221; where as article describes about unique elements. Let me clarify that million random digit contains average 90-110 bytes of duplicate or non unique for every 256 bytes. If we could represent unique data set &#60;=202 byte(worst case), we can use remaining 54 byte to ...]]></description>
			<content:encoded><![CDATA[<p>Wish you all happy new year 2011.</p>
<p>in this article I will explain how a set of unique elements can be represented with less bits using filtering elements into two sets of upper and lower band.</p>
<table cellpadding="1" width="573" style="WIDTH: 573px; HEIGHT: 116px" border="1" cellspacing="1">
<tbody>
<tr>
<td>Few users suggested to change the title, because title says &#8220;Random data&#8221; where as article describes about unique elements. Let me clarify that million random digit contains average 90-110 bytes of duplicate or non unique for every 256 bytes. If we could represent unique data set &lt;=202 byte(worst case), we can use remaining 54 byte to represent duplicates. Refer previous article <a href="http://blog.adityon.com/2009/12/random-data-compression-is-it-possible-part-2/" target="_blank">here</a></td>
</tr>
</tbody>
</table>
<p>Coming to filtering technique, In every set of size 2^n, we will have exactly 2 set where half elements belongs to upper part and half elements belongs to lower part. e.g: In a set 256 unique values we can filter first or upper array containing element between 0 to 127 and lower array 128 to 255. By parsing and remembering using a flag(false for upper and true for lower set) weather element moved to upper or lower set we can locate the original position. Apply this method for newly created set recursively.</p>
<p>Lets take the same the input used in previous article of size 16, i.e: (7, 12, 9, 3, 13, 6, 8, 15, 1, 4, 2, 11, 0, 14, 5, 10)</p>
<p>Element 0-7 belongs to upper set and 8-15 belongs to lower set. Upper set or lower set will have equal number of elements of size (input set size)/2. When a element moves to upper set we can remember position as false and if element moves to lower set we can remember position as true. Once either upper or lower set size touches the size of the element in new set (i.e actually half of the original input size) we can stop parsing further.</p>
<p>In the above example &#8211; Total number of element=16, Size of new subset = 8, Elements in first/upper set is 0-7 and elements in lower set 8-15. After applying first time filter we get following output.</p>
<p><img src="http://blog.adityon.com/wp-content/uploads/2011/01/filter.png" style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; WIDTH: 600px; DISPLAY: inline; HEIGHT: 290px; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid" height="290" alt="filter.png" width="600"/></p>
<p>This method is similar to <a href="http://blog.adityon.com/2009/12/random-data-compression-is-it-possible-part-2/" target="_blank">reverse merge sort</a>, difference is here we use top to bottom approach, whereas merge sort uses bottom to up.</p>
<p>Using this method we can represent 256 unique elements and save 128 byte(best case) to 31.75 byte (worst case) as illustrated below.</p>
<p><img src="http://blog.adityon.com/wp-content/uploads/2009/12/mergesort22.png" style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; WIDTH: 540px; DISPLAY: inline; HEIGHT: 234px; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid" height="234" alt="mergesort2.png" width="540"/></p>
<p>Worst case happens when last element of each set belongs to other set and vice versa.</p>
<p>As I said beginning this method not sufficient to address million random digit, where I need to save at least 54 byte for every 256 byte.</p>
<p>In the next article I will write about using unidirectional graph how we can represent set of unique elements. Till then please pass your comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2011/01/random-data-compression-lowerband-upper-band-filtering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random data compression &#8211; Risk based selection</title>
		<link>http://blog.adityon.com/2010/10/random-data-compression-risk-based-selection/</link>
		<comments>http://blog.adityon.com/2010/10/random-data-compression-risk-based-selection/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 15:39:18 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Data compression]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[comp.compression]]></category>
		<category><![CDATA[infinity compression]]></category>
		<category><![CDATA[lossless data compression]]></category>
		<category><![CDATA[lossless random data compression]]></category>
		<category><![CDATA[magic compressor]]></category>
		<category><![CDATA[million random digit]]></category>
		<category><![CDATA[random data compression]]></category>
		<category><![CDATA[unsorting algorithm]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/10/random-data-compression-risk-based-selection/</guid>
		<description><![CDATA[In my previous article I mentioned that once tree structure is ready we can fill and generate the random input along with one bit diff encoding.
As I observed as tree reaches mid levels, available options increases to 64+ elements, which will result into minimum 6bits per selection.
With respect to million random digit this approach will result into not more than 27 duplicates can be accommodated.
We need a better approach to selecting elements instead of one bit dif encoding.
I used the modified version of one bit dif encoding, I call it ...]]></description>
			<content:encoded><![CDATA[<p>In my previous article I mentioned that once tree structure is ready we can fill and generate the random input along with one bit diff encoding.</p>
<p>As I observed as tree reaches mid levels, available options increases to 64+ elements, which will result into minimum 6bits per selection.</p>
<p>With respect to million random digit this approach will result into not more than 27 duplicates can be accommodated.</p>
<p>We need a better approach to selecting elements instead of one bit dif encoding.</p>
<p>I used the modified version of one bit dif encoding, I call it as risk based selection.</p>
<p>Lets assume that I have possible available selection (4, 9, 40, 102, 150, 165, 172, 197, 245) and actual selection was 245. Using one bit dif encoding I need 3 bit i.e &#8220;111&#8243; to select 245 among these input.</p>
<p>In risk based selection I will try to make two list with maximum numbers in one list and remaining in another list based on particular bit.</p>
<p>If you analyze below image you will understand that 4th bit in available option results into 7 zeros, If I knew 4th bit of number which I am selecting is &#8220;1&#8243; then I will left with only two remaining numbers.</p>
<p>i.e in available number 4th bit has maximum variance. (As I am aware there is other 6th bit as 1 as maximum or 7th bit as maximum zero, lets select first possibility)</p>
<p>The number which I am going to select i.e 245 has 4th bit as &#8220;1&#8243;, If I store this bit my next available options reduces to two i.e 150, 245.</p>
<p><img src="http://blog.adityon.com/wp-content/uploads/2010/10/riskbasedSelection.png" style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; WIDTH: 434px; DISPLAY: inline; HEIGHT: 399px; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid" height="399" alt="riskbasedSelection.png" width="434"/></p>
<p>As you can see in the image red marked bit are selected for next round. I repeat same procedure for remaining options until I am left with only one option.</p>
<p>Green box indicates 2nd level filtering. After second bit selection I will left with 245 which is the number I am looking for. This way I need only two bit (i.e &#8220;11&#8243;) to select particular node.</p>
<p>This selection is more effective than bit dif encoding which requires 3 bit compared to 2 bit.</p>
<p>Note: In worst case scenario we may end up with 8bits for each node. You can see yourself by applying this for below example</p>
<p>Assume we have these available option (1,2,4,8,16,32,64,128) and number to be selected is 1. We will end up with 8 bits.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/10/random-data-compression-risk-based-selection/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Random data compression &#8211; Using Tree</title>
		<link>http://blog.adityon.com/2010/10/random-data-compression-using-tree/</link>
		<comments>http://blog.adityon.com/2010/10/random-data-compression-using-tree/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 11:14:12 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Data compression]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[comp.compression]]></category>
		<category><![CDATA[infinity compression]]></category>
		<category><![CDATA[lossless data compression]]></category>
		<category><![CDATA[lossless random data compression]]></category>
		<category><![CDATA[magic compressor]]></category>
		<category><![CDATA[million random digit]]></category>
		<category><![CDATA[random data compression]]></category>
		<category><![CDATA[unsorting algorithm]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/10/random-data-compression-using-tree/</guid>
		<description><![CDATA[In this article I will explain how a B Tree can be used to model the unique numbers. This will be interesting article as best case scenario requires only 64bytes.
As you are aware B Tree or a balanced tree contains maximum two child for each node, all nodes left side will be lower than current node and all right side nodes will be higher than current node.
How can we use B Tree to model the random unique numbers?
In case of 256 unique numbers we will have 256 nodes, left most ...]]></description>
			<content:encoded><![CDATA[<p>In this article I will explain how a B Tree can be used to model the unique numbers. This will be interesting article as best case scenario requires only 64bytes.</p>
<p>As you are aware B Tree or a balanced tree contains maximum two child for each node, all nodes left side will be lower than current node and all right side nodes will be higher than current node.</p>
<p>How can we use B Tree to model the random unique numbers?</p>
<p>In case of 256 unique numbers we will have 256 nodes, left most node starts with zero and right most node 255. For each node we need two flags to identify weather it contains left node and right node.</p>
<p>Recursively we can build the tree structure. Once tree structure is ready we can fill each node with value by using pre-order traverse.</p>
<p>Lets take an example, Assume we have random 16 inputs (7, 12, 9, 3, 13, 6, 8, 15, 1, 4, 2, 11, 0, 14, 5, 10)</p>
<p>Respective tree will be</p>
<p><img src="http://blog.adityon.com/wp-content/uploads/2010/10/binaryTree.jpeg" style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; WIDTH: 600px; DISPLAY: inline; HEIGHT: 427px; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid" height="427" alt="binaryTree.jpeg" width="600"/></p>
<p>If we knew tree structure we can refill values of each node by starting from left most to rightmost.</p>
<p>However after building tree we need addition info find which child node appears next.</p>
<p>In the above example we are sure that 7 appeared first in the input array. Next number either 3 or 12 (one of the open child).</p>
<p>We need one bit to select either 3 or 12(That bit will be &#8220;1&#8243;). we end up with 12 as next input. Now as next input should be within 3, 9, 13. We can go on applying one bit dif encoding to select proper child.</p>
<p>Whenever a child is selected its children are added to available options for selecting next node.</p>
<p>This way we need 256bits(for node flag) + one bit dif encoding info of each child.</p>
<p><strong><span style="TEXT-DECORATION: underline">Best case and worst case scenario</span></strong></p>
<p>Using tree in best case scenario i.e each node has maximum only one node, that happens when input is in ascending order we need just 2^(n+1) bits i.e for 256 input we need 512bits or 64 bytes. JUST 64 byte for 256 unique values!!!.</p>
<p>In worst case scenario we need 64byte + bit diff info of worst case = 2047bits (i.e ~256 bytes) No saving.</p>
<p>Worst case scenario happens when child node added to available options is consumed at the end.</p>
<p>Using this technique by rearranging million random digit I could compress up to 27bytes non unique numbers. Worst than merge sort. This technique will be effective provided we find a way to increase the level of tree which results into nodes with single child more. I will write more about this later.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/10/random-data-compression-using-tree/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Random data compression &#8211; diff encoding with merge sort</title>
		<link>http://blog.adityon.com/2010/10/random-data-compression-diff-encoding-with-merge-sort/</link>
		<comments>http://blog.adityon.com/2010/10/random-data-compression-diff-encoding-with-merge-sort/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 18:12:31 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Data compression]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[comp.compression]]></category>
		<category><![CDATA[infinity compression]]></category>
		<category><![CDATA[lossless data compression]]></category>
		<category><![CDATA[lossless random data compression]]></category>
		<category><![CDATA[magic compressor]]></category>
		<category><![CDATA[million random digit]]></category>
		<category><![CDATA[random data compression]]></category>
		<category><![CDATA[unsorting algorithm]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/10/random-data-compression-diff-encoding-with-merge-sort/</guid>
		<description><![CDATA[Last article didn&#8217;t go well with my readers, so I decided to elaborate with example.
Lets assume we have eight random input say 5, 1, 3, 1, 2, 3, 0, 5
In this input 4th, 6th and 8th element are non unique i.e they already appeared at least once.
For each number we need a identifier or a flag to identify it as unique or duplicate. So we will have bit info like 0 0 0 1 0 1 0 1
When 4th element appears which is duplicate of one of the past unique, ...]]></description>
			<content:encoded><![CDATA[<p>Last article didn&#8217;t go well with my readers, so I decided to elaborate with example.</p>
<p>Lets assume we have eight random input say 5, 1, 3, 1, 2, 3, 0, 5</p>
<p>In this input 4th, 6th and 8th element are non unique i.e they already appeared at least once.</p>
<p>For each number we need a identifier or a flag to identify it as unique or duplicate. So we will have bit info like 0 0 0 1 0 1 0 1</p>
<p>When 4th element appears which is duplicate of one of the past unique, that should exist within (5, 1, 3)</p>
<p>Similarly 6th element should exist within (5, 1, 3, 2) and same applies to 8th element which should exist within (5, 1, 3, 2, 0)</p>
<p><img src="http://blog.adityon.com/wp-content/uploads/2010/10/difencoding.png" style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid" height="417" alt="difencoding.png" width="512"/></p>
<p>Lets go back to the algorithm mentioned in my previous article.</p>
<p>1. Read 256 bytes from the input (In the above example we will read 8 input of each 3 bit)</p>
<p>2. Sequential process and mark unique and duplicates, that results into 0 0 0 1 0 1 0 1. We need to store this info to be used at the time of decompression. For above 8 input we need 8bits (for 256 input we need 256bits).</p>
<p>3. For each marked as non unique data, remember the position using one bit diff encoding.</p>
<p>i.e for 4th element which is duplicate of 2nd element, using one bit diff encoding we get &#8220;01&#8243; and for for 6th element we get &#8220;10&#8243; for 8th element we get &#8220;000&#8243;. The complete table of one bit diff encoding available <a href="http://blog.adityon.com/wp-content/uploads/2010/10/256BitDifMap.txt" target="_blank" title="256 variance of one bit dif encoding">here</a></p>
<p>4. Remove non unique data and rearrange the list by moving forward, at the end empty space fill with missing numbers. Refer above image bottom array is rearranged one.</p>
<p>Now the array contains only unique elements, we can apply reverse merge sort to sort and store these bit info.</p>
<p>So compressed file contains unique or duplicate flags generated in step(2) + one bit diff encoding info of duplicate numbers generated in above step(3) + merge sort bit info.</p>
<p>While decompressing use merge sort bit info to re create unique array and use unique or duplicate flags to note which was duplicate and then use bit dif info refill duplicates.</p>
<p>I hope this example clears many of your doubts.</p>
<p>Next article will be interesting one, which is based on B Tree.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/10/random-data-compression-diff-encoding-with-merge-sort/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Random data compression &#8211; One bit diff encoding continued</title>
		<link>http://blog.adityon.com/2010/10/random-data-compression-one-bit-diff-encoding-continued/</link>
		<comments>http://blog.adityon.com/2010/10/random-data-compression-one-bit-diff-encoding-continued/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 12:42:14 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Data compression]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[comp.compression]]></category>
		<category><![CDATA[infinity compression]]></category>
		<category><![CDATA[lossless data compression]]></category>
		<category><![CDATA[lossless random data compression]]></category>
		<category><![CDATA[magic compressor]]></category>
		<category><![CDATA[million random digit]]></category>
		<category><![CDATA[random data compression]]></category>
		<category><![CDATA[unsorting algorithm]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/10/random-data-compression-one-bit-diff-encoding-continued/</guid>
		<description><![CDATA[This is continuation of my previous article on Random data compression-One bit dif encoding.
Sorry for the long gap between this and last article. I was too busy.
After my my previous article many had asked how I achieved compression up to 42 bytes duplicates.
Here we go with the algorithm I used.
1. Read 256 bytes from the input.
2. Sequential process and mark unique and duplicates, we need 256 bits or 32 bytes. (Can&#8217;t stop this loss)
3. For each marked as non unique data, remember the position using one bit diff encoding. (Details ...]]></description>
			<content:encoded><![CDATA[<p>This is continuation of my <a href="http://blog.adityon.com/2010/06/random-data-compression-one-bit-diff-encoding/" target="_blank">previous article on Random data compression-One bit dif encoding</a>.</p>
<p>Sorry for the long gap between this and last article. I was too busy.</p>
<p>After my my previous article many had asked how I achieved compression up to 42 bytes duplicates.</p>
<p>Here we go with the algorithm I used.</p>
<p>1. Read 256 bytes from the input.</p>
<p>2. Sequential process and mark unique and duplicates, we need 256 bits or 32 bytes. (Can&#8217;t stop this loss)</p>
<p>3. For each marked as non unique data, remember the position using one bit diff encoding. (Details in previous article) Requires much lesser bits than 8bits depending on non unique data appearance. We will consume lesser bits if the non unique data appears at the beginning rather than at the end of the list.</p>
<p>4. Remove non unique data and rearrange the list by moving forward, at the end empty space fill with missing numbers.</p>
<p>5. Apply merge sort and store bit information of sorting data. (Refer how to use merge sort <a href="http://blog.adityon.com/2010/06/random-data-compression-is-it-possible-how-to-use-merge-sort/" target="_blank">article</a>)</p>
<p>While decompressing</p>
<p>1. Use merge sort data to recreate the unique data list.</p>
<p>2. Apply non unique flags to rearrange the list.</p>
<p>3. Use one bit dif encoding to fill duplicate or non unique numbers.</p>
<p>Using above technique I could compress random data up to 42 bytes. I repeat up to, not always. I mean if the non unique appears at the beginning of the list we can accommodate up to 42 bytes, whereas if the non unique appears at the end of the list we can hardly compress data up to 12~14bytes.</p>
<p>Note: This method is not effective for Million Random Digit from RAND. We need different approach.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/10/random-data-compression-one-bit-diff-encoding-continued/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Random data compression &#8211; One bit diff encoding</title>
		<link>http://blog.adityon.com/2010/06/random-data-compression-one-bit-diff-encoding/</link>
		<comments>http://blog.adityon.com/2010/06/random-data-compression-one-bit-diff-encoding/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 18:10:03 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Data compression]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[comp.compression]]></category>
		<category><![CDATA[infinity compression]]></category>
		<category><![CDATA[lossless data compression]]></category>
		<category><![CDATA[lossless random data compression]]></category>
		<category><![CDATA[magic compressor]]></category>
		<category><![CDATA[million random digit]]></category>
		<category><![CDATA[random data compression]]></category>
		<category><![CDATA[unsorting algorithm]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/06/random-data-compression-one-bit-diff-encoding/</guid>
		<description><![CDATA[This is continuation of my previous article on Random data compression-How to use merge sort?.
As I mentioned earlier &#8211; it is hard or impossible(as of now) to compress million random digit. As per my analysis million random digit file contains around 90 &#8211; 110 bytes duplicates or repeated number within every block of 256 bytes. When input data is very pure or near pure(I mean uniqueness) or when input data is highly polluted or noise(I mean duplicates), then it is easy to compress. May be we can borrow the idea ...]]></description>
			<content:encoded><![CDATA[<p>This is continuation of my <a href="http://blog.adityon.com/2010/06/random-data-compression-is-it-possible-how-to-use-merge-sort/" target="_blank">previous article on Random data compression-How to use merge sort?</a>.</p>
<p>As I mentioned earlier &#8211; it is hard or impossible(as of now) to compress <a href="http://marknelson.us/2006/06/20/million-digit-challenge/" target="_blank">million random digit</a>. As per my analysis million random digit file contains around 90 &#8211; 110 bytes duplicates or repeated number within every block of 256 bytes. When input data is very pure or near pure(I mean uniqueness) or when input data is highly polluted or noise(I mean duplicates), then it is easy to compress. May be we can borrow the idea from chemistry. i.e if you refer periodic table lighter elements can be combined using nuclear fusion(Stars) or higher elements can be broken using nuclear fission(Uranium). In both cases energy released which we can relate to compression, however if you refer periodic table you will understand that elements with highly stable nucleus hard to break or fuse. e.g: Lead.</p>
<p>Same pattern I can see in million random digit where if uniqueness reaches extreme high or extreme low we can easily compress the data.</p>
<p>My so far developed compressor could achieve compression with doubles less than 42 or more than 156 in every 256 bytes.</p>
<p>Before I go further about my compression theory, I have to write one more article about one bit difference variable encoder. This is one of the known algorithm based on probability or possibilities.</p>
<p>About bijective you might have observed it is one on one mapping, however this fails to address relation within elements of donor domain set or acceptor domain set.</p>
<p>The one bit variant encoding based on the possibilities. i.e if we have 4 unique possibilities then we need 2 bits (00,01,10,11) to represent all possible values. How many bits do we require when we have 5 possibilities or say 6 possibilities?</p>
<p>In one of my earlier article I mentioned usage of insertion sort or bubble sort stating using this technique we can represent for every possible combination we will have 1792 bits or 224bytes. But I need to re factor this statement. We need much lesser bits.</p>
<p>Assume that you have a sorted list of 256 all unique values, when a random input comes lets say 26, you pick from the initialized list, actually you pick the position, Since it is first input and there are 256 possibilities we need eight bit to represent the position. For next random input we need to chose among remaining 255 possibilities, in this case exception for last position we need eight bit. Here it depends on the position which we pick from remaining elements. We can calculate required bits for best case scenario(when input are in sorted order) and worst case(when input are in reverse sorted order) as below.</p>
<p><img src="http://blog.adityon.com/wp-content/uploads/2010/06/onebitdiffencoding.png" style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; WIDTH: 419px; DISPLAY: inline; HEIGHT: 161px; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid" height="161" alt="onebitdiffencoding.png" width="419"/></p>
<p>If you refer the below illustration you will quickly understand that as possibilities changes required bits changes by maintaining uniqueness of bit stream.</p>
<p><a href="http://blog.adityon.com/wp-content/uploads/2010/06/1bitdiff.jpg" target="_blank"><img src="http://blog.adityon.com/wp-content/uploads/2010/06/1bitdiff.jpg" style="WIDTH: 600px; DISPLAY: inline; HEIGHT: 263px" title="Click for enlarge" height="263" width="600" alt="1bitdiff.jpg"/></a></p>
<p>The cells in yellow color are one bit diff encode based first entry in each row.</p>
<p>Using above calculation you can represent using 1545-1793bits(193.125-224.125bytes) for every 256 unique bytes.</p>
<p>Next article I will explain how I achieved compression for 42doubles.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/06/random-data-compression-one-bit-diff-encoding/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Random data compression &#8211; Is it possible? How to use merge sort?</title>
		<link>http://blog.adityon.com/2010/06/random-data-compression-is-it-possible-how-to-use-merge-sort/</link>
		<comments>http://blog.adityon.com/2010/06/random-data-compression-is-it-possible-how-to-use-merge-sort/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 14:14:45 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Data compression]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[infinity compression]]></category>
		<category><![CDATA[Kolmogorov complexity]]></category>
		<category><![CDATA[lossless data compression]]></category>
		<category><![CDATA[lossless random data compression]]></category>
		<category><![CDATA[merge sort]]></category>
		<category><![CDATA[random data compression]]></category>
		<category><![CDATA[unsorting algorithm]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/06/random-data-compression-is-it-possible-how-to-use-merge-sort/</guid>
		<description><![CDATA[This is continuation of my previous article on Random data compression possibilities.
Some of the readers asked how reverse merge sort (merge unsort) can be used to represent 256 unique values using 128bytes(best case) or 224.25(worst case).
As illustrated in previous article using merge sort we sort the random input and store bit information of the list from where we picked the smaller number. Actually we are reshuffling the original position and stored bit information represents how a input changed its position from original list to sorted list. Lets take an example ...]]></description>
			<content:encoded><![CDATA[<p>This is continuation of my <a href="http://blog.adityon.com/2009/12/random-data-compression-is-it-possible-part-2/" target="_blank">previous article on Random data compression possibilities</a>.</p>
<p>Some of the readers asked how reverse merge sort (merge unsort) can be used to represent 256 unique values using 128bytes(best case) or 224.25(worst case).</p>
<p>As illustrated in previous article using merge sort we sort the random input and store bit information of the list from where we picked the smaller number. Actually we are reshuffling the original position and stored bit information represents how a input changed its position from original list to sorted list. Lets take an example of a random array of 16 numbers varying from 0&#8230;15.</p>
<p><img src="http://blog.adityon.com/wp-content/uploads/2010/06/MergeUnsort.jpg" style="WIDTH: 600px; DISPLAY: inline; HEIGHT: 153px" height="153" alt="MergeUnsort.jpg" width="600"/></p>
<p>As shown in above image after sorting, the position are reshuffled and stored bit information exactly represent from where the each element moved.</p>
<p>The encoding code is recursive function, to start applying merge from two list of size 2 to merge the two list of 128. You can refer the <a href="http://blog.adityon.com/wp-content/uploads/2009/12/mergesort1.JPG" target="_blank">mergesort in action here</a>.</p>
<p>The merge sort encoding code given below(C++).</p>
<pre id="code" name="code" class="java">
   void Transform::mergeSort(unsigned int beginPosition, unsigned int endPosition) {
                unsigned int midPosition = beginPosition + (endPosition-beginPosition)/2;
                if (midPosition&gt;beginPosition &amp;&amp; midPosition&lt;endPosition) { // Recursive call until list is of size 2
                        mergeSort(beginPosition,midPosition);
                        mergeSort(midPosition+1,endPosition);
                }
                unsigned int elementsInEachList = (endPosition-beginPosition+1)/2;
                unsigned char list1[256];
                unsigned char list2[256];
                for(unsigned int i=beginPosition;i&lt;beginPosition+elementsInEachList;i++) {
                        list1[i] = transformedByte[i];
                }
                for(unsigned int i=midPosition+1;i&lt;midPosition+1+elementsInEachList;i++) {
                        list2[i] = transformedByte[i];
                }
                unsigned int pendingInList1 = elementsInEachList;
                unsigned int list1Pointer = beginPosition;
                unsigned int pendingInList2 = elementsInEachList;
                unsigned int list2Pointer = midPosition+1;
                unsigned int mainArrayPointer = beginPosition;
                while(pendingInList1&gt;0 &amp;&amp; pendingInList2&gt;0) {
                        if (list1[list1Pointer]&lt;list2[list2Pointer]) {
                                transformedByte[mainArrayPointer] = list1[list1Pointer];
                                mainArrayPointer++;
                                list1Pointer++;
                                pendingInList1--;
                                bitWriter.write(false); // Store bit information 0 as item picked from first list
                        } else {
                                transformedByte[mainArrayPointer] = list2[list2Pointer];
                                mainArrayPointer++;
                                list2Pointer++;
                                pendingInList2--;
                                bitWriter.write(true); // Store bit information 1 as item picked from second list
                        }
           }
           if (pendingInList1&gt;0) {
                        while(pendingInList1&gt;0) {
                                transformedByte[mainArrayPointer] = list1[list1Pointer];
                                mainArrayPointer++;
                                list1Pointer++;
                                pendingInList1--;
                        }
                } else {
                        while(pendingInList2&gt;0) {
                                transformedByte[mainArrayPointer] = list2[list2Pointer];
                                mainArrayPointer++;
                                list2Pointer++;
                                pendingInList2--;
                        }
           }
        }
</pre>
<p>As you observed above when items in one list gets over (either first list or second list) for remaining element we don&#8217;t require sorting bit information.</p>
<p>Please note in above code random input is stored in transformedByte variable &amp; initilized in separate method for each 256byte input. The object bitWriter is a separate class of type BitWriter(Utility class) which is initialized in constructor. BitWriter will accumulates bit information and writes to output file when accumulated bits crosses 1 byte.</p>
<p>The merge sort decoding code given below(C++).</p>
<pre id="code" name="code" class="java">

  void Transform::reverseMergeSort(unsigned int beginPosition, unsigned int endPosition) {
        unsigned int midPosition = beginPosition + (endPosition-beginPosition)/2;
        if (midPosition&gt;beginPosition &amp;&amp; midPosition&lt;endPosition) { // Recursive call until list is of size 2
                mergeSort(beginPosition,midPosition);
                mergeSort(midPosition+1,endPosition);
        }
        unsigned int elementsInEachList = (endPosition-beginPosition+1)/2;
        unsigned char list1[256];
        unsigned char list2[256];
        for(unsigned int i=beginPosition;i&lt;beginPosition+elementsInEachList;i++) {
                list1[i] = inputPositionArray[i];
        }
        for(unsigned int i=midPosition+1;i&lt;midPosition+1+elementsInEachList;i++) {
                list2[i] = inputPositionArray[i];
        }
        unsigned int pendingInList1 = elementsInEachList;
        unsigned int list1Pointer = beginPosition;
        unsigned int pendingInList2 = elementsInEachList;
        unsigned int list2Pointer = midPosition+1;
        unsigned int mainArrayPointer = beginPosition;
        while(pendingInList1&gt;0 &amp;&amp; pendingInList2&gt;0) {
                bool nextBit = bitReader.genNextBit(); // Read bit information from sorted encoding
                if (nextBit==false) {
                        inputPositionArray[mainArrayPointer] = list1[list1Pointer];
                        mainArrayPointer++;
                        list1Pointer++;
                        pendingInList1--;
                } else {
                        inputPositionArray[mainArrayPointer] = list2[list2Pointer];
                        mainArrayPointer++;
                        list2Pointer++;
                        pendingInList2--;
                }
        }
        if (pendingInList1&gt;0) {
                while(pendingInList1&gt;0) {
                        inputPositionArray[mainArrayPointer] = list1[list1Pointer];
                        mainArrayPointer++;
                        list1Pointer++;
                        pendingInList1--;
                }
        } else {
                while(pendingInList2&gt;0) {
                        inputPositionArray[mainArrayPointer] = list2[list2Pointer];
                        mainArrayPointer++;
                        list2Pointer++;
                        pendingInList2--;
                }
        }
}
</pre>
<p>Before calling reverseMergeSort inputPositionArray is initialized with 0,1,2.. as default initial position. The object bitReader is a separate class of type BitReader(Utility class) which is initialized in constructor and provides API to read a bit at a time(not byte), which internally reads a byte and gives a bit at a time. These utility classes are developed by me exclusively for above purpose.</p>
<p>After exiting reverseMergeSort the inputPositionArray does not represent original input, instead it represent the positions of input in original data. After exiting we have to go thru one more loop to construct original input as below.</p>
<pre id="code" name="code" class="java">
   for(int i=0; i&lt;256;i++) {
       inputData[inputPositionArray[i]] = i;
   }
</pre>
<p>Now inputData contains original data.</p>
<p>I will inform in next article how I compressed random data in which we have maximum 42 duplicates(non unique) for every 256 input byte.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/06/random-data-compression-is-it-possible-how-to-use-merge-sort/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Oxymorons</title>
		<link>http://blog.adityon.com/2010/05/oxymorons/</link>
		<comments>http://blog.adityon.com/2010/05/oxymorons/#comments</comments>
		<pubDate>Sun, 30 May 2010 10:44:58 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Society]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/05/oxymorons/</guid>
		<description><![CDATA[Mother of all Oxymorons
An oxymoron is usually defined as a phrase in which two words of contradictory meaning are brought together:
Read till end
1) Clearly misunderstood
2) Exact Estimate
3) Small Crowd
4) Act Naturally
5) Found Missing
6) Fully Empty
7) Pretty ugly
  Seriously funny
9) Only choice
10) Original copies
And the Mother of all&#8230;&#8230; . . . . . .
11) Happily Married 
]]></description>
			<content:encoded><![CDATA[<p>Mother of all Oxymorons</p>
<p>An oxymoron is usually defined as a phrase in which two words of contradictory meaning are brought together:</p>
<p>Read till end</p>
<p>1) Clearly misunderstood</p>
<p>2) Exact Estimate</p>
<p>3) Small Crowd</p>
<p>4) Act Naturally</p>
<p>5) Found Missing</p>
<p>6) Fully Empty</p>
<p>7) Pretty ugly</p>
<p> <img src='http://blog.adityon.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Seriously funny</p>
<p>9) Only choice</p>
<p>10) Original copies</p>
<p>And the Mother of all&#8230;&#8230; <br/>. <br/>. <br/>. <br/>. <br/>. <br/>.</p>
<p>11) Happily Married <br/></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/05/oxymorons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bangalore city traffic police</title>
		<link>http://blog.adityon.com/2010/04/bangalore-city-traffic-police/</link>
		<comments>http://blog.adityon.com/2010/04/bangalore-city-traffic-police/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 11:59:17 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Society]]></category>
		<category><![CDATA[Bangalore traffic]]></category>
		<category><![CDATA[follow traffic rules]]></category>
		<category><![CDATA[RTO]]></category>
		<category><![CDATA[Traffic signal]]></category>
		<category><![CDATA[Traffic Violations]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/04/bangalore-city-traffic-police/</guid>
		<description><![CDATA[[The content of this blog entry is not mine, I recieved it thru a email, thought of keeping it somewhere for readers quick reference]

Visit Bangalore city traffic police
Check your vehicle traffic violation fines here &#8220;Search for Traffic Violations&#8221;
Understand and follow all traffic sign in Bangalore and India &#8211; Traffic sign
Various spot fine &#8211; List of Traffic offences, section of law and fine amount
Traffic Provisions &#8211; Traffic Do&#8217;s &#38; Don&#8217;ts
Traffic Road Markings &#8211; Traffic Do&#8217;s &#38; Don&#8217;ts
Traffic Rules and Regulations &#8211; Traffic Do&#8217;s &#38; Don&#8217;ts
Traffic Lights &#8211; Traffic Do&#8217;s &#38; Don&#8217;ts
Traffic ...]]></description>
			<content:encoded><![CDATA[<p>[The content of this blog entry is not mine, I recieved it thru a email, thought of keeping it somewhere for readers quick reference]</p>
<p><img src="http://blog.adityon.com/wp-content/uploads/2010/04/bctp.jpg" alt="bctp.jpg" width="257" height="206" /></p>
<p>Visit <a href="http://www.bangaloretrafficpolice.gov.in/" target="_blank">Bangalore city traffic police</a></p>
<p>Check your vehicle traffic violation fines here &#8220;<a href="http://www.bangaloretrafficpolice.gov.in/BPSFineDetails/BPSFineDetails.aspx" target="_blank">Search for Traffic Violations</a>&#8221;</p>
<p>Understand and follow all traffic sign in Bangalore and India &#8211; <a href="http://www.bangaloretrafficpolice.gov.in/index.php?option=com_content&amp;view=article&amp;id=78&amp;btp=78" target="_blank">Traffic sign</a></p>
<p>Various spot fine &#8211; <a href="http://www.bangaloretrafficpolice.gov.in/index.php?option=com_content&amp;view=article&amp;id=77&amp;btp=77" target="_blank">List of Traffic offences, section of law and fine amount</a></p>
<p>Traffic Provisions &#8211; <a href="http://www.bangaloretrafficpolice.gov.in/index.php?option=com_content&amp;view=article&amp;id=84&amp;btp=84" target="_blank">Traffic Do&#8217;s &amp; Don&#8217;ts</a></p>
<p>Traffic Road Markings &#8211; <a href="http://www.bangaloretrafficpolice.gov.in/index.php?option=com_content&amp;view=article&amp;id=79&amp;btp=79" target="_blank">Traffic Do&#8217;s &amp; Don&#8217;ts</a></p>
<p>Traffic Rules and Regulations &#8211; <a href="http://www.bangaloretrafficpolice.gov.in/index.php?option=com_content&amp;view=article&amp;id=82&amp;btp=82" target="_blank">Traffic Do&#8217;s &amp; Don&#8217;ts</a></p>
<p>Traffic Lights &#8211; <a href="http://www.bangaloretrafficpolice.gov.in/index.php?option=com_content&amp;view=article&amp;id=83&amp;btp=83" target="_blank">Traffic Do&#8217;s &amp; Don&#8217;ts</a></p>
<p>Traffic Advice &#8211; <a href="http://www.bangaloretrafficpolice.gov.in/index.php?option=com_content&amp;view=article&amp;id=80&amp;btp=80" target="_blank">Traffic Do&#8217;s &amp; Don&#8217;ts</a></p>
<p>Tips on Good Driving &#8211; <a href="http://www.bangaloretrafficpolice.gov.in/index.php?option=com_content&amp;view=article&amp;id=81&amp;btp=81" target="_blank">Traffic Do&#8217;s &amp; Don&#8217;ts</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/04/bangalore-city-traffic-police/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Solve the Rubik&#8217;s Cube</title>
		<link>http://blog.adityon.com/2010/02/how-to-solve-the-rubiks-cube/</link>
		<comments>http://blog.adityon.com/2010/02/how-to-solve-the-rubiks-cube/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 07:35:16 +0000</pubDate>
		<dc:creator>Keshav Shetty</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[Society]]></category>
		<category><![CDATA[How to Solve the Rubik's Cube]]></category>

		<guid isPermaLink="false">http://blog.adityon.com/2010/02/how-to-solve-the-rubiks-cube/</guid>
		<description><![CDATA[[This is extended article with step 8 of original article 7 step solution to Solve the Rubik's Cube]
Step (8) is my findings.
You can download pdf version here
Introduction
The Rubik&#8217;s Cube (also spelled Rubick&#8217;s Cube, or Rubix Cube) is one of the most puzzling toys of all time. It ranks as one of the most cherished 80s icons and
few people have ever claimed to solve it on their own. In fact, most solutions have come from mathematicians using group theory. But it is solvable. Trial and
error will get you nowhere, so below ...]]></description>
			<content:encoded><![CDATA[<p>[This is extended article with step 8 of original article <a href="http://www.nikdaum.com/artnew/a79.htm" target="_blank">7 step solution to Solve the Rubik's Cube</a>]</p>
<p>Step (8) is my findings.</p>
<p>You can download <a href="http://blog.adityon.com/wp-content/uploads/2010/02/Rubik.pdf" target="_blank">pdf version here</a></p>
<p>Introduction</p>
<p>The Rubik&#8217;s Cube (also spelled Rubick&#8217;s Cube, or Rubix Cube) is one of the most puzzling toys of all time. It ranks as one of the most cherished 80s icons and</p>
<p>few people have ever claimed to solve it on their own. In fact, most solutions have come from mathematicians using group theory. But it is solvable. Trial and</p>
<p>error will get you nowhere, so below is a 7 step process that will get you to sweet, sweet resolution.</p>
<p>Using this method, even an idiot can solve a cube in seven basic steps. Note the diagram below. Each face of the cube is assigned a letter. During the following</p>
<p>steps, specific faces require a sequence of twists (or quarter turns). The letter &#8220;i&#8221; means inverse, or counter-clockwise twists. For example, in the following</p>
<p>sequence</p>
<p><br/>Ri U Fi Ui, you would rotate the Right face counterclockwise a quarter turn, the Upper face clockwise a quarter turn, the Front face</p>
<p>counterclockwise a quarter turn, and the Upper face counterclockwise a quarter turn. Before you start each move, make sure your thumbs are on the F side of</p>
<p>the cube to ensure consistent orientation for all the sequences. To turn a face in the right direction, imagine that you are facing that side of the cube. If you mess</p>
<p>up along the way, just restart from Step 1. Let&#8217;s begin.</p>
<p>STEP 1: Solve the Upper Green Cross</p>
<p>To solve the green cross, you have to solve the green edge pieces on their own. This should be easy to figure out on your own. Should you ever have an edge piece</p>
<p>in the correct place but flipped the wrong way, use this step to flip it without affecting the other three green edges: Hold the cube with the piece in the</p>
<p>upper-right position as in the diagram, and do the sequence Ri U Fi Ui. The edge piece should now be solved, and you can work the next edge piece until the</p>
<p>cube looks like the right diagram below.</p>
<p>STEP 2: Solve the Green Corners</p>
<p>Find the corner piece in the bottom layer that belongs on top. Turn the bottom layer until the piece is directly below its home in the top layer. Hold the cube with</p>
<p>the piece on the lower-front-right and its home at the upper-front-right and then do the sequence Ri Di R D 1,3, or 5 times until that corner is solved. If you find</p>
<p>a corner piece that&#8217;s already in the top layer but the wrong spot or flipped the wrong way, hold the cube with the piece in the upper-front-right position and do Ri</p>
<p>Di R D once. Now the piece is on the bottom and ready to be solved using the Ri Di R D sequence.</p>
<p>STEP 3: Solve the Middle Layer Edges</p>
<p>Flip the cube so green is on the bottom. Find the yellow-red edge piece. If it&#8217;s on top, turn it so it matches one of the diagrams below. Then do the corresponding</p>
<p>sequence to solve it. If the red-yellow edge is somewhere in the middle layer but it&#8217;s in the wrong place or flipped the wrong way, hold the cube so the edge is in</p>
<p>the front-right position and do either sequence once: U R Ui Ri Ui Fi U F or Ui Fi U F U R Ui Ri (This may require that you rotate the cube to a new face).</p>
<p>After the move, the piece is in the top layer and you can solve it as described above. Repeat for the other 3 middle-layer edges.</p>
<p>STEP 4: Solve the Upper Blue Cross</p>
<p>Turn the top layer until the edges match one of the diagrams. Repeat the following sequence as many times as it takes to get a blue cross: F R U Ri Ui Fi.</p>
<p>STEP 5: Solve to Top Edges</p>
<p>Hold the cube with red in front. Turn the top layer until the red and blue edge piece is solved as in the diagram, and then repeat the following sequence until the</p>
<p>yellow and blue edge piece is also solved on the right side: R U Ri U R U U Ri. Now turn the whole cube so that white is the front face. If the top white edge</p>
<p>isn&#8217;t solved, do the sequence again followed by and extra U.</p>
<p>STEP 6: Solve the Top Corners</p>
<p>Find a corner piece that&#8217;s in the right place and hold the cube with that piece above your right thumb. Don&#8217;t turn the top layer at all, as it well mess up all the</p>
<p>effort from Step 5. Do the following sequence once or twice to put the rest of the corners into place: U R Ui Li U Ri Ui L. If you can&#8217;t find a corner piece in the</p>
<p>right place, just do the sequence once before you start.</p>
<p>STEP 7: Solve the Top Corners (Again)</p>
<p>You&#8217;re almost done, you beautiful mind, you. Hold the cube with the red in front. Keep turning the top layer until the upper-front-right-corner needs to be flipped</p>
<p>to have blue on top like in the diagram. Do the sequence Ri Di R D 2 or 4 times to get blue into position. The cube will get scrambled in the process, but don&#8217;t</p>
<p>worry. With red still in front, keep turning the top layer and repeating the sequence to flip the upper-right-corner pieces.</p>
<p>STEP 8: Solve the Top Corners (Again &#8211; Special case)</p>
<p>Try this if you land up with side two corner piece in right direction, but wrong position. Check the &#8216;before&#8217; image</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adityon.com/2010/02/how-to-solve-the-rubiks-cube/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

