C'est une question de code-golf. Vous devez prendre le contenu de deux fichiers distincts (i.txt et o.txt) et les échanger. Vous pouvez créer un troisième fichier pour vous aider dans le processus, mais demandez à votre programme de le supprimer une fois le contenu du fichier échangé. Renommer les fichiers est à nouveau autorisé.
Les programmes doivent fonctionner pour tout contenu de fichier.
Le code le plus court gagne, toutes les soumissions éligibles seront votées.
inode
s, le but ici serait quei.txt
les sinode
contiennent les donnéeso.txt
des sinode
, et vice versa, de sorte que s'il existe des liens physiques vers cesinode
s ailleurs, leur contenu apparaîtra également échangé. Renommer ne peut pas accomplir cela.Réponses:
zsh, 20
la source
i=`<i.txt`;<o*>i*;<<<$i>o*
. C'est dommage que cela doive être plus court.<t>o*;rm t
parmv t o*
!Python, 77
Python, 65
Python, 63
PHP, 68
Fichier de commandes Windows, 42
Fichier de commandes Windows (args), 30
la source
$r=rename
pour créer des alias de fonctions en PHP. Merci!Deux bash ansers à base de ; 52 et 62 caractères
coque: diff + patch (+ tee + sed ...) 52
Peut-être pas le plus court, mais je trouve ça amusant (et il n'y a pas d'utilisation de fichier temporaire ):
Où le contenu est échangé et les fichiers sont modifiés en place :
Exemple d'exécution
Pourrait produire quelque chose comme:
utilisation de xargs pour simplifier
mv
requêtesPas aussi drôle, mais sympa quand même.
la source
patching file o.txt
apparaît.PHP, 89
Je pensais que je lui donnerais une chance.
Version non golfée:
Apparemment, j'ai pris 2 réponses d'ici et les ai combinées .. eh bien.
la source
Rubis, 72 octets
Hou la la! Un golf Ruby Code! Je ne pense pas que cela ait été tenté auparavant!
Dans toute la réalité cependant, cela nécessitait de bons raccourcis Ruby et quelques modèles que j'ai trouvés. C'était mon tout premier golf et c'était très amusant à faire. Sans plus tarder, voici le code du golf:
Et la version non golfée
Le facteur clé est que les paramètres passés au
File.rename
sont exactement les suivants:J'espère que cela n'a pas de sens!
la source
Powershell,
4449 octetsoù
ren
est l'alias de Rename-Item . Le script utilise et supprime un troisième fichiera.txt
.la source
gc
valeur par défaut est UTF8NoBOM mais lasc
valeur par défaut est ASCII. Essayez des fichiers UTF-8 ou des fichiers binaires et vous pouvez voir comment cela peut échouer.-e by -n
paramètres pour garantir que les fichiers restent inchangés. Ce serait bien d'ajouter un paramètre-readCount 0
aux performances. Le script avecrename
est plus court :) Fixe.Rubis
Version raccourcie:
Pas le plus court, mais très simple et facile à lire. En outre, aucun fichier intermédiaire, uniquement de la RAM.
la source
PHP
la source
Script shell, 24
Fonctionne dans Bash et probablement la plupart des coquilles. Passez avec vos deux noms de fichiers comme paramètres.
Si vous voulez des noms de fichiers fixes, cela le fera, pour une pénalité de 12 caractères:
la source
mv
opérations, noncp
.Python:
la source
Fichier de commandes Windows (48)
J'ai oublié la commande move lorsque j'ai écrit ceci ...
la source
a
fichier!C 162
Golfé: utilise t.txt comme fichier tmp et échange les noms, puis supprime t.txt.
Edit: supprimé 2 espaces
la source
PHP - 172
Version golfée de la réponse de @ EisaAdil
la source
Rebol - 46 (renommer le fichier) ou 55 (contenu r / w)
Renommer le fichier (en utilisant
t
comme fichier temporaire):Lisez puis écrivez le contenu du fichier:
la source
PHP, 45
Pas très golfique mais le PHP le plus court jusqu'à présent.
la source
Groovy - 99 caractères
C'est ma tentative, avec Groovy 2.2.1. J'ai essayé de le faire sans renommer:
Non golfé:
la source
VBA (148 ... 132) et (126 ... 110)
Renommer avec un fichier temporaire t dans le lecteur c: \. Aussi première tentative de golf: S
Si scrrun.dll est déjà référencé, pourrait le réduire un peu à 126 ... 110.
la source
C: 65 caractères
Une solution assez simple en C qui fait l'affaire. Il utilise un nom temporaire (
.txt
) pour l'un des fichiers avant de lui donner son nouveau nom approprié.Ungolfed (notez comment la coloration syntaxique échoue dans la définition, un bug a été découvert!):
la source
Perl, 120 octets (échange de contenu sans changement de nom de fichier)
Le contenu du fichier est mis en mémoire et réécrit dans l'autre fichier. Ainsi
i.txt
eto.txt
doit s'inscrire dans la mémoire.Étant donné que le contenu du fichier est réellement échangé, les liens physiques sont mis à jour automatiquement, voir le commentaire d'AJManfield .
Non golfé:
la source
Windows Batch, 39 octets
la source
Lua ,
7170 octetsEssayez-le en ligne!
Définissez
os
, la bibliothèque du système d'exploitation, comme la table globale afin que nous puissions écrirerename
etremove
au lieu deos.rename
etos.remove
. (Soit dit en passant, cela signifie également que les variables à une lettre sont en fait des champs de laos
table.) Créez un alias court pouros.rename
économiser de l'espace. Configurez les variables de nom de fichier en utilisant'.txt'
comme fichier temporaire. Faites le renommage et la suppression.la source
PHP, 52 octets
Le php d'AsksAnyway modernisé et golfé:
Courir avec
php -nr '<code>'
.la source
Tcl , 122 octets
Essayez-le en ligne!
Tcl , 169 octets
Essayez-le en ligne!
la source
SmileBASIC,
3635 octetsla source