Problem 36: 2-Basen Palindrome

Gesucht werden alle Zahlen kleiner 1.000.000, die sowohl in dezimaler als auch in binärer Form ein Palindrom sind! [ das englische Original ]

Da ich bereits seit dem Problem 4 eine Methode zum Prüfen einer Palindrom-Zahl in meiner Sammlung habe, war das erste Drittel zum Lösen dieses Problem schon gegeben. Für den Test von binären Zahlen habe ich dann einfach eine weitere Methode ergänzt.

public static boolean isPalindrome( String s ) {
   int center = s.length() / 2;
   for( int pos = 0; pos < center; pos++ ) {
      if( s.charAt( pos ) != s.charAt( s.length() - pos - 1 ) ) {
         return false;
      }
   }
   return true;
}

Im letzten Schritt braucht es dann nur noch eine entsprechende Schleife, die die gewünschten Zahlen sucht:

public String solve() {
   int x = 1, s = 0;
 
   while( x < 1000000 ) {
 
      if( Mathe.isPalindrome( x ) && Mathe.isPalindrome( Integer.toBinaryString( x ) ) ) {
         IO.debugln( "found: " + x + " - " + Integer.toBinaryString( x ) );
         s += x;
      }
 
      x++;
   }
 
   return IO.i2s( s );
}

Den vollständigen Quellcode der Klasse für die Lösung des Problems 36 kann man sich hier anschauen!

<< Problem 35 Übersicht Problem 37 >>

 

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: