J'ai pushé le code sur GitHub
Le résultat n'est pas le plus beau possible, mais nous sommes quand même bien contents d'avoir finalement tordu le coup à l'algo de retour à la ligne. Avec de la tail-recursion en cadeau bonus, grâce à Cédric.
A titre comparatif, on peut regarder l'implémentation par Bob Martin du même problème :
cf. le paragraphe "Case Study: Word Wrap"
A vue de nez, son code est plus lisible principalement parce qu'il utilise la méthode String.indexOf, ce que nous nous sommes interdits de faire en Clojure (bien que nous ayons utilisé String.trim...).
Sinon, comme on en discutait ce midi, on pourrait implémenter un algo "sérieux" la prochaine fois. Ma proposition est MergeSort. Pour se préparer, voici des videos sur iTunes U qui expliquent l'algo :
(en particulier les 2 et 3)
Pour les non-Apple fans, elles existent aussi quelque part directement sur le site de UC Davis.