<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-31958468</id><updated>2012-02-12T12:24:21.193+01:00</updated><category term='programación'/><category term='game'/><category term='juego'/><category term='programming'/><title type='text'>Hardprogrammer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-31958468.post-4406751121424190509</id><published>2011-06-29T20:06:00.000+02:00</published><updated>2011-06-29T20:06:38.538+02:00</updated><title type='text'>J2ME - My students 2010/2011</title><content type='html'>These are the games/technical demos developed by my students from the &lt;a href="http://www.uem.es/postgrado/master-en-diseo-y-programacion-de-videojuegos-v-edicion?aid=978043378&amp;amp;gclid=CI6m85vW26kCFYQLfAodE0z5lw"&gt;Master in Videogame Programming by the UEM&lt;/a&gt;. Greate job :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tunnels&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;José   María Sánchez Rodríguez&lt;/li&gt;&lt;li&gt;Diana Villa Bokov&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/2C_M-BYSjBo/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2C_M-BYSjBo?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/2C_M-BYSjBo?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Ranita&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Carlos   Trillo Suarez&lt;/li&gt;&lt;li&gt;Noe Tortosa&lt;/li&gt;&lt;li&gt;Raquel García&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/X2vob3Vwafk/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/X2vob3Vwafk?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/X2vob3Vwafk?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Kill Willy&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sergio   Gómez Silván&lt;/li&gt;&lt;li&gt;Javier Hernández Sanchiz&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/YZWwhgXpkV4/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YZWwhgXpkV4?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/YZWwhgXpkV4?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Milky Way&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Iñaki   Simón Tercero&lt;/li&gt;&lt;li&gt;Rubén Ortega Vera&lt;/li&gt;&lt;li&gt;Miguel López Ramírez&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/E8ZsTLhmFDw/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/E8ZsTLhmFDw?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/E8ZsTLhmFDw?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Angry Pigs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Asier   Pastor&lt;/li&gt;&lt;li&gt;Noe Tortosa&lt;/li&gt;&lt;li&gt;Daniel Sánchez&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/uad2IHMQVzw/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uad2IHMQVzw?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/uad2IHMQVzw?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Cajas&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tomás   Alberto Pedrajas Ferrer.&lt;/li&gt;&lt;li&gt;Guillermo Pérez-Tomé Estévez.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/zKp8lcevwOE/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zKp8lcevwOE?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/zKp8lcevwOE?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;River Raid&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Yago   Fernández-Miranda Mondelo&lt;/li&gt;&lt;li&gt;Leopoldo Ríos&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/UdsUHXZf3N4/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UdsUHXZf3N4?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/UdsUHXZf3N4?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;You Can Save Carmine&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Daniel   Elrio Lopez&lt;/li&gt;&lt;li&gt;Manuel Lorite Fernandez&lt;/li&gt;&lt;li&gt;Mario Quiros Nuñez&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/mZzoyRdlKoI/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mZzoyRdlKoI?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/mZzoyRdlKoI?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Space Diver&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Myself :)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/YHur6tNNcJ0/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YHur6tNNcJ0?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/YHur6tNNcJ0?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-4406751121424190509?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/4406751121424190509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=4406751121424190509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/4406751121424190509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/4406751121424190509'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2011/06/j2me-my-students-20102011.html' title='J2ME - My students 2010/2011'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-8568830106704069448</id><published>2011-01-31T10:31:00.011+01:00</published><updated>2011-01-31T16:40:26.240+01:00</updated><title type='text'>Google Wave to Line</title><content type='html'>I had an idea for a software development web-based of an application to manage bullets of text with version control. For example, this application could be used as:&lt;div&gt;&lt;ul&gt;&lt;li&gt;TODO list&lt;/li&gt;&lt;li&gt;SCRUM backlog&lt;/li&gt;&lt;li&gt;Software release notes&lt;/li&gt;&lt;li&gt;Brainstorming board&lt;/li&gt;&lt;li&gt;Event organization&lt;/li&gt;&lt;li&gt;Task tracking&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;As far as the idea was maturing, I realised that most of the functionality was already implemented by &lt;a href="https://wave.google.com/wave"&gt;Google Wave&lt;/a&gt;, but some details. So, instead of starting a new project, I decided to share the new features I would add to Google Wave in order to get feedback and perhaps I could get Google to include this features in next Google Wave releases.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;Why Line?&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The name comes from the idea of treating each input as a line in the timeline. Each line changes in the time. The changes are tracked, storing when a line was changed and what the change was.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;1. Line states&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;Each line would have an state for their content:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;Approved: the content of the line is considered valid.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;Draft: the content of the line is tentative.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;Active / inactive&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;Deleted&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;2. Line reordering&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lines should be able to be reordered. The user must be able to drag and drop one line and move it up/down in the list of lines. This way, we can consider a wave as a list of lines ordered by importance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;3. Line survey&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A user could open a proposal of different contents for a line. The line would pass to draft state. The users joined to that wave would be able to vote for any of the proposed options. At the end of the survey, the line will have the value of the most voted option.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" &gt;4. Line discussion&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Similar to surveys, the line would pass to draft state. In this case, a forum will be opened where any user joined to the wave could leave an opinion. When an agreement is reached, a user redact the content of the line, the discussion would be closed and the line turns to approved state.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;5. Snapshot&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An instant in the time such as a transverse cut in the time line. An snapshot defines a photo of the lines in the moment the snapshot is taken. An snapshot would have to be defined by a name. Only approved and active lines would be considered part of the snapshot. This way, we can define easily release notes for a software development.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;6. Line split / join&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One line could be splitted in several different. For example, in a brainstorming, an idea could be separated in other smaller.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Several lines are joined in one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" &gt;7. Mode timeline&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It would be the way to review the tracking of changes. This mode would be very visual. This view would show each line as that, a line in the time. The timeline would have a zoom in/out in the time scale (from minutes to months or years). Everything would be shown: surveys, discussions, snapshots, splits, joins, states.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" &gt;Feedback&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What do you think?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-8568830106704069448?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/8568830106704069448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=8568830106704069448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/8568830106704069448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/8568830106704069448'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2011/01/google-wave-to-line.html' title='Google Wave to Line'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-3985391708499236975</id><published>2010-12-12T22:03:00.005+01:00</published><updated>2010-12-12T22:14:57.856+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>OpenGL, camera 3 levels of freedom</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;div&gt;This is an implementation using quaterniones of a world with objects with 3 levels of freedom.&lt;/div&gt;&lt;div&gt;Download it at this &lt;a href="https://sites.google.com/site/ljlopezoldweb/rep-1/WinSIM.zip?attredirects=0&amp;amp;d=1"&gt;link&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6u1zQ34V51A/TQU7MGaZ10I/AAAAAAAAAOY/37bU-aDcx18/s1600/simulator.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://1.bp.blogspot.com/_6u1zQ34V51A/TQU7MGaZ10I/AAAAAAAAAOY/37bU-aDcx18/s320/simulator.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5549907194869831490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Camera&lt;/b&gt;:&lt;/div&gt;&lt;div&gt; Up: I&lt;/div&gt;&lt;div&gt; Down: K&lt;/div&gt;&lt;div&gt; Left: J&lt;/div&gt;&lt;div&gt; Right: L&lt;/div&gt;&lt;div&gt; Backward: H&lt;/div&gt;&lt;div&gt; Forwad: Y&lt;/div&gt;&lt;div&gt; Speed+: T&lt;/div&gt;&lt;div&gt; Speed-: G&lt;/div&gt;&lt;div&gt; Pitch right: D&lt;/div&gt;&lt;div&gt; Pitch left: A&lt;/div&gt;&lt;div&gt; Yaw up: W&lt;/div&gt;&lt;div&gt; Yaw down: S&lt;/div&gt;&lt;div&gt; Roll right: X&lt;/div&gt;&lt;div&gt; Roll left: Y  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Triangle&lt;/b&gt;:&lt;/div&gt;&lt;div&gt; Speed+: Arrow up&lt;/div&gt;&lt;div&gt; Speed-: Arrow down&lt;/div&gt;&lt;div&gt; Pitch right: Arrow right&lt;/div&gt;&lt;div&gt; Pitch left: Arrow left&lt;/div&gt;&lt;div&gt; Yaw up: N&lt;/div&gt;&lt;div&gt; Yaw down: B&lt;/div&gt;&lt;div&gt; Roll right: V&lt;/div&gt;&lt;div&gt; Roll left: C&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;!--English text--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-3985391708499236975?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/3985391708499236975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=3985391708499236975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/3985391708499236975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/3985391708499236975'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2010/12/opengl-camera-3-levels-of-freedom.html' title='OpenGL, camera 3 levels of freedom'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6u1zQ34V51A/TQU7MGaZ10I/AAAAAAAAAOY/37bU-aDcx18/s72-c/simulator.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-874555303270424966</id><published>2010-12-12T20:34:00.014+01:00</published><updated>2011-01-31T10:31:03.298+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Racing 4k --&gt; 4k Grand Prix Simulator</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.java4k.com/screenshots/3c3458377dbeb6e0911eb9043482381e.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 100px; height: 100px;" src="http://www.java4k.com/screenshots/3c3458377dbeb6e0911eb9043482381e.bmp" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--English text--&gt;&lt;div&gt;Version 0.0: Basic&lt;/div&gt;&lt;div&gt;Version 0.1: Added splines.&lt;/div&gt;&lt;div&gt;Version 0.2: Faked physics. Marks on the ground.&lt;/div&gt;&lt;div&gt;Version 0.3 (current): AI. New Circuits.&lt;/div&gt;&lt;div&gt;Version 1.0: 4k version. Some bugs fixed. Graphical details. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Inspired by my old &lt;a href="http://www.retrogamer.net/show_image.php?imageID=2109"&gt;Grand Prix Simulator&lt;/a&gt; for my Amstrad CPC 646.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Accelerate&lt;/b&gt;: Up arrow&lt;/div&gt;&lt;div&gt;&lt;b&gt;Break&lt;/b&gt;: Down arrow&lt;/div&gt;&lt;div&gt;&lt;b&gt;Turn righ&lt;/b&gt;t: Right arrow&lt;/div&gt;&lt;div&gt;&lt;b&gt;Turn left&lt;/b&gt;: Left arrow&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Click&lt;/b&gt;: Start/Restart&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1-3&lt;/b&gt;: Select circuit&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Play it at &lt;a href="http://www.java4k.com/index.php?action=games&amp;amp;method=view&amp;amp;gid=313"&gt;2011 Java4k contest&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.java4k.com/index.php?action=games&amp;amp;method=view&amp;amp;gid=313"&gt;&lt;img src="http://1.bp.blogspot.com/_6u1zQ34V51A/TUaAtoAe5AI/AAAAAAAAAOo/ADAaPdXOCtM/s320/4kgp_3.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" border="0" alt="" id="BLOGGER_PHOTO_ID_5568279510612108290" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;!--center&gt;&lt;applet code="R.class" width="800" height="600" alt="By Luis Javier López Arredondo" archive="https://sites.google.com/site/ljlopezoldweb/rep-1/racing.jar"&gt;&lt;/applet&gt;&lt;/center--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-874555303270424966?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/874555303270424966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=874555303270424966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/874555303270424966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/874555303270424966'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2010/12/racing-4k.html' title='Racing 4k --&gt; 4k Grand Prix Simulator'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6u1zQ34V51A/TUaAtoAe5AI/AAAAAAAAAOo/ADAaPdXOCtM/s72-c/4kgp_3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-7232793713781424750</id><published>2010-08-20T13:37:00.007+02:00</published><updated>2010-09-17T16:22:10.874+02:00</updated><title type='text'>uCertify review</title><content type='html'>I was contacted to make a review for the software provided by &lt;a href="https://www.ucertify.com/"&gt;uCertify&lt;/a&gt; to prepare many IT certifications. I've got a full version for the Sun certification CX310-065 SCJP 6.0.&lt;br /&gt;&lt;br /&gt;First of all, you have to know that this software is a support for people who already know something about Java. If you are a complete novice, start studying the basics, and then prepare for the certification.&lt;br /&gt;&lt;br /&gt;For me, the most helpful feature I've found have been the teorical content assoccated to the exam objectives. It wasn't easy to get to it, but when I did, I saw the light. This is perfect because you have all the notes in a printable interface and they are associated with concret exam objectives. To get to this feature, you have to click "Exam objectives", where you'll find the official list of them; there, click the top-right button "Go to objectives with notes" to expand all the notes by objective. I would add the feature of remarking important parts of the notes with a highligther.&lt;br /&gt;&lt;br /&gt;If you don't like to study the notes because it is boring and not so practical, you can go through the tests in "Learn Mode" that allows you to make visible the question theorical note as feedbak while you are making the test. The program allows you to create custom test, feature I would add the option to create tests based on the dificulty of the questions. Perhaps this can be supplied by the adaptative tests, but I feel I would like to have a bit more control in the level of the questions I go through, to manage my study pace.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can keep track of all your progress in the tests. I would add tracking on the time you spend studying the notes, with an estimation of the effort they needs depending on the difficulty, to evaluate my dedication to that subject.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The sofware is pretty intuitive. You will get used to it quickly. The only feature I couldn't find easily and I couldn't evaluate was the option "Discuss It". This feature must allow us to leave comments on test questions or on notes, share them with other users and read what other users had typed. I haven't found any comment from others, so I suppose this functionality is not used very much. As proposal, I would make an study of the real use of this feature; if it us widely used, I leave it as it is now, else, I would remove it and I would replace it by a standard centralized forum, instead of linking comments to specific contents. Please, if anybody finds a comment and finds it useful, please, share with us.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, download the trial version an evaluate it by yourself. I think it could provide you with useful content and an way to auto-evaluate your progress to your certificacion. If you have interest in any specific point I could help with, don't hesitate to leave a comment.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-7232793713781424750?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/7232793713781424750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=7232793713781424750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/7232793713781424750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/7232793713781424750'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2010/08/ucertify-review.html' title='uCertify review'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-471115699426792810</id><published>2009-07-20T23:51:00.006+02:00</published><updated>2009-07-21T21:08:32.437+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>J2ME - My student projects</title><content type='html'>These are the videos from the project that my students did. They belong to the course 08/09 of the &lt;a href="http://www.uem.es/postgrado/master-en-diseo-y-programacion-de-videojuegos-v-edicion"&gt;Master in Videogames of the European University of Madrid&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks all my student for the interest and the effort. The merit is theirs, I pushed them a bit :).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;San Fermín&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://creandovicio.blogspot.com/"&gt;&lt;span style="font-style: italic;"&gt;Santiago Revelo&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/u_02ZsDf8ck&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/u_02ZsDf8ck&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Crisis behind&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Cipri Sanchez Herraiz &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qx-boHcbGQQ&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/qx-boHcbGQQ&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Zelda&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Jorge Álvarez&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://bahamut2.wordpress.com/"&gt;Alejandro Rodríguez&lt;/a&gt; (&lt;a href="http://www.web-tech.es/alex"&gt;portfolio&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://shatxak.wordpress.com/"&gt;&lt;span style="font-size:85%;"&gt;Yuri Montero&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blanco85.blogspot.com"&gt;&lt;span style="font-size:85%;"&gt;Rubén Blanco&lt;/span&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/349JqxCtw8U&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/349JqxCtw8U&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pacoman2&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Daniel Hernandez Zafra &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FViNGhk6KTM&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/FViNGhk6KTM&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Aviones&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://kabali1983.blogspot.com/"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;a&gt;Alvaro Ruiz Ray&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/b_YB685vuew&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/b_YB685vuew&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pulso&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Cipri Sanchez Herraiz&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://alvaro-canizares.blogspot.com/"&gt;&lt;span style="font-size:85%;"&gt;Alvaro Cañizares&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_PQpLEwWvwU&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/_PQpLEwWvwU&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Arkanoid&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Carlos Casero&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Laura Gil Sanz&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DGK9jo3vV3U&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/DGK9jo3vV3U&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Xax&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Diego Lizarazo &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-x8CiN-R8jk&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/-x8CiN-R8jk&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-471115699426792810?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/471115699426792810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=471115699426792810' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/471115699426792810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/471115699426792810'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2009/07/j2me-my-student-projects.html' title='J2ME - My student projects'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-6226817769534727166</id><published>2007-11-07T20:50:00.000+01:00</published><updated>2007-11-07T20:58:02.833+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Perl: normalizador de ficheros / files normalizer</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt; &lt;strong&gt;&lt;a href="http://es.geocities.com/luisja80/esp/filenormalizer.htm" target="_blank"&gt;Perl, normalizador de ficheros&lt;/a&gt;&lt;/strong&gt;: Un script en Perl para normalizar el formato del contenido de ficheros de texto: saltos de línea (windows/unix), tabulaciones, espacios al final de línea y saltos de línea al final de fichero.&lt;br&gt;(&lt;a href="http://es.geocities.com/luisja80/esp/filenormalizer.htm" target="_blank"&gt;más&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt; &lt;strong&gt;&lt;a href="http://es.geocities.com/luisja80/eng/filenormalizer.htm" target="_blank"&gt;Perl, files normalizer&lt;/a&gt;&lt;/strong&gt;: A Perl script for normalization the format of the content of text files: new lines (windows/unix), tabulations, ending line white spaces and ending file new lines.&lt;br&gt;(&lt;a href="http://es.geocities.com/luisja80/eng/filenormalizer.htm" target="_blank"&gt;read more&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-6226817769534727166?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/6226817769534727166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=6226817769534727166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/6226817769534727166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/6226817769534727166'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2007/11/perl-normalizador-de-ficheros-files.html' title='Perl: normalizador de ficheros / files normalizer'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-2995115346148948819</id><published>2007-06-25T00:38:00.001+02:00</published><updated>2010-06-13T15:27:16.103+02:00</updated><title type='text'>Hanoi Towers 64 Gadget</title><content type='html'>&lt;script src="http://gmodules.com/ig/ifr?url=http://sites.google.com/site/ljlopezoldweb/rep-1/gd_hanoi.xml&amp;amp;up_width=320&amp;amp;up_height=150&amp;amp;up_disks=7&amp;amp;up_disk_height=5&amp;amp;up_peg_base_height=10&amp;amp;up_interval=500&amp;amp;up_start_date=&amp;amp;up_start_hour=&amp;amp;up_autoloop=true&amp;amp;up_cbackground=dFFFFFF&amp;amp;up_cpeg=d0000FF&amp;amp;up_color1=dFF0000&amp;amp;up_color2=dFFFF00&amp;amp;up_ctext=d000000&amp;amp;up_user_color1=&amp;amp;up_user_color2=&amp;amp;synd=open&amp;amp;w=320&amp;amp;h=150&amp;amp;title=__MSG_towers_hanoi__&amp;amp;lang=es&amp;amp;country=ALL&amp;amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;amp;output=js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;a href="http://fusion.google.com/add?moduleurl=http://sites.google.com/site/ljlopezoldweb/rep-1/gd_hanoi.xml"&gt;&lt;img src="http://buttons.googlesyndication.com/fusion/add.gif" width="104" height="17" border="0" alt="Add to Google"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Adaptation of &lt;a href="http://hardprogrammer.blogspot.com/2007/06/torres-de-hanoi-hanoi-towers.html"&gt;Hanoi of Towers with 64 discs&lt;/a&gt; to gadget.&lt;br /&gt;&lt;br /&gt;Customizable, in elements and appearance. &lt;br /&gt;&lt;br /&gt;As a curiosity, if you set the gadtet with an interval of 989 milliseconds and 15 discs, the completion takes 9 hours, that is, the duration of a normal job day of 8 hours (plus one hour for lunch).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-2995115346148948819?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/2995115346148948819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=2995115346148948819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/2995115346148948819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/2995115346148948819'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2007/06/torres-de-hanoi-64-gadget-hanoi-towers.html' title='Hanoi Towers 64 Gadget'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-8978121977363970679</id><published>2007-06-19T00:33:00.003+02:00</published><updated>2010-06-08T19:33:08.228+02:00</updated><title type='text'>Hanoi Towers with 64 disks</title><content type='html'>There are several versions of the legend, but all of them say that the end of the world will be reached as soon as all the disks are moved from the source peg to the destination one. Then, the following Java implementation of the &lt;em&gt;Hanoi Towers&lt;/em&gt; in an applet with 64 disks can be considered a count down to the end of the world, :).&lt;br /&gt;&lt;br /&gt;The puzzle consists in moving all the disks from the source peg to the destination one. Only one disk can be moved in each movement, and a bigger disk can’t ever moved on a smaller one.&lt;br /&gt;&lt;br /&gt;The minimum number of movements needed for &lt;code&gt;n&lt;/code&gt; disks are &lt;code&gt;2&lt;sup&gt;n&lt;/sup&gt;-1&lt;/code&gt;, the, with 64 disks and moving one disk each second, the puzzle solution would last 585.442 billions years (calculus from&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Tower_of_Hanoi"&gt;Wikipedia&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;This would be the actual position of the disks if the execution would have started on 1883, when the puzzle was ivented by &lt;a targte="_blank" href="http://www.google.com/search?q=%C3%89douard+Lucas"&gt;Édouard Lucas&lt;/a&gt;.&lt;br /&gt;&lt;center&gt;&lt;br /&gt;  &lt;applet codebase="http://es.geocities.com/luisja80/applets" archive="http://sites.google.com/site/ljlopezoldweb/rep-1/hanoi64.jar" code="HanoiApplet64.class" width="350" height="315"&gt;&lt;br /&gt;   &lt;param name="cpeg" value="0000FF"&gt;&lt;br /&gt;   &lt;param name="disk_height" value="3"&gt;&lt;br /&gt;   &lt;param name="start_time" value="01/01/1883 00:00"&gt;&lt;br /&gt;   &lt;param name="color2" value="FFFF00"&gt;&lt;br /&gt;   &lt;param name="color1" value="FF0000"&gt;&lt;br /&gt;   &lt;param name="disks" value="64"&gt;&lt;br /&gt;   &lt;param name="interval" value="1000"&gt;&lt;br /&gt;  &lt;/applet&gt;&lt;br /&gt; &lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-8978121977363970679?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/8978121977363970679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=8978121977363970679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/8978121977363970679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/8978121977363970679'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2007/06/torres-de-hanoi-hanoi-towers.html' title='Hanoi Towers with 64 disks'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-6486944911325485277</id><published>2007-06-02T21:47:00.002+02:00</published><updated>2010-06-13T14:11:40.384+02:00</updated><title type='text'>Oh Mummy gadget</title><content type='html'>&lt;script src="http://gmodules.com/ig/ifr?url=http://sites.google.com/site/ljlopezoldweb/rep-1/ohmummy.xml&amp;amp;synd=open&amp;amp;w=320&amp;amp;h=235&amp;amp;title=Oh+Mummy&amp;amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;amp;output=js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fusion.google.com/add?moduleurl=http://sites.google.com/site/ljlopezoldweb/rep-1/ohmummy.xml"&gt;&lt;img src="http://buttons.googlesyndication.com/fusion/add.gif" width="104" height="17" border="0" alt="Add to Google"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Adaptation of &lt;a href="http://hardprogrammer.blogspot.com/2007/02/oh-mummy.html"&gt;Oh Mummy!&lt;/a&gt; to gadget.&lt;br /&gt;&lt;br /&gt;The classic &lt;strong&gt;Oh Mummy&lt;/strong&gt; in a gadget. Use the arrow keys for walking all around the blocks until finding the 2 green blocks and then pass to the next level coming back to the initial position. Add it easily to your iGoogle with the &lt;a href="http://fusion.google.com/add?moduleurl=http://sites.google.com/site/ljlopezoldweb/rep-1/ohmummy.xml"&gt;Add to Google.&lt;/a&gt; button.&lt;br /&gt;&lt;br /&gt;It has been changed from the &lt;a href="http://hardprogrammer.blogspot.com/2007/02/oh-mummy.html"&gt;original one&lt;/a&gt;. The mummies AI and velocities have been addapted. The game is divided in phases, and each phase consists of 5 miniphases; any time you continue the game, you will start from the beginning of the phase you are.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-6486944911325485277?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/6486944911325485277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=6486944911325485277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/6486944911325485277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/6486944911325485277'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2007/06/oh-mummy-gadget.html' title='Oh Mummy gadget'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-1895348743614223933</id><published>2007-05-23T23:52:00.004+02:00</published><updated>2010-07-27T17:47:33.963+02:00</updated><title type='text'>Subset</title><content type='html'>&lt;p&gt;Given a set S, what are their &lt;em&gt;subset&lt;/em&gt;?, what are their &lt;em&gt;k-subset&lt;/em&gt;?. I’ve compiled several Java methods which iterate over these subset. Due to its low efficiency, this technique only should be used in brute force algorithms.&lt;/p&gt; &lt;!-- Entradilla --&gt;   &lt;!-- Párrafo --&gt;&lt;p class="heading"&gt;&lt;em&gt;&lt;b&gt;Contents&lt;/b&gt;&lt;/em&gt;&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#notacion"&gt;Notation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#subset"&gt;All the subset&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#ksubset"&gt;All the k-subset&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#auxiliar"&gt;Auxiliar methods&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#referencias"&gt;References&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Notation&lt;/b&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p&gt;&lt;code&gt;S&lt;/code&gt; is the set with elements &lt;code&gt;{n&lt;sub&gt;1&lt;/sub&gt;, n&lt;sub&gt;2&lt;/sub&gt;, n&lt;sub&gt;3&lt;/sub&gt;, ... n&lt;sub&gt;n&lt;/sub&gt;}&lt;/code&gt;. The number of elements of &lt;code&gt;S&lt;/code&gt; is &lt;code&gt;|S|=n&lt;/code&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;K&lt;/code&gt; is the subset of &lt;code&gt;S&lt;/code&gt; &lt;code&gt;{k&lt;sub&gt;1&lt;/sub&gt;, k&lt;sub&gt;2&lt;/sub&gt;, k&lt;sub&gt;3&lt;/sub&gt;, ... k&lt;sub&gt;k&lt;/sub&gt;}&lt;/code&gt;, where &lt;code&gt;k&lt;sub&gt;i&lt;/sub&gt;&lt;/code&gt; belongs to &lt;code&gt;S&lt;/code&gt; and &lt;code&gt;k&lt;sub&gt;i&lt;/sub&gt;&lt;/code&gt; doesn’t represent the same element  &lt;code&gt;S&lt;/code&gt; that &lt;code&gt;k&lt;sub&gt;j&lt;/sub&gt;&lt;/code&gt; does, with &lt;code&gt;1&amp;lt;=i,j&amp;lt;=k&lt;/code&gt;. The number of elements of &lt;code&gt;K&lt;/code&gt; is &lt;code&gt;|K|=k&lt;/code&gt; and takes values from 0 to n.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The subset of  &lt;code&gt;S&lt;/code&gt; will be represented byt set of n elements of {0, 1}, where 1 means belonging and 0 means not belonging. The number of elements of the suset &lt;code&gt;|K|=k&lt;/code&gt; is the number of 1's that it has.&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;   &lt;!-- Párrafo --&gt;&lt;p&gt;(&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#arriba"&gt;contents&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p class="titulo" id="subset"&gt;All the subset&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt; &lt;!-- Párrafo --&gt;&lt;p&gt;All the subset of  &lt;code&gt;S&lt;/code&gt; have subset from 0 elements to n. There are &lt;strong&gt;2&lt;sup&gt;n&lt;/sup&gt;&lt;/strong&gt; of subset.&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Código --&gt;&lt;p&gt;All the subset.&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;|S|=3&lt;br /&gt;&lt;br /&gt;K&lt;sub&gt;0&lt;/sub&gt;={0,0,0}&lt;br /&gt;K&lt;sub&gt;1&lt;/sub&gt;={0,0,1}&lt;br /&gt;K&lt;sub&gt;2&lt;/sub&gt;={0,1,0}&lt;br /&gt;K&lt;sub&gt;3&lt;/sub&gt;={0,1,1}&lt;br /&gt;K&lt;sub&gt;4&lt;/sub&gt;={1,0,0}&lt;br /&gt;K&lt;sub&gt;5&lt;/sub&gt;={1,0,1}&lt;br /&gt;K&lt;sub&gt;6&lt;/sub&gt;={1,1,0}&lt;br /&gt;K&lt;sub&gt;7&lt;/sub&gt;={1,1,1}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;allSubsetBit(int) (iterative)&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;/**&lt;br /&gt;* Iterates over all the subset of a given set of n elements.&lt;br /&gt;*&lt;br /&gt;* The maximun number of elements of the given set is 63.&lt;br /&gt;* Subset are represented at bit level, 1 means belonging,&lt;br /&gt;* and 0 not belonging.&lt;br /&gt;* @param n Number of elements of the set, 0&lt;=n&lt;=63. &lt;br /&gt;*/ &lt;br /&gt;public static void allSubsetBit(int n) {&lt;br /&gt;  for (long i = 0, lim = 1L &amp;lt;&amp;lt; n; i &amp;lt; lim; ++i) {&lt;br /&gt;    printSubset(n, i);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;!-- Código --&gt;&lt;!-- Código --&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;allSubsetArrayIterative(int) (iterative)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;/**&lt;br /&gt;* Iterates over all the subset of a given set of n elements.&lt;br /&gt;*&lt;br /&gt;* The size of the set doesn't have any restriction, but&lt;br /&gt;* the memory heap size.&lt;br /&gt;* The subset is represented by an array of booleans, where&lt;br /&gt;* true means belonging, and false means not belonging.&lt;br /&gt;* @param n Number of elements of the set, n&amp;lt;=0.&lt;br /&gt;*/&lt;br /&gt;public static void allSubsetArrayIterative(int n)  {&lt;br /&gt;&lt;br /&gt;boolean[] subset = new boolean[n];&lt;br /&gt;&lt;br /&gt;while (true) {&lt;br /&gt;&lt;br /&gt;  printSubset(n, subset);&lt;br /&gt;&lt;br /&gt;  // Add 1&lt;br /&gt;  int i=0; &lt;br /&gt;  do {&lt;br /&gt;    subset[i] = !subset[i]; &lt;br /&gt;    ++i;         &lt;br /&gt;  } while (i&amp;lt;n &amp;amp;&amp;amp; !subset[i-1]);&lt;br /&gt;&lt;br /&gt;  if (i&gt;=n &amp;amp;&amp;amp; !subset[i-1]) break;   &lt;br /&gt;}  &lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;!-- Código --&gt;&lt;!-- Código --&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;allSubsetArrayRecursive(int) (recursive)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;/**&lt;br /&gt;* Iterates over all the subset of a given set of n elements,&lt;br /&gt;* recursive version.&lt;br /&gt;*&lt;br /&gt;* The size of the set doesn't have any restriction, but&lt;br /&gt;* the memory heap size.&lt;br /&gt;* The subset is represented by an array of booleans, where&lt;br /&gt;* true means belonging, and false means not belonging.&lt;br /&gt;* @param n Number of elements of the set, n&amp;lt;=0.&lt;br /&gt;*/&lt;br /&gt;public static void allSubsetArrayRecursive(int n) {&lt;br /&gt;  boolean[] subset = new boolean[n];&lt;br /&gt;  allSubsetArrayRecursion(n, subset, 0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static void allSubsetArrayRecursion(int n, boolean[] subset, int i) {&lt;br /&gt;&lt;br /&gt;  if (i &lt; n) {&lt;br /&gt;    subset[i] = true;&lt;br /&gt;    allSubsetArrayRecursion(n, subset, i + 1);&lt;br /&gt;  &lt;br /&gt;    subset[i] = false;&lt;br /&gt;    allSubsetArrayRecursion(n, subset, i + 1);&lt;br /&gt;  } else {&lt;br /&gt;    printSubset(n, subset);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;!-- Código --&gt; &lt;!-- Párrafo --&gt;&lt;p&gt;&lt;br /&gt;(&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#arriba"&gt;contents&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p class="titulo" id="ksubset"&gt;&lt;br /&gt;&lt;b&gt;All the k-subset&lt;/b&gt;&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p&gt;All the subset of &lt;code&gt;S&lt;/code&gt; with k elements. The number of k-subset is:&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;p align="center"&gt;n!&lt;/p&gt;&lt;/td&gt;                   &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;|k-subset|=&lt;/td&gt;&lt;td&gt;&lt;hr size="1" noshade=""&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;                  &lt;td&gt;(n-k)!·k!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;              &lt;/td&gt;            &lt;/tr&gt;        &lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;All the k-subset.&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;|S|=5&lt;br /&gt;k=3&lt;br /&gt;&lt;br /&gt;K&lt;sub&gt;0&lt;/sub&gt;={0,0,1,1,1}&lt;br /&gt;K&lt;sub&gt;1&lt;/sub&gt;={0,1,0,1,1}&lt;br /&gt;K&lt;sub&gt;2&lt;/sub&gt;={0,1,1,0,1}&lt;br /&gt;K&lt;sub&gt;3&lt;/sub&gt;={0,1,1,1,0}&lt;br /&gt;K&lt;sub&gt;4&lt;/sub&gt;={1,0,0,1,1}&lt;br /&gt;K&lt;sub&gt;5&lt;/sub&gt;={1,0,1,0,1}&lt;br /&gt;K&lt;sub&gt;6&lt;/sub&gt;={1,0,1,1,0}&lt;br /&gt;K&lt;sub&gt;7&lt;/sub&gt;={1,1,0,0,1}&lt;br /&gt;K&lt;sub&gt;8&lt;/sub&gt;={1,1,0,1,0}&lt;br /&gt;K&lt;sub&gt;9&lt;/sub&gt;={1,1,1,0,0}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;!-- Código --&gt; &lt;!-- Párrafo --&gt;&lt;p&gt;The following code has been taken from the book &lt;a hrefe="http://www.amazon.com/Hackers-Delight-Henry-Warren-Jr/dp/0201914654" target="_blank"&gt;Hacker's Delight&lt;/a&gt; by &lt;strong&gt;Henry S. Warren Jr&lt;/strong&gt;. It is a bitwise trick for getting the next greater number than one given with the same number of 1’s in binary representation.&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;      &lt;!-- Código --&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;allSubsetKBit(int,int)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo" style="width: 841px; height: 536px"&gt;&lt;pre&gt;/**&lt;br /&gt;* Iterates over all the subset of k elements in a set of n&lt;br /&gt;* elements.&lt;br /&gt;*&lt;br /&gt;* The maximun number of elements of the given set is 63.&lt;br /&gt;* k must be 0&amp;lt;k&amp;lt;=n.&lt;br /&gt;* Subset are represented at bit level, 1 means belonging,&lt;br /&gt;* and 0 not belonging.&lt;br /&gt;* REF: Warren, Hackers Delight, p.14.&lt;br /&gt;* @param n Number of elements of the set, 0&amp;lt;=n&amp;lt;=63.&lt;br /&gt;* @param k Number of element of the subset, 0&amp;lt;k&amp;lt;=n.&lt;br /&gt;*/&lt;br /&gt;public static void allSubsetKBit(int n, int k) {&lt;br /&gt;&lt;br /&gt;long subset = 0;&lt;br /&gt;// Set 1 k first bits&lt;br /&gt;for (int i=0; i&amp;lt;k; ++i) {&lt;br /&gt;  subset |= 1&amp;lt;&amp;lt;i;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;long limite = 1&amp;lt;&amp;lt;n;&lt;br /&gt;&lt;br /&gt;long smallest, ripple, ones;&lt;br /&gt;while (subset &amp;lt; limite) {&lt;br /&gt;  printSubset(n, subset);&lt;br /&gt;   &lt;br /&gt;  // From Hacker's Delight&lt;br /&gt;  // Next greater number with the same number of 1's.&lt;br /&gt;  smallest = subset &amp;amp; -subset;&lt;br /&gt;  ripple = subset + smallest;&lt;br /&gt;  ones = subset ^ ripple;&lt;br /&gt;  ones = (ones&gt;&gt;2)/smallest;&lt;br /&gt;  subset = ripple | ones;&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt; &lt;!-- Código --&gt;  &lt;!-- Código --&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;allSubsetKArrayIterative(int,int)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;/**&lt;br /&gt;* Iterates over all the subset of a given set of n elements,&lt;br /&gt;* iterative version.&lt;br /&gt;*&lt;br /&gt;* The size of the set doesn't have any restriction, but&lt;br /&gt;* the memory heap size.&lt;br /&gt;* k must be 0&amp;lt;k&amp;lt;=n.&lt;br /&gt;* The subset is represented by an array of booleans, where&lt;br /&gt;* true means belonging, and false means not belonging.&lt;br /&gt;* @param n Number of elements of the set. No restrictions.&lt;br /&gt;* @param k Number of element of the subset, 0&amp;lt;=k&amp;lt;=n.&lt;br /&gt;*/&lt;br /&gt;public static void allSubsetKArrayIterative(int n, int k)  {&lt;br /&gt;boolean[] subset = new boolean[n];&lt;br /&gt;&lt;br /&gt;while (true) {&lt;br /&gt;&lt;br /&gt;  int subsetCount = 0;&lt;br /&gt;  for (int i=0; i&amp;lt;n; ++i) {&lt;br /&gt;    if (subset[i]) {&lt;br /&gt;      ++subsetCount;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  if (subsetCount==k) {&lt;br /&gt;    printSubset(n, subset);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Add 1&lt;br /&gt;  int i=0; &lt;br /&gt;  do {&lt;br /&gt;    subset[i] = !subset[i]; &lt;br /&gt;    ++i;         &lt;br /&gt;  } while (i&amp;lt;n &amp;amp;&amp;amp; !subset[i-1]);&lt;br /&gt;&lt;br /&gt;  if (i&gt;=n &amp;amp;&amp;amp; !subset[i-1]) break;   &lt;br /&gt;}  &lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;!-- Código --&gt;  &lt;!-- Código --&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;allSubsetKArrayRecursive(int,int)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;/**&lt;br /&gt;* Iterates over all the subset of a given set of n elements,&lt;br /&gt;* recursive version.&lt;br /&gt;*&lt;br /&gt;* The size of the set doesn't have any restriction, but&lt;br /&gt;* the memory heap size.&lt;br /&gt;* k must be 0&amp;lt;k&amp;lt;=n.&lt;br /&gt;* The subset is represented by an array of booleans, where&lt;br /&gt;* true means belonging, and false means not belonging.&lt;br /&gt;* @param n Number of elements of the set. No restrictions.&lt;br /&gt;* @param k Number of element of the subset, 0&amp;lt;k&amp;lt;=n.&lt;br /&gt;*/&lt;br /&gt;public static void allSubsetKArrayRecursive(int n, int k) {&lt;br /&gt;boolean[] subset = new boolean[n];&lt;br /&gt;allSubsetKArrayRecursion(n, k, subset, 0, 0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static void allSubsetKArrayRecursion(int n, int k, boolean[] subset, int subsetElements, int i) {&lt;br /&gt;&lt;br /&gt;if (i &amp;lt; n) {&lt;br /&gt;  subset[i] = true;&lt;br /&gt;  allSubsetKArrayRecursion(n, k, subset, subsetElements+1, i+1);&lt;br /&gt;&lt;br /&gt;  subset[i] = false;&lt;br /&gt;  allSubsetKArrayRecursion(n, k, subset, subsetElements, i + 1);&lt;br /&gt;} else {&lt;br /&gt;&lt;br /&gt;  if (k==subsetElements) {&lt;br /&gt;    printSubset(n, subset);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;!-- Código --&gt; &lt;!-- Párrafo --&gt;&lt;p&gt;(&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#arriba"&gt;contents&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p class="titulo" id="auxiliar"&gt;&lt;br /&gt;&lt;b&gt;Auxiliar methods&lt;/b&gt;&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p&gt;These methods do a function with the subset given by the methods above. In this case, they print the subset. These are the methods that need to be changed for changing the behaviour.&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;&lt;!-- Código --&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;printSubset(int,long)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;/**&lt;br /&gt;* Prints a subset represented with the bits of a long.&lt;br /&gt;*&lt;br /&gt;* @param n Maximum number of elements of the subset.&lt;br /&gt;* @param subset Bit representation of the subset.&lt;br /&gt;*/&lt;br /&gt;private static void printSubset(int n, long subset) {&lt;br /&gt;for (int j = n-1; j &gt;= 0; --j) {&lt;br /&gt;  System.out.printf("%d", ((subset &amp;amp; (1L &amp;lt;&amp;lt; j)) != 0) ? 1 : 0);&lt;br /&gt;}&lt;br /&gt;System.out.printf("%n");&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt; &lt;!-- Código --&gt; &lt;!-- Código --&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;printSubset(int,boolean[])&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="codigopos"&gt; &lt;div class="codigo"&gt;&lt;pre&gt;/**&lt;br /&gt;* Prints a subset represented by an array of booleans.&lt;br /&gt;*&lt;br /&gt;* @param n Maximum number of elementos of the subset.&lt;br /&gt;* @param subset Subser represented by an array of booleans.&lt;br /&gt;*/&lt;br /&gt;private static void printSubset(int n, boolean[] subset) {&lt;br /&gt;for (int j = n-1; j &gt;= 0; --j) {&lt;br /&gt;  System.out.printf("%d", (subset[j]) ? 1 : 0);&lt;br /&gt;}&lt;br /&gt;System.out.printf("%n");&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;!-- Código --&gt;  &lt;!-- Párrafo --&gt;&lt;p&gt;(&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#arriba"&gt;contents&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p class="titulo" id="referencias"&gt;&lt;b&gt;Referencess&lt;/b&gt;&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafo --&gt;  &lt;!-- Párrafo --&gt;&lt;p&gt;"&lt;a hrefe="http://www.amazon.com/Hackers-Delight-Henry-Warren-Jr/dp/0201914654" target="_blank"&gt;Hacker's Delight&lt;/a&gt;", by &lt;strong&gt;Henry S. Warren Jr&lt;/strong&gt;.&lt;br /&gt;"&lt;a target="_blank" href="http://mathworld.wolfram.com/k-Subset.html"&gt;k-subconjuntos.&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;!-- Párrafos --&gt;   &lt;!-- Párrafo --&gt;&lt;p&gt;(&lt;a href="http://www.blogger.com/post-edit.g?blogID=31958468&amp;amp;postID=1895348743614223933#arriba"&gt;contents&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;!-- Párrafo --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-1895348743614223933?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/1895348743614223933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=1895348743614223933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/1895348743614223933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/1895348743614223933'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2007/05/subconjuntos-dado-un-conjunto-s-cules.html' title='Subset'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-1007295582392962010</id><published>2007-03-11T23:22:00.001+01:00</published><updated>2010-07-27T17:50:15.845+02:00</updated><title type='text'>Hano Cup</title><content type='html'>It is my customized java framework based on and compatible to Java Cup 2007 competition. It provides an interface to simulate football (soccer) matches between programmed teams that implement 'Tactica' interface. I have added several useful characteristics to program new teams. Details about this project are &lt;a href="http://code.google.com/p/hanocup/wiki/PageName"&gt;here&lt;/a&gt;. It includes an auto-executable jar file and an Eclipse project with the sources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-1007295582392962010?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/1007295582392962010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=1007295582392962010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/1007295582392962010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/1007295582392962010'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2007/03/hano-cup.html' title='Hano Cup'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-1218839395568791781</id><published>2007-02-14T09:33:00.002+01:00</published><updated>2010-06-08T20:41:18.919+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='juego'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>OH MUMMY!</title><content type='html'>&lt;em&gt;&lt;a href="http://javaunlimited.net/games/launch.php?type=jnlp&amp;id=143"&gt;Play it here!&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Classics are back, and I wanted to pay tribute to one of the first games I had, the mythical &lt;em&gt;OH MUMMY&lt;/em&gt;. This is a new entry for the &lt;a href="http://javaunlimited.net/games/view.php?id=143" target="_blank"&gt;J4K 2007 Contest&lt;/a&gt;, so, its size is less than 4K.&lt;br&gt;Any comment or suggestion is always welcome.&lt;br /&gt;&lt;table border="0" width="100%" style="border-collapse: collapse"&gt;   &lt;br /&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 212px;" src="http://2.bp.blogspot.com/_6u1zQ34V51A/TA6KYM7hpGI/AAAAAAAAAN4/hqomDyQYO0w/s320/ohmummy4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5480469944948860002" /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 212px;" src="http://4.bp.blogspot.com/_6u1zQ34V51A/TA6KXyLkBQI/AAAAAAAAANw/oRCNtT90nJE/s320/ohmummy1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5480469937768367362" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is a long time ago when I had my first computer, an &lt;a href="http://en.wikipedia.org/wiki/Amstrad_CPC" target="_blank"&gt;Amstrad CPC 464&lt;/a&gt;. Now, its  4Mhz and 64K of RAM seem to be tiny,  but thanks to it, with BASIC as programming language, I started to like programming.&lt;br /&gt;&lt;br /&gt;Then, games are loaded from a cassette, and loading last very long. Bugs were really annoying, because you had to load the complete program (about 30-60 minutes) to realize that it didn’t work&lt;br /&gt;&lt;br /&gt;One of the first games I got was &lt;em&gt;Oh mummy!&lt;/em&gt;. It was funny trying to deal with more and more mummyes. I’m sure that if you had played this game, you remember its song; you can find it &lt;a href="http://www.shira.net/streets-of-cairo.mid"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to play&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;em&gt;objective&lt;/em&gt; is to find the two objects that allow you to pass to the next level. In the original game, the objects were a key and a kind of sarcophagus, but due to the size of the final jar file has to be under 4k, I had to substitute them by green blocks. For knowing what a block hides, you have to walk all around it.&lt;br /&gt;&lt;br /&gt;For &lt;em&gt;passing of level&lt;/em&gt;, after finding the two green blocks, you have to go back to the initial position.&lt;br /&gt;&lt;br /&gt;Be careful with the &lt;em&gt;mummies&lt;/em&gt;. They look slow at the beginning, but the are cleverer and cleverer in each new level.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Controls&lt;/em&gt; are the direction arrows.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Source code&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally I submitted the source you can download it at &lt;a href="http://sites.google.com/site/ljlopezoldweb/rep-1/ohmummy_src.zip?attredirects=0&amp;d=1"&gt;ohmummy_src.zip&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The code is optimized for 4 Kbytes, and I had to apply my own compression format to the sprite image to mimimize its size. &lt;strong&gt;Compression&lt;/strong&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1 bit for transparency&lt;ul&gt;&lt;li&gt;0 = transparent&lt;/li&gt;&lt;li&gt;1 = colored&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;If colored, 2 bits for the color&lt;ul&gt;&lt;li&gt;2 bits = index in the color palette 0-based&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="0" width="60%" style="border-collapse: collapse" align="center"&gt;&lt;tr align="center"&gt;&lt;td width="50%"&gt;&lt;span style="font-weight:bold;"&gt;Original&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;Compressed&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td width="50%"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 144px; height: 16px;" src="http://4.bp.blogspot.com/_6u1zQ34V51A/TA6NFG1_VnI/AAAAAAAAAOA/nEDYt1VH2js/s200/sprites_ohmummy.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5480472915432396402" /&gt;&lt;br&gt;6.966 bytes&lt;/td&gt;&lt;td&gt;418 bytes&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img style="cursor:pointer; cursor:hand;width: 204px; height: 320px;" src="http://4.bp.blogspot.com/_6u1zQ34V51A/TA6NpNGngOI/AAAAAAAAAOI/qQP_UhPp1S8/s320/ohmummytape.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5480473535588040930" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-1218839395568791781?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/1218839395568791781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=1218839395568791781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/1218839395568791781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/1218839395568791781'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2007/02/oh-mummy.html' title='OH MUMMY!'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6u1zQ34V51A/TA6KYM7hpGI/AAAAAAAAAN4/hqomDyQYO0w/s72-c/ohmummy4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-3462660484920344106</id><published>2007-01-09T10:53:00.004+01:00</published><updated>2010-06-08T20:00:19.897+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='juego'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Billard4K</title><content type='html'>The objective is to introduce all the red balls into the holes, hitting them with the white ball. To hit the white ball, we have to use the stick when all the balls on the table are stopped.&lt;br /&gt;&lt;br /&gt;To start to play, there is to click on the screen. Each hit follows these steps:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Direction&lt;/strong&gt;: moving the mouse, we indicate where we hit the white ball from. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Strength&lt;/strong&gt;: when we have the direction, click and hold the button pressed, the strength is proportional to the distance between the mouse and the white ball; to hit the ball, release the button.&lt;/li&gt;&lt;li&gt;Wait until all the balls are stopped.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;applet code="Billard.class" width="700" height="350" alt="Por Luis Javier López Arredondo" archive="http://sites.google.com/site/ljlopezoldweb/rep-1/billard_applet.jar"&gt;&lt;br /&gt;&lt;/applet&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;This game was submitted to the &lt;a href="http://www.java4k.com/index.php?action=games&amp;method=view&amp;gid=128"&gt;J4K 2007 Contest&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Download the code here:&lt;br /&gt;&lt;a href="http://sites.google.com/site/ljlopezoldweb/rep-1/billard4K.zip?attredirects=0&amp;amp;d=1"&gt; Source &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-3462660484920344106?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/3462660484920344106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=3462660484920344106' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/3462660484920344106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/3462660484920344106'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2007/01/billar4k-billard4k.html' title='Billard4K'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-116392011520023970</id><published>2006-11-19T08:05:00.001+01:00</published><updated>2010-07-27T18:09:40.178+02:00</updated><title type='text'>Permutations with repetitions</title><content type='html'>&lt;em&gt;Permutations&lt;/em&gt; are all the different orders of the elements of a set. The number of permutations is &lt;em&gt;n!&lt;/em&gt; (n &lt;a target="_blank" href="http://www.blogger.com/factoriales.htm"&gt;factorial&lt;/a&gt;), where n is the number of elements of the set. If there are repeated elements in the set to permute, the number of permutations will be smaller. I have compiled some methods in Java to obtain all the permutations with repetitions.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;b&gt;Contents&lt;/b&gt;&lt;/em&gt;&lt;br /&gt;Introduction&lt;br /&gt;Permutations with repetitions&lt;br /&gt;References&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The number of permutations of a set of elements with n elements is n! (n factorial). If there are repeated elements in the set, we will have to divide by the factorial of the number of repetitions of each repeated element.&lt;br /&gt;&lt;br /&gt;&lt;quote&gt;REF: "&lt;a target="_blank" href="http://thales.cica.es/rd/Recursos/rd99/ed99-0516-02/practica/perm_rep.htm"&gt;Permutaciones con repetición&lt;/a&gt;"&lt;/quote&gt;&lt;br /&gt;&lt;br /&gt;The number of &lt;em&gt;permutations with repetition&lt;/em&gt; of &lt;em&gt;n&lt;/em&gt; elements, with groups of &lt;em&gt;k&lt;/em&gt; elements because of repetitions (where k = r&lt;sub&gt;1 &lt;/sub&gt;+ r&lt;sub&gt;2&lt;/sub&gt; + ...+ r&lt;sub&gt;n&lt;/sub&gt;), written as P&lt;sub&gt;&lt;sub&gt;k&lt;/sub&gt;&lt;/sub&gt;&lt;sup&gt;r1,r2...rn&lt;/sup&gt; and equal to:&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-size:130%;"&gt;P&lt;sub&gt;&lt;sub&gt;k&lt;/sub&gt;&lt;/sub&gt;&lt;sup&gt;r&lt;/sup&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;sup&gt;,r&lt;/sup&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;sup&gt;...r&lt;/sup&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;n&lt;/span&gt;&lt;span style="font-size:130%;"&gt; = &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;p align="center"&gt;&lt;span style="font-size:130%;"&gt;n!&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;hr size="1" noshade=""&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;p align="center"&gt;&lt;span style="font-size:130%;"&gt;r&lt;sub&gt;1&lt;/sub&gt;!r&lt;sub&gt;2&lt;/sub&gt;! ... r&lt;sub&gt;n&lt;/sub&gt;!&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Permutations with repetitions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Based on the permutations generator algorithms, the following methods generate the permutations for a set with repetition:&lt;br /&gt;1. The set is sorted.&lt;br /&gt;2. When there are to permute, they consider if the elements are equal or no.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;permutationsRep(int[]) (recursive)&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;/** &lt;br /&gt; * Given ps, integer set with repetitions, it sorts it, and&lt;br /&gt; * calls the method to permute it.&lt;br /&gt; *&lt;br /&gt; * @param ps Array of integers with repetitions, set of &lt;br /&gt; * elements to permute.&lt;br /&gt; */&lt;br /&gt;public void permutationsRep(int[] ps) {&lt;br /&gt;    Arrays.sort(ps);&lt;br /&gt;    permuteRep(ps, 0, ps.length);&lt;br /&gt;}&lt;br /&gt;  &lt;br /&gt;/** &lt;br /&gt; * Calls doSomething() method with all the permutations&lt;br /&gt; * of the ps set.&lt;br /&gt; *&lt;br /&gt; * It considers when elements are repeated.&lt;br /&gt; *&lt;br /&gt; * Initial call: permute(ps, 0, ps.length);&lt;br /&gt; *&lt;br /&gt; * @param ps Array of integers with repetitions, set of &lt;br /&gt; * elements to permute.&lt;br /&gt; * @param start Index where permutation begins.&lt;br /&gt; * @param n Number of elements of ps.&lt;br /&gt; */&lt;br /&gt;public static void permute(int[] ps, int start, int n) {&lt;br /&gt;    doSomething(ps);&lt;br /&gt;    int tmp = 0;&lt;br /&gt;&lt;br /&gt;    if (start &lt; n) {&lt;br /&gt;      for (int i = n - 2; i &gt;= start; i--) {&lt;br /&gt;        for (int j = i + 1; j &lt; n; j++) {&lt;br /&gt;          if (ps[i] != ps[j]) {&lt;br /&gt;            // swap ps[i] &lt;--&gt; ps[j]&lt;br /&gt;            tmp = ps[i];&lt;br /&gt;            ps[i] = ps[j];&lt;br /&gt;            ps[j] = tmp;&lt;br /&gt;&lt;br /&gt;            permute(ps, i + 1, n);&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Undo all modifications done by&lt;br /&gt;        // recursive calls and swapping&lt;br /&gt;        tmp = ps[i];&lt;br /&gt;        for (int k = i; k &lt; n - 1;)&lt;br /&gt;          ps[k] = ps[++k];&lt;br /&gt;        ps[n - 1] = tmp;&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;permuteRepIteretive(int[]) (iterative)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt;* Calls the doSomething() method with all the permutaions&lt;br /&gt;* of ps.&lt;br /&gt;*&lt;br /&gt;* It considers when elements are repeated.&lt;br /&gt;*&lt;br /&gt;* @param ps Array of integers with repetitions, set of&lt;br /&gt;* elements to permute.&lt;br /&gt;*/&lt;br /&gt;public void permuteRepIteretive(int[] ps) {&lt;br /&gt;   doSomething(ps);&lt;br /&gt;   int n = ps.length;&lt;br /&gt;   int tmp = 0;&lt;br /&gt;&lt;br /&gt;   // indexes[i] = i+1;&lt;br /&gt;   int[] indexes = new int[n];&lt;br /&gt;   for (int i=0; i&amp;lt;n-1; ) indexes[i] = ++i;&lt;br /&gt;&lt;br /&gt;   for (int i = n-2; i &gt;= 0;) {&lt;br /&gt;  &lt;br /&gt;     while(indexes[i]&amp;lt;n &amp;amp;&amp;amp; ps[indexes[i]] == ps[i]) {&lt;br /&gt;       indexes[i]++;&lt;br /&gt;     }&lt;br /&gt;    &lt;br /&gt;     // swap ps[i] &amp;lt;--&gt; ps[indexes[i]&lt;br /&gt;     if (indexes[i]&amp;lt;n) {&lt;br /&gt;       tmp = ps[indexes[i]];&lt;br /&gt;       ps[indexes[i]] = ps[i];&lt;br /&gt;       ps[i] = tmp;&lt;br /&gt;      &lt;br /&gt;       doSomething(ps);&lt;br /&gt;     }&lt;br /&gt;    &lt;br /&gt;     indexes[i]++;     &lt;br /&gt;&lt;br /&gt;     i = n-2;&lt;br /&gt;&lt;br /&gt;     while (i &gt;= 0 &amp;amp;&amp;amp; indexes[i] &gt;= n) {&lt;br /&gt;       // Undo previous permutation from i+1&lt;br /&gt;       // Cyclical rotation to the left from i+1&lt;br /&gt;       // ps[k] = ps[k+1]&lt;br /&gt;       tmp = ps[i];&lt;br /&gt;       for (int k = i; k &amp;lt; n-1;)&lt;br /&gt;         ps[k] = ps[++k];&lt;br /&gt;       ps[n-1] = tmp;&lt;br /&gt;&lt;br /&gt;       // indexes[i]=i+1;&lt;br /&gt;       // i--;&lt;br /&gt;       indexes[i] = i-- + 1;&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;"&lt;a target="_blank" href="http://www.ping.be/~ping1339/tel.htm#Permutations-with-re"&gt;Counting problems&lt;/a&gt;", by Johan.Claeys.&lt;br /&gt; "&lt;a target="_blank" href="http://thales.cica.es/rd/Recursos/rd99/ed99-0516-02/practica/perm_rep.htm"&gt;Permutaciones con repetición&lt;/a&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-116392011520023970?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/116392011520023970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=116392011520023970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/116392011520023970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/116392011520023970'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/11/permutaciones-con-repeticin.html' title='Permutations with repetitions'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-116224168650624979</id><published>2006-10-30T21:50:00.000+01:00</published><updated>2006-10-30T21:56:40.123+01:00</updated><title type='text'>Potencia, divide y vencerás / Exponentiation, divide and conquer</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;&lt;strong&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/esp/potencia.htm"&gt;Potencia&lt;/a&gt;&lt;/strong&gt;: La &lt;em&gt;potencia&lt;/em&gt; de un número es la multiplicación de ese número por sí mismo un número determinado de veces. La potencia &lt;code&gt;n&lt;/code&gt; de &lt;code&gt;x&lt;/code&gt; se expresa como &lt;code&gt;x&lt;sup&gt;n&lt;/sup&gt;&lt;/code&gt; y equivale &lt;code&gt;x · x · ... · x · x&lt;/code&gt; n veces. &lt;code&gt;x&lt;sup&gt;0&lt;/sup&gt;&lt;/code&gt; es 1. Los siguientes métodos en Java implementan diferentes formas del cálculo de la potencia de un número.&lt;br&gt;(&lt;a target="_blank" href="http://es.geocities.com/luisja80/esp/potencia.htm"&gt;más&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;&lt;strong&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/eng/potencia.htm"&gt;Exponentiation&lt;/a&gt;&lt;/strong&gt;: The &lt;em&gt;exponentiation&lt;/em&gt; of a  number is the multiplication of that number by itself a determined number of times. Raising  &lt;code&gt;x&lt;/code&gt; to the power &lt;code&gt;n&lt;/code&gt; is expressed like &lt;code&gt;x&lt;sup&gt;n&lt;/sup&gt;&lt;/code&gt; and is &lt;code&gt;x • x • ... • x • x&lt;/code&gt; n times. &lt;code&gt;x&lt;sup&gt;0&lt;/sup&gt;&lt;/code&gt; is 1. The following methods in Java implements different ways to calculate the exponentiation of a number.&lt;br&gt;(&lt;a target="_blank" href="http://es.geocities.com/luisja80/eng/potencia.htm"&gt;read more&lt;/a&gt;)&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-116224168650624979?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/116224168650624979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=116224168650624979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/116224168650624979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/116224168650624979'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/10/potencia-divide-y-vencers.html' title='Potencia, divide y vencerás / Exponentiation, divide and conquer'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-116078218492333590</id><published>2006-10-14T01:23:00.000+02:00</published><updated>2006-10-14T01:29:44.936+02:00</updated><title type='text'>Permutaciones / Permutations</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt; &lt;strong&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/esp/permutaciones.htm"&gt;Permutaciones&lt;/a&gt;&lt;/strong&gt;: Las &lt;em&gt;permutaciones&lt;/em&gt; son todas las distintas ordenaciones que se pueden obtener de un conjunto de elementos dados. El número de permutaciones de un conjunto dado es &lt;em&gt;n!&lt;/em&gt; (n &lt;a target="_blank" href="http://es.geocities.com/luisja80/esp/factoriales.htm"&gt;factorial&lt;/a&gt;), dónde n es el número de elementos del conjunto. El numero de permutaciones crece rápidamente con el número de elementos del conjunto, así que computacionalmente es desaconsejable en caso de conjuntos grandes, pero en ocasiones puede ser útil para conjuntos pequeños. Aquí recojo algunos métodos útiles para trabajar con permutaciones en Java.&lt;br&gt;(&lt;a target="_blank" href="http://es.geocities.com/luisja80/esp/permutaciones.htm"&gt;más&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;&lt;strong&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/eng/permutaciones.htm"&gt;Permutations&lt;/a&gt;&lt;/strong&gt;: &lt;em&gt;Permutations&lt;/em&gt; are all the different orders of the elements of a set. The number of permutations is &lt;em&gt;n!&lt;/em&gt; (n &lt;a target="_blank" href="http://es.geocities.com/luisja80/eng/factoriales.htm"&gt;factorial&lt;/a&gt;), where n is the number of elements of the set. The number of permutations grows quickly with the number of elements of the set, so permutations are heavy computationally, but in specific situations, they can be useful in small sets. Here I compile several useful methods related to permutations in Java.&lt;br&gt;(&lt;a target="_blank" href="http://es.geocities.com/luisja80/eng/permutaciones.htm"&gt;read more&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-116078218492333590?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/116078218492333590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=116078218492333590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/116078218492333590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/116078218492333590'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/10/permutaciones-permutations.html' title='Permutaciones / Permutations'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-116009421479102287</id><published>2006-10-06T02:20:00.000+02:00</published><updated>2006-10-08T10:13:48.340+02:00</updated><title type='text'>Palíndromos en java / Palindromes in Java</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a href="http://es.geocities.com/luisja80/esp/palindromo.htm" target="_blank"&gt;Palíndromos en Java&lt;/a&gt;: He actualizado el artículo dedicado a palíndromos y he añadido nuevos métodos en Java.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a href="http://es.geocities.com/luisja80/eng/palindromo.htm" target="_blank"&gt;Palindromes in Java&lt;/a&gt;: I have updated the article dedicated to palindromes and I have added new methods in Java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-116009421479102287?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/116009421479102287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=116009421479102287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/116009421479102287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/116009421479102287'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/10/palndromos-en-java-palindromes-in-java.html' title='Palíndromos en java / Palindromes in Java'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-115953004930847226</id><published>2006-09-29T13:38:00.000+02:00</published><updated>2006-10-08T10:14:43.296+02:00</updated><title type='text'>Nivel de bits / Bitwise tricks</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/esp/bitwise.htm"&gt;Trucos a nivel de bits&lt;/a&gt;: Compilación de útiles e interesantes trucos a nivel de bits.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/eng/bitwise.htm"&gt;Bitwise tricks&lt;/a&gt;: A compilation of useful and interesting bitwise tricks.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-115953004930847226?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/115953004930847226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=115953004930847226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115953004930847226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115953004930847226'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/09/nivel-de-bits-bitwise-tricks.html' title='Nivel de bits / Bitwise tricks'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-115885857095595339</id><published>2006-09-21T19:06:00.000+02:00</published><updated>2006-10-08T10:10:24.890+02:00</updated><title type='text'>Factoriales / Factorials</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/esp/factoriales.htm"&gt;Factoriales&lt;/a&gt;: La función factorial está muy extendida en computación y matemáticas discretas. Es una breve explicación sobre el factorial, código que puede ser útil y links interesantes relacionados con factoriales.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/eng/factoriales.htm"&gt;Factorials&lt;/a&gt;: The factorial function is widely used in computing and discrete Mathematics. It is a brief explanation about factorial function, useful source code and interesting links related to factorials.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-115885857095595339?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/115885857095595339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=115885857095595339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115885857095595339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115885857095595339'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/09/factoriales-factorials.html' title='Factoriales / Factorials'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-115853752258457221</id><published>2006-09-18T01:52:00.000+02:00</published><updated>2006-10-08T10:11:18.903+02:00</updated><title type='text'>Algoritmo de Boyer-Moore / Boyer-Moore Algorithm</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/esp/boyermoore.htm"&gt;Algoritmo de Boyer-Moore&lt;/a&gt;: es el más eficiente en la búsqueda de patrones en cadenas de caracteres. Es una breve explicación del algoritmo, su código con sus pruebas y links adjuntos.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a target="_blank" href="http://es.geocities.com/luisja80/eng/boyermoore.htm"&gt;Boyer-Moore algorithm&lt;/a&gt;: the most efficient algorithm in pattern matching. It is a short explanation of the algorithm, its code whit its tests and attached links.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-115853752258457221?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/115853752258457221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=115853752258457221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115853752258457221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115853752258457221'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/09/algoritmo-de-boyer-moore-boyer-moore.html' title='Algoritmo de Boyer-Moore / Boyer-Moore Algorithm'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-115839929149607314</id><published>2006-09-16T11:33:00.000+02:00</published><updated>2006-10-08T10:15:24.933+02:00</updated><title type='text'>Nuevo diseño web / New web design</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;Nuevo diseño de mi página web: &lt;a href="http://es.geocities.com/luisja80/esp" target="_blank"&gt;http://es.geocities.com/luisja80&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;New design of my web page: &lt;a href="http://es.geocities.com/luisja80/eng" target="_blank"&gt;http://es.geocities.com/luisja80&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-115839929149607314?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/115839929149607314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=115839929149607314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115839929149607314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115839929149607314'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/09/nuevo-diseo-web-new-web-design.html' title='Nuevo diseño web / New web design'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-115775502716965429</id><published>2006-09-09T00:21:00.000+02:00</published><updated>2006-10-08T10:16:42.053+02:00</updated><title type='text'>Generador de Palíndromos en Java / Java Palindromes Generator</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a href="http://es.geocities.com/luisja80/esp/palindromo.htm" target="_blank"&gt;Generador de palíndromos numéricos&lt;/a&gt;: Un método en Java que genera un palíndromo numérico a partir de un número pasado como parámetro.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;&lt;a href="http://es.geocities.com/luisja80/esp/palindromo.htm" target="_blank"&gt;Numeric palindromes generator&lt;/a&gt;: A Java method generates a numeric palindrome from a number given.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-115775502716965429?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/115775502716965429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=115775502716965429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115775502716965429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115775502716965429'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/09/generador-de-palndromos-en-java-java.html' title='Generador de Palíndromos en Java / Java Palindromes Generator'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-115752926867864944</id><published>2006-09-06T09:52:00.000+02:00</published><updated>2006-10-08T10:17:27.566+02:00</updated><title type='text'>Mi  CV / My CV</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;Luis Javier López Arredondo, CV en inglés.&lt;br /&gt;&lt;a target="_blank" href="http://www.techcareers.com/LJL%F3pez-RFD"&gt;Ver mi CV&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;Luis Javier López Arredondo, English CV.&lt;br /&gt;&lt;a target="_blank" href="http://www.techcareers.com/LJL%F3pez-RFD"&gt;See my CV&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-115752926867864944?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/115752926867864944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=115752926867864944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115752926867864944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115752926867864944'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/09/mi-cv-my-cv.html' title='Mi  CV / My CV'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-115712676747135217</id><published>2006-09-01T17:56:00.000+02:00</published><updated>2007-07-05T23:47:01.254+02:00</updated><title type='text'>Fichero JAR ejecutable / Executable JAR file</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="espa?ol" border="0" /&gt;&lt;br /&gt;Cómo hacer un fichero JAR ejecutable.&lt;br /&gt;&lt;a href="http://es.geocities.com/luisja80/esp/jarejecutable.htm" target="_blank"&gt;Fichero JAR ejecutable&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="espa?ol" border="0" /&gt;&lt;br /&gt;How to make a JAR file executable.&lt;br /&gt;&lt;a href="http://es.geocities.com/luisja80/eng/jarejecutable.htm" target="_blank"&gt;Executable JAR file&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-115712676747135217?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/115712676747135217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=115712676747135217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115712676747135217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115712676747135217'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/09/fichero-jar-ejecutable-executable-jar.html' title='Fichero JAR ejecutable / Executable JAR file'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31958468.post-115437420536875996</id><published>2006-07-31T21:27:00.000+02:00</published><updated>2006-10-08T10:18:08.826+02:00</updated><title type='text'>Bienvenido / Welcome</title><content type='html'>&lt;img src="http://es.geocities.com/luisja80/img/es_flag.gif" alt="español" border="0" /&gt;Bienvenido a mi blog.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://es.geocities.com/luisja80/img/en_flag.gif" alt="english" border="0" /&gt;Welcome to my blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31958468-115437420536875996?l=hardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hardprogrammer.blogspot.com/feeds/115437420536875996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31958468&amp;postID=115437420536875996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115437420536875996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31958468/posts/default/115437420536875996'/><link rel='alternate' type='text/html' href='http://hardprogrammer.blogspot.com/2006/07/bienvenido-welcome.html' title='Bienvenido / Welcome'/><author><name>Hano</name><uri>http://www.blogger.com/profile/01110361590446293976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://es.geocities.com/luisja80/img/moto.jpg'/></author><thr:total>0</thr:total></entry></feed>
