Ich schreibe das Hinweis-System für ein Quiz. Die Hinweise sollen Anagramme der Antworten sein. Um die Anagramme zu vereinfachen, behalte ich die ersten und letzten Buchstaben gleich.Wie erzeugt man einfache Anagramme, die Interpunktion erhalten?
var _ = require('underscore');
var easy = function(s) {
if (s.length <= 1) {
return s;
}
return s[0] + _.shuffle(s.slice(1, -1)).join("") + s.slice(-1);
};
Für mehrere Wort Antworten möchte ich jedes Wort separat anagrammieren. Ich schrieb:
Allerdings verliert dies jede Interpunktion in der Antwort (Ersetzen Sie es mit einem Leerzeichen). Ich möchte die Interpunktion in ihrer ursprünglichen Position behalten. Wie kann ich das machen?
Hier sind drei Beispiele testen auf:
console.log(peasy("mashed potatoes"));
console.log(peasy("computer-aided design"));
console.log(peasy("sophie's choice"));
Meine Funktion peasy
über das zweite und drittes Beispiel schlägt fehl, weil es Bindestrich und Apostroph verliert.
Ihre 'easy' Funktion kann zurückgeben 'S', wenn' (s.length <= 3) '. Wenn Sie die ersten und letzten Zeichen beibehalten, werden nur Strings mit einer Länge von mehr als 3 wirklich gemischt ... – ericbn