Skip to content

Instantly share code, notes, and snippets.

@jsianes
Last active December 22, 2015 03:29
Show Gist options
  • Save jsianes/6411022 to your computer and use it in GitHub Desktop.
Save jsianes/6411022 to your computer and use it in GitHub Desktop.
Spotify 'Reversed Binary' test program solved (https://www.spotify.com/us/jobs/tech/reversed-binary/)
import java.util.Scanner;
public class ReversedBinaryNumbers {
public static void main(String[] args) {
if (args.length == 1) {
Scanner scanner=new Scanner(args[0]);
if (scanner.hasNextLong()) {
long l=scanner.nextLong();
if ((l>0)&&(l<1000000001)) {System.out.println(Long.parseLong(new StringBuilder(Long.toBinaryString(l)).reverse().toString(),2));}
}
}
}
}
// Recursive solution
import java.util.Scanner;
public class ReversedBinaryNumbers2 {
private static String decimal2BinaryReversed(String s) {
if (Long.parseLong(s)<2) {return s;}
else {return ((Long.parseLong(s)%2)+decimal2BinaryReversed(String.valueOf(Long.parseLong(s)/2)));}
}
private static long binary2Decimal(String s) {
if (s.length()<2) {return Long.parseLong(s);}
else {return (long) ((Long.parseLong(s.substring(0,1))*Math.pow(2,s.length()-1))+binary2Decimal(s.substring(1)));}
}
public static void main(String[] args) {
if (args.length == 1) {
Scanner scanner=new Scanner(args[0]);
if (scanner.hasNextLong()) {
long l=scanner.nextLong();
if ((l>0)&&(l<1000000001)) {System.out.println(binary2Decimal(decimal2BinaryReversed(args[0])));}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment