EDIT J'ai modifié le libellé des règles pour rendre certaines choses implicites plus explicites. J'ai également ajouté une certaine emphase pour dissiper certains points de confusion apparente et défini explicitement l'option de créer un programme autonome au lieu d'une fonction.
Le but ici est de créer une fonction qui prend un fichier texte (ou une chaîne) et le transpose pour que les lignes deviennent des colonnes et vice versa.
Exemple:
Je suis un texte. Transpose-moi. Pouvez-vous le faire?
Résulte en:
ITC ra aan mn sy apo ou ts eed xo tm .ei .t ?
Les règles:
- Vous pouvez supposer que les seuls caractères d'espacement utilisés sont
" "
et"\n"
et qu'il n'y a aucun espace de fin sur aucune ligne. - Vous pouvez supposer que le fichier est ASCII. Le marqueur de fin que vous souhaitez utiliser dépend de vous (CRLF ou LF). Il doit fonctionner correctement sur l'exemple, mais il doit également fonctionner sur toute entrée qui satisfait aux hypothèses ci-dessus.
- Vous devrez peut-être insérer des espaces (comme dans l'exemple) là où il n'y en avait pas afin de maintenir les colonnes en ligne.
- Votre résultat ne doit avoir aucun espace de fin sur aucune ligne .
- Le dernier caractère de nouvelle ligne (pour la dernière ligne) est facultatif.
- Il doit s'agir soit d'une fonction, soit d'un programme complet. Si votre fonction accepte une chaîne, elle doit renvoyer les résultats sous forme de chaîne. S'il accepte un nom de fichier, vous retournez le nom du fichier dans lequel vous avez enregistré le résultat. Vous êtes également autorisé à écrire un programme complet qui accepte les entrées de STDIN et renvoie le résultat correct à STDOUT; si vous procédez ainsi, vous ne devez rien envoyer à STDERR.
- La procédure la plus courte l'emporte, mais je voterai pour toutes les réponses que j'aime.
Selon les règles, la sortie de l'exemple est longue de 53 ou 52 octets (pour les sauts de ligne LF) selon que le saut de ligne final est inclus ou non.
Remarque: Ce n'est pas une exigence spécifique, mais si votre fonction, lorsqu'elle est exécutée deux fois de suite, n'est pas identique à l'original (la nouvelle ligne finale peut être différente et toutes les lignes vides à la fin du fichier seront supprimées), alors vous êtes enfreignant probablement l' une des règles.