Open minds leads to freedom

Communicating my thoughts on software development

K Palindromes puzzle

Posted by rnaufal on 3rd September 2013

Here we have the K Palindromes puzzle from Javalobby:

You probably already know what a palindrome is: a string to results in the same word, whether read left to right, or right to left. A K Palindrome is when a string can be tranformed into a palindrome by changing K characters at most. Regular palindromes have K=0.

Your challenge today is to write a method which takes a string and a value for k and returns true if it the string qualifies as a K palindrome.

Below is the code in Ruby. Our input string is omississimo and it’s a 0 palindrome String.

def isKPalindrome(s, k)
	chars = s.chars.to_a
	limit = chars.size - 1
	count = chars[0...chars.size / 2].each_index.count {|i| !chars[i].eql?(chars[limit - i])}
	k == count ? true : false

puts(isKPalindrome("omississimo", 0)) #true

The output is true. Do you have another solution? Drop your comments here!

Tags: , , , , , , ,
Posted in code, languages, palindrome, programming, puzzle, ruby, string | No Comments »

Minimum difference puzzle in Ruby

Posted by rnaufal on 28th August 2013

Folks, here we are for another puzzle from Javalobby:

Given two arrays, sorted and exactly the same length, write a function that finds a pair of numbers – one from each of the arrays – such that the difference between both is as small as possible.

Suppose our input arrays are [1,2,3,4,5] and [6,7,8,9,10]. Below is my solution in Ruby, it’s a one liner code :-):

[1,2,3,4,5].product([6,7,8,9,10]).map {|x, y| [x, y, (x-y).abs]}.sort { |a, b| a.last<=> b.last }.first.take(2)

The output is [5, 6].

Have another solution? Leave your comments here!

Tags: , , , , , , ,
Posted in arrays, code, languages, programming, puzzle, ruby | No Comments »

Balancing arrays puzzle in Ruby

Posted by rnaufal on 23rd August 2013

Here we are for another puzzle from Javalobby:

Given an array of numbers, return the index at which the array can be balanced by all numbers on the left side add up the the sum of all numbers of the right side.

For example, an array with [1,5,6,7,9,10] can be balanced by splitting the array at position 4

Here is the solution in Ruby:

v=[1,5,6,7,9,10];sum = v.reduce(:+);count=0;index = (0...v.size).detect { |i| count += v[i]; count * 2 == sum};index == nil ? nil : index + 1

The input array [1,5,6,7,9,10] will split the array at position 4, as stated above.

Any other solutions? Drop comments here 🙂

Tags: , , , , , , ,
Posted in arrays, code, languages, programming, puzzle, ruby | No Comments »

Finding the second highest frequency

Posted by rnaufal on 11th August 2013

It’s been a long time since I posted for the last time, but I promise I’ll try to keep this blog up-to-date 🙂

One of the purposes of this blog is to explore new technologies and recently I’ve been studying Ruby solving some puzzles posted by on JavaLobby.

The problem is about finding the second highest frequency of a character in a String. Below is the Ruby code, using the powerful concept of Ruby closures.

v="aabbbc".chars;h=Hash[{|k| [k, v.count(k)] }];max=h.values.max; { |k, v| v < max};found.keys.first if found

For the input String "aabbbc", the result is "a". I could done it in a more OOP style, but I chose a more concise solution 🙂

If you have another version in Ruby, feel free to post a comment!

Tags: , , , , ,
Posted in code, languages, programming, puzzle, ruby | No Comments »

When to use TestNG or JUnit

Posted by rnaufal on 2nd September 2011

There is an interesting discussion between using TestNG or JUnit on Java projects at Javalobby. It’s very worth reading.

Tags: , , , ,
Posted in Uncategorized | No Comments »

The power of pair programming

Posted by rnaufal on 14th January 2010

Some weeks ago I started doing pair programming with some co-workers basically for two things:

  1. code some tasks of an user story
  2. get familiar with a new software code base

I haven’t had an opportunity to put this technique in practice a lot before, but I can say it was extremely important and benefit for the project. Sometimes I was the driver and sometimes I was the observer. The driver is the person who starts coding and the observer is who starts doing the code review. That point is important: code review.

Pair programming encourages the review of the code. Perhaps you won’t have an opportunity to refactor some code as you have when you are pairing with someone. I think code reviews are important because:

  • Reviews increase code quality, because there are 2 people thinking at the same task at the same time.
  • Refactoring areas arise in the design where improvements are needed
  • When you have the strong support of an IDE (as Eclipse), some refactorings (extract method, extract class, introduce parameter) are highly automated
  • Code is more read than written, two people reading the code can understand a lot more about the code base
  • New ideas arise because of different point of views
  • Questions can be solved by the sum of knowledge of the code base

And you? What’s your experience with pair programming?

Tags: , , , , , ,
Posted in Uncategorized | 4 Comments »

JFileContentManager included in the Softpedia Mac OS software database

Posted by rnaufal on 27th October 2009

100% FREE award granted by Softpedia

I’m proud to announce that JFileContentManager, a software of mine, has been added to Softpedia’s database of software programs for Mac OS. It is featured with a description text, screenshots, download links and technical details on this page.

JFileContentManager has been tested in the Softpedia labs using several industry-leading security solutions and found to be completely clean of adware/spyware components. We are impressed with the quality of your product and encourage you to keep these high standards in the future.

You can see the announce by clicking on the image above. Thanks Softpedia for the award!

Tags: , ,
Posted in Uncategorized | 4 Comments »

JDK7 Tackles Java Verbosity

Posted by rnaufal on 22nd September 2009

Interesting article showing some changes on the Java platform to address its verbosity, but keeping code readability safe.
I liked the new Collection’s literals syntax to create lists, sets and maps:

List powersOf2 = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024};
Map ages = {"John" : 35, "Mary" : 28, "Steve" : 42};

Although it can be possible to use the DoubleBraceInitialization idiom to initialize collections in a more elegant way, this syntax is very terse and concise.

BTW, as I said before, Scala already has a syntactic sugar to create a literal Map:

val ages = Map("John" -> 35, "Mary" -> 28, "Steve" -> 42)

Maybe this change was taken into account considering the Scala collection literals implementation?

Tags: , , , , , , ,
Posted in Uncategorized | 2 Comments »

A Brief History of Java and JDBC

Posted by rnaufal on 22nd September 2009

From Javalobby, an interesting and short video showing the evolution of the Java platform since 1991.

Tags: , , ,
Posted in Uncategorized | No Comments »

Constructors in Scala

Posted by rnaufal on 26th August 2009

I just came across an interesting post by Stephan Schmidt about constructors in Scala.

It shows how to create constructors with immutable and mutable fields, how to have multiple constructors how to invoke super class constructors. I found it very handy and concise to create a constructor with a private immutable field:

class Foo(private val bar: Bar)

Tags: ,
Posted in Uncategorized | No Comments »