2016-08-09 14 views
-3

Ich arbeite in einer Hochschule Radiostation, und wir wollen eine Möglichkeit, unsere physische Musik mit Zahlen zu katalogisieren. Ich möchte den Künstler nehmen, Name und Jahr freigeben und in eine 9-stellige Zahl berechnen.Geben Sie ein englisches Wort ein, erhalten Sie eine Ganzzahl zurück

Ich habe ein paar Dinge bereits codiert.

Funktion Bijektion (Buchstabe) liest ein einzelnes Zeichen, Referenz var alpha = ["0", "1", "2", ... "9", "a", "b", ... "x", "y", "z"] und gibt den Index des angegebenen Zeichens zurück. Also, Bijektion (c) = 13, zum Beispiel.

Funktion easeread (string) nimmt eine Zeichenfolge, und entfernen Sie die Leerzeichen. Also, easyread ("zweitüriger Kino-Club") kehrt twodoorcinemeclub zurück.

function easyread(noun){ 
    var out = noun.split(' ').join(''); 
    return out; 
} 

Funktionsetikett (Zahl1, Zahl2, number3) werden drei Zahlen nehmen, bewerten jede mod 1000, und kombinieren sie zusammen auf eine 9-stellige ganze Zahl ist. Zum Beispiel Etikett (1001,1002,1003) gibt 100200300.

function label(sum1,sum2,year){ 
    var label = 1000000*(sum1%1000) + 1000*(sum2%1000) + year%1000; 
    return label; 

Ich möchte jetzt eine Funktion namens Sigma schreiben, die einen String ohne Leerzeichen nehmen, brechen sie Zeichen für Zeichen nach oben, und fügen Sie dann up ihre Indizes. Also würde ich eine Zeichenfolge durch easyread führen, sie in sigma einklinken, die dann in einer Iteration auf jedes Zeichen in der Zeichenfolge auf Bijektion verweisen würde, und etwas Mathematik machen, um die Summe jeder Bijektion (Zeichen) zurückzugeben. Ich würde was Sigma-Ausgaben nehmen, und es muss eine Eingabe sein, um zu beschriften. Ich bin jedoch nicht sicher, wie ich Sigma zustande bringen kann. Irgendeine Hilfe?

Updates:

Dies ist, was ich so weit gekommen.

function sigma(noun){ 
    var domain = easyread(noun) //removes spaces from input noun 
    for(let n = 0; n<domain.length; n++) { 
    //start with n = 0, and stop when n is incrementally larger than the length of our spaces-removed string. 
    let iterative = domain[n]; //not sure what this is bijection(iterative); 
           //tells the computer to calculate the bijection of each character 
    } //return sum of all bijection(iterative), somehow? } 
+2

Willkommen bei SO! Es wäre hilfreich, wenn Sie den Code zeigen würden, den Sie zusammengestellt haben. Sie können auch http://stackoverflow.com/help/mcve lesen. – silencedmessage

+0

Verwenden Sie ['split'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split), um die Zeichenfolge in ein Array zu teilen, [map] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), um die Buchstaben in zu konvertieren Zahlen und ['reduce'] (https: //developer.mozilla.org/de-DE/docs/Web/JavaScript/Referenz/Global_Objects/Array/Reduce), um sie zusammenzufassen. – Xufox

+0

Als Nebenbemerkung: Sie sollten in Betracht ziehen, Wörter wie "das" vom Anfang des Liedtitels zu entfernen, bevor Sie die Berechnung durchführen, so dass z. B. "Die Macht der Liebe" und "Macht der Liebe" das gleiche Ergebnis erhalten würden. – nnnnnn

Antwort

0

Vorausgesetzt, dass Sie ziemlich neu in Javascript, werde ich mein Bestes versuchen, mit komplexen APIs zu vermeiden.

Im Wesentlichen, um alle Räume zu entfernen, müssen Sie eine string.replace(...) tun. Wo die API ein reguläres Ausdrucksmuster annimmt. So wollen Sie etwas wie /\s/g zu sagen, ich möchte "alle Leerzeichen innerhalb der Zeichenfolge" und der 2. Parameter wäre nur '', das heißt mit ihm durch "" zu ersetzen.

Danach werden Sie durch die einzelnen Zeichen in der spaceless Zeichenfolge Wert durchlaufen müssen, tun Sie einfach eine einfache for-loop und auf jeder Schleife rufen Sie Ihre bijection() Funktion.

Betrachten Sie den folgenden Code.

Beispiel:

"use strict"; 
 
    function bijection(char) { 
 
     // Assuming this is your bijection fn 
 
     console.log("converting character: " + char + " into value..."); 
 
     return 10; // assuming every character is value of 10. 
 
    } 
 

 
    let test = "one which may have spaces "; 
 
    let nospace = test.replace(/\s/g, ""); 
 
    let totalValue = 0; 
 

 
    for(let n = 0; n < nospace.length; n++) { 
 
     let char = nospace[n]; 
 
     totalValue += bijection(char); 
 
    } 
 

 
    console.log("Total Value is => " + totalValue);

+0

Hoffe das hilft. Lassen Sie mich wissen, wenn Sie dies weiter diskutieren möchten –

+0

Er hat bereits die '.replace()' -Funktion geschrieben. Es heißt 'easyread()'. Also sollte der Code "let nospace = easyread (test)" sein. – slebetman

+0

Ich verstehe die Bedingung in dieser for-Schleife nicht ganz, aber der Rest ist managbar. Wie bekommen wir nun die Summe Bijektion ("t") + Bijektion ("w") + ... + Bijektion ("u") + Bijektion ("b") aus dieser Schleife? –

Verwandte Themen