Subato

Resource Files

Faltungen

In dieser Aufgabe sollen Sie den Aufruf der Methode reduce üben. Es sind eine Reihe von Aufgaben zu lösen, die Sie bisher iterativ oder rekursiv gelöst haben. Ergänzen Sie die folgenden Methoden mit den passenden Parametern für reduce.

  • long readBinary(String x);
    Es soll der Stringparameter als Binärzahl gelesen werden.
  • long quersumme(long x)
    Zur Berechnung der Quersumme einer Zahl.
  • long factorial(int x)
    Zur Berechnung der Fakultät.
  • String asBinary(long x)
    Zur Erzeugung eines Strings, der die Zahl als Binärzahl darstellt.
  • String convertToBase(int b,long x{
    Verallgemeinern Sie hier die Methode toBinary, so dass die Zahl $x$ in einen String im Stellenwertsystem mit der entsprechenden Basis $2\le b\le 16$ konvertiert wird.
  • long readFromBase(int b,String x);
    Verallgemeinern Sie hier die Methode readBinary, so dass der String $x$ als eine Zahl im Stellenwertsystem mit der entsprechenden Basis $2\le b\le 16$ gelesen wird.

Hinweis: In dem Lösungsfragment wird die seit Java 9 neue Stream-Methode takeWhile verwendet.


package name.panitz.util; import java.util.stream.*; public class Reduce { static long readBinary(String x){ return x.chars().reduce( /*TODO*/ ); } static long quersumme(long x){ return LongStream .iterate(x,(y)->y/10) .takeWhile(y->y>0) .reduce( /*TODO*/ ); } static long factorial(int x){ return LongStream .iterate(1L,(y)->y+1L) .limit(x) .reduce( /*TODO*/ ); } static String asBinary(long x){ return (x==0) ? "0" :LongStream .iterate(x,(y)->y/2) .takeWhile(y->y>0) .mapToObj​(y->y) .reduce( /*TODO*/ ); } static String convertToBase(int b,long x){ return "" /*TODO*/ ; } static String digits="0123456789ABFDEFGHIJKLMNOPQRSTUVWXYZ"; static char toDigit(int x){ return digits.charAt(x); } static long readFromBase(int b,String x){ return 0L /*TODO*/ ; } }
java