Dans un seul fichier, écrivez un programme qui ne nécessite aucune entrée et ne produit aucune sortie. Lorsqu'il est exécuté, il doit inverser le nom du fichier dans lequel il se trouve, quel que soit son nom , sans altérer le code ni produire d'autres effets secondaires durables.
Tout moyen d'y parvenir est très bien. Il importe seulement qu'une fois le programme exécuté, le seul changement durable soit que son nom de fichier ait été inversé. par exemple, aucun nouveau fichier ne doit se trouver dans le répertoire.
Réexécuter le programme devrait inverser le nom. En effet, le programme devrait pouvoir être exécuté arbitrairement plusieurs fois.
Aux fins de ce défi:
- Vous pouvez supposer que les noms de fichiers sont toujours des chaînes de lettres minuscules (az) de 1 à 127 caractères. (Si votre langue nécessite que les fichiers aient des extensions pour s'exécuter, inversez simplement la partie avant l'extension, par exemple
mycode.bat
→edocym.bat
.) - Vous pouvez supposer que le fichier de code se trouve dans un répertoire lui-même afin qu'il n'ait pas de conflits de dénomination (sauf avec lui-même).
- Vous ne pouvez pas supposer que le nom de fichier n'est pas un palindrome, c'est-à-dire le même lorsqu'il est inversé. Les noms de fichiers qui sont des palindromes devraient fonctionner aussi bien que ceux qui ne le sont pas.
- Vous pouvez lire le contenu ou les métadonnées de votre fichier. Il n'y a aucune restriction de quine ici.
- Vous pouvez supposer que votre programme sera exécuté sur un système d'exploitation courant particulier, moderne (par exemple Windows / Linux), car tous les shells n'ont pas le même jeu de commandes.
Par exemple, disons que vous avez un programme Python dans un fichier appelé
mycode
dans son propre répertoire. Fonctionnementpython mycode
dans le terminal devrait entraîner une inversion du nom de fichier
edocym
. Le fichieredocym
doit être seul dans son répertoire - aucun fichier nommémycode
ne doit plus exister. Fonctionnementpython edocym
inversera le nom
mycode
, auquel cas le processus peut être répété indéfiniment.Si le même fichier Python a été renommé
racecar
(sans changer le code), puis exécutezpython racecar
rien ne devrait visiblement changer puisque "racecar" est un palindrome. Il en va de même si le nom de fichier était, disons,
a
ouxx
.
Le code le plus court en octets gagne. Tiebreaker est la réponse la plus votée.