Hallo zusammen,
ich zermatere mir gerade den Kopf über folgende Aufgabe:
Eine Lösung gibt's dazu auch (Diese Funktion In.open gehört zu einer Bibliothek die der Aufgabe anhängig ist, spielt hier aber eig. keine Rolle):
Output:
Anton => 1536
Berta => 1609
Caesar => 3108
x => 120
aVeryVeryVeryVeryVeryVeryVeryVeryLongWord => 286334196
Ich weiß, dass Hausaufgaben ohne eigenen Ansatz hier nicht gern gesehen sind, aber ich hab einfach keinen Schimmer, wie hier dieser hash-code berechnet wird.
Mein Problem liegt wohl vor allem im Verständnis des Exclusiven-Oder hier.
Vielleicht könnte mir das jemand Step-by-Step erklären:
Also die Methode hash empfängt den String "Anton".
Für jeden Buchstaben in "Anton" wird nun code = (2 * code) ^ word.charAt(i); ausgeführt:
1) code = 2 * 0 ^ 65 (ASCII für 'A')
Also nun 0 ^ 65
Wie berechnet man nun mit dem exklusiven Oder?
Soweit ich weiß, gibt das doch immer nur einen Wahrheitswert zurück? Also wenn sich die Werte unterscheiden dann "True" und sonst "False".
Komm da einfach nicht hinter
Hoffe mir kann jemand weiterhelfen!
ich zermatere mir gerade den Kopf über folgende Aufgabe:
Eine Lösung gibt's dazu auch (Diese Funktion In.open gehört zu einer Bibliothek die der Aufgabe anhängig ist, spielt hier aber eig. keine Rolle):
Java:
public class A1 {
// Return the hash code of the given word
static int hash(String word) {
int code = 0;
for (int i = 0; i < word.length(); i++) {
code = (2 * code) ^ word.charAt(i);
System.out.println(code);
}
return code;
}
public static void main(String args[]) {
In.open("A1Input.txt");
// Anton Berta Caesar x aVeryVeryVeryVeryVeryVeryVeryVeryLongWord
String word = In.readWord();
while (In.done()) {
Out.println(word + " => " + hash(word));
word = In.readWord();
}
In.close();
}
}
Anton => 1536
Berta => 1609
Caesar => 3108
x => 120
aVeryVeryVeryVeryVeryVeryVeryVeryLongWord => 286334196
Ich weiß, dass Hausaufgaben ohne eigenen Ansatz hier nicht gern gesehen sind, aber ich hab einfach keinen Schimmer, wie hier dieser hash-code berechnet wird.
Mein Problem liegt wohl vor allem im Verständnis des Exclusiven-Oder hier.
Vielleicht könnte mir das jemand Step-by-Step erklären:
Also die Methode hash empfängt den String "Anton".
Für jeden Buchstaben in "Anton" wird nun code = (2 * code) ^ word.charAt(i); ausgeführt:
1) code = 2 * 0 ^ 65 (ASCII für 'A')
Also nun 0 ^ 65
Wie berechnet man nun mit dem exklusiven Oder?
Soweit ich weiß, gibt das doch immer nur einen Wahrheitswert zurück? Also wenn sich die Werte unterscheiden dann "True" und sonst "False".
Komm da einfach nicht hinter
Hoffe mir kann jemand weiterhelfen!