ed, 35 caractères
s/[a-zA-Z]*\([a-zA-Z]\)\|./\1/g
p
Q
Ainsi, le monde se termine en éd. Comme j'aime être trop littéral, j'ai décidé d'écrire pour écrire la solution avec ed - et apparemment c'est en fait un langage de programmation . C'est étonnamment court, même si de nombreuses solutions plus courtes existent déjà dans ce fil. Ce serait plus agréable si je pouvais utiliser autre chose que [a-zA-Z]
, mais étant donné que ed n'est pas un langage de programmation, il est en fait assez bon.
Tout d'abord, je voudrais dire que cela analyse uniquement la dernière ligne du fichier. Il serait possible d'analyser davantage, il suffit de taper,
au début des deux premières lignes (cette plage "tout" spécifiée, par opposition à la plage de dernière ligne standard), mais cela augmenterait la taille du code à 37 caractères.
Maintenant pour des explications. La première ligne fait exactement ce que fait la solution Perl (sauf sans prise en charge des caractères Unicode). Je n'ai pas copié la solution Perl, j'ai juste inventé quelque chose de similaire par hasard.
La deuxième ligne imprime la dernière ligne, vous pouvez donc voir la sortie. La troisième ligne force à quitter - je dois le faire, sinon ed
j'imprimerais?
pour vous rappeler que vous n'avez pas enregistré le fichier.
Maintenant, comment l'exécuter. Eh bien, c'est très simple. Exécutez simplement ed
le fichier contenant le cas de test, tout en canalisant mon programme, comme ça.
ed -s testcase < program
-s
est silencieuse. Cela empêche ed
de sortir une taille de fichier laide au début. Après tout, je l'utilise comme script, pas comme éditeur, donc je n'ai pas besoin de métadonnées. Si je ne le faisais pas, ed montrerait la taille du fichier que je ne pourrais pas empêcher autrement.