Inhalt
Die Fakten:
Plattform: | codewars.com |
Name: | Equalize the array! |
Level: | 7 kyu |
Sprache: | TypeScript |
Beschreibung:
No description!!!
Input :: [10,20,25,0]
Output :: ["+0", "+10", "+15", "-10"]
Show some love, rank and upvote!
Quelle: codewars.com
Lösung
Pseudo-Code
Wie immer gibt's reichlich Varianten, hier ist eine meiner.
Erst die Lösungsschritte in Pseudo-Code. Los geht’s:
Lösungsschritte
Schritt 1
Erstmal rauskriegen was hier überhaupt Masse is...
Schritt 2
OK, ich habs! Und du?
Schritt 3
Die erste Zahl im Input Array wird von jeder Zahl im Array abgezogen.
Schritt 4
Richtig, das ist noch nicht alles...
Schritt 5
Die jeweilige Zahl kommt als String ins Output Array, und zwar mit Vorzeichen.
Code
Geil. Übersetzen wir unseren Pseudo-Code in TypeScript:
Lösungsschritte
Meine erste Zeile (ich habe array
in nums
umbenannt):
export function equalize(nums: number[]): string[] {
Dann der Loop. Da wir sonst nichts weiter mit dem Array planen, können wir das Resultat direkt zurückgeben:
return nums.map((num) => {
Jetzt können wir die Differenz zwischen aktuellem und erstem Element berechnen und in einen String umwandeln. Da wir die Differenz ein paar mal brauchen, speichern wir die jeweilige aktuelle Differenz in einer Variablen zwischen:
const difference = (num - nums[0]).toString();
Jetzt kümmern wir uns um das Vorzeichen. Wenn unsere Variable ein -
enthält, ist alles gut. Dann geben wir dem neuen Array einfach die Variable zurück:
if (difference.includes("-")) return difference;
Ein +
enthält es aber nicht automatisch. Das müssen wir manuell hinzufügen, wenn kein Vorzeichen vorhanden ist.
Tipp: Das else
können wir uns sparen:
return `+${difference}`;
});
}
Voilá! 💪
Komplettlösung
export function equalize(nums: number[]): string[] {
return nums.map((num) => {
const difference = (num - nums[0]).toString();
if (difference.includes("-")) return difference;
return `+${difference}`;
});
}