Esta es una pregunta de código de golf. Debe tomar el contenido de dos archivos separados (i.txt y o.txt) e intercambiarlos. Puede crear un tercer archivo para ayudarlo con el proceso, pero haga que su programa lo elimine después de intercambiar el contenido del archivo. Cambiar el nombre de los archivos ahora está permitido nuevamente.
Los programas deben funcionar para cualquier contenido de archivo.
El código más corto gana, todos los envíos elegibles serán votados.
inode
s el objetivo aquí sería quei.txt
'sinode
para contener los datos deo.txt
' sinode
, y viceversa, por lo que si hay enlaces duros a los queinode
s en otro lugar, su contenido aparecerán intercambian también. Cambiar el nombre no puede lograr eso.Respuestas:
zsh, 20
fuente
i=`<i.txt`;<o*>i*;<<<$i>o*
. Es una pena que esto sea más corto.<t>o*;rm t
pormv t o*
!Python, 77
Python, 65
Python, 63
PHP, 68
Archivo por lotes de Windows, 42
Archivo por lotes de Windows (args), 30
fuente
$r=rename
para crear alias para funciones en PHP. ¡Gracias!Dos bash respuestas basadas en ; 52 y 62 caracteres
shell: diff + patch (+ tee + sed ...) 52
Tal vez no sea el más corto, pero me parece divertido (y no hay uso de archivos temporales ):
Donde el contenido se intercambia y los archivos se modifican en su lugar :
Ejecución de la muestra
Podría producir algo como:
uso de xargs para simplificar
mv
solicitudesNo tan divertido, pero agradable de todos modos.
fuente
patching file o.txt
aparece uno .PHP, 89
Pensé en intentarlo.
Versión sin golf:
Aparentemente tomé 2 respuestas de aquí y las combiné ... oh, bueno.
fuente
Ruby, 72 bytes
¡Guauu! ¡Un código de rubí de golf! ¡No creo que se haya intentado antes!
Sin embargo, en realidad, esto requirió algunos atajos de Ruby agradables y un par de patrones que encontré. Fue mi primer golf y fue muy divertido hacerlo. Sin más preámbulos, aquí está el código de golf:
Y la versión sin golf
El factor clave en esto es que los parámetros pasados al
File.rename
son esto, exactamente:Espero que esto (no) tenga sentido!
fuente
Powershell,
4449 bytesdonde
ren
es alias para Rename-Item . El script usa y elimina un tercer archivoa.txt
.fuente
gc
valor predeterminado es UTF8NoBOM pero elsc
valor predeterminado es ASCII. Pruebe algunos archivos UTF-8 o archivos binarios y podrá ver cómo puede fallar.-e by -n
parámetros para garantizar que los archivos no cambien. Sería bueno agregar un parámetro-readCount 0
al rendimiento. El script conrename
es más corto :) Corregido.Rubí
Versión acortada:
No es el más corto, pero muy simple y fácil de leer. Además, no hay archivos intermedios, solo RAM.
fuente
PHP
fuente
Shell script, 24
Funciona en Bash y probablemente en la mayoría de las conchas. Pase con sus dos nombres de archivo como parámetros.
Si desea nombres de archivo fijos, esto lo hará, por una penalización de 12 caracteres:
fuente
mv
operaciones, nocp
.Pitón:
fuente
Archivo por lotes de Windows (48)
Olvidé el comando mover cuando escribí esto ...
fuente
a
archivo!C 162
Golfed: utiliza t.txt como archivo tmp y cambia nombres y luego elimina t.txt.
Editar: eliminado 2 espacios
fuente
PHP - 172
Versión de golf de la respuesta de @ EisaAdil
fuente
Rebol - 46 (cambiar el nombre del archivo) o 55 (contenido de r / w)
Cambiar el nombre del archivo (usando
t
como archivo temporal):Lea y luego escriba el contenido del archivo:
fuente
PHP, 45
No es muy golfoso pero el PHP más corto hasta ahora.
fuente
Groovy - 99 caracteres
Este es mi intento, con Groovy 2.2.1. Traté de hacerlo sin renombrar:
Sin golf:
fuente
VBA (148 ... 132) y (126 ... 110)
Cambiar el nombre con un archivo temporal t en la unidad c: \. También primer intento de golf: S
Si scrrun.dll ya está referenciado, podría reducirlo un poco a 126 ... 110.
fuente
C: 65 caracteres
Una solución bastante simple en C que hace el trabajo. Utiliza un nombre temporal (
.txt
) para uno de los archivos antes de darle su nuevo nombre.Ungolfed (observe cómo falla el resaltado de sintaxis en la definición, ¡se ha descubierto un error!):
fuente
Perl, 120 bytes (intercambio de contenido sin cambio de nombre de archivo)
El contenido del archivo se guarda en la memoria y se vuelve a escribir en el otro archivo. Así
i.txt
yo.txt
debe caber en la memoria.Dado que el contenido del archivo se intercambia realmente, los enlaces duros se actualizan automáticamente, vea el comentario de AJManfield .
Sin golf:
fuente
Lote de Windows, 39 bytes
fuente
Lua ,
7170 bytesPruébalo en línea!
Defina
os
, la biblioteca del sistema operativo, como la tabla global para que podamos escribirrename
y enremove
lugar deos.rename
yos.remove
. (Por cierto, esto también significa que las variables de una letra son en realidad campos de laos
tabla). Haga un alias corto paraos.rename
ahorrar algo de espacio. Configure variables de nombre de archivo, utilizando'.txt'
como archivo temporal. Renombra y elimina.fuente
PHP, 52 bytes
Pregunta php de Anyway modernizado y golf:
Corre con
php -nr '<code>'
.fuente
Tcl , 122 bytes
Pruébalo en línea!
Tcl , 169 bytes
Pruébalo en línea!
fuente
SmileBASIC,
3635 bytesfuente