La méthode ne fait pas ce que tu penses. Elle supprime les i premiers éléments de la chaîne, au lieu de retirer uniquement l'élément d'indice i. En fait la méthode que tu cherches n'existe pas, je crois. Mais tu peux utiliser substring :
(chaîne.substring(0, i) + chaîne.substring(i+1)).permutations2.map(x + _)
La raison pour laquelle ton code fait une stack overflow est la suivante : puisque drop(i) retire tous les i premiers éléments, lorsque i vaut 0, elle ne retire rien. chaîne.drop(0) == chaîne. Donc tu te rappelles récursivement avec la même chaîne, et ça n'en finit pas !
PS : ça sent le devoir, donc c'est probablement interdit, mais si jamais il existe aussi la méthode... permutations ^^
PS 2 : l'accent circonflexe dans chaîne, pour un identificateur, c'est quand même bof bof...
PS 3 : mets une majuscule à ta classe Utils, et fais-la "extends AnyVal" pour éviter les créations d'instances inutiles.
Voir aussi :
http://www.scala-lang.org/api/curren...able.StringOps
Partager