Esta é uma questão de código-golfe. Você precisa pegar o conteúdo de dois arquivos separados (i.txt e o.txt) e trocá-los. Você pode criar um terceiro arquivo para ajudá-lo no processo, mas seu programa o exclui após a troca do conteúdo do arquivo. Renomear os arquivos agora é permitido novamente.
Os programas devem funcionar para qualquer conteúdo de arquivo.
Se o código mais curto vencer, todos os envios elegíveis serão votados positivamente.
inode
s o objetivo aqui seria parai.txt
éinode
para conter os dados deo.txt
'sinode
, e vice-versa, de modo que se houver hardlinks àquelesinode
é em outro lugar, seu conteúdo será apresentado trocados também. Renomear não pode fazer isso.Respostas:
zsh, 20
fonte
i=`<i.txt`;<o*>i*;<<<$i>o*
. É uma pena que isso tenha que ser mais curto.<t>o*;rm t
pormv t o*
!Python, 77
Python, 65
Python, 63
PHP, 68
Arquivo em lote do Windows, 42
Arquivo em lote do Windows (args), 30
fonte
$r=rename
para criar aliases para funções em PHP. Obrigado!Dois ansers baseados em bash ; 52 e 62 caracteres
shell: diff + patch (+ tee + sed ...) 52
Talvez não seja o mais curto, mas acho isso divertido (e não há uso de arquivo temporário ):
Onde o conteúdo é trocado e os arquivos são modificados no local :
Execução de amostra
Pode produzir algo como:
uso de xargs para simplificar
mv
solicitaçõesNão é tão engraçado, mas agradável de qualquer maneira.
fonte
patching file o.txt
aparece.PHP, 89
Eu pensei em tentar.
Versão não destruída:
Aparentemente, peguei 2 respostas aqui e as combinei .. tudo bem.
fonte
Ruby, 72 bytes
Uau! Um código de golfe Ruby! Acho que nunca foi tentado antes!
Em toda a realidade, porém, isso exigiu alguns bons atalhos de Ruby e alguns padrões que eu encontrei. Foi o meu primeiro golfe e foi muito divertido de fazer. Sem mais delongas, aqui está o código do golfe:
E a versão ungolfed
O fator chave nisso é que os parâmetros passados para
File.rename
são exatamente isso:Espero que isso (não) faça sentido!
fonte
Powershell,
4449 bytesonde
ren
é o alias para Renomear-Item . O script usa e exclui um terceiro arquivoa.txt
.fonte
gc
padrão é UTF8NoBOM, mas osc
padrão é ASCII. Experimente alguns arquivos UTF-8 ou arquivos binários e você poderá ver como isso pode falhar.-e by -n
parâmetros para garantir que os arquivos não sejam alterados. Seria bom adicionar um parâmetro-readCount 0
ao desempenho. O script comrename
é mais curto :) Corrigido.Rubi
Versão abreviada:
Não é o mais curto, mas muito simples e fácil de ler. Além disso, não há arquivos intermediários, apenas RAM.
fonte
PHP
fonte
Script de shell, 24
Funciona no Bash e provavelmente na maioria das conchas. Passe com seus dois nomes de arquivos como parâmetros.
Se você quiser nomes de arquivos fixos, será o caso, por uma penalidade de 12 caracteres:
fonte
mv
operações, nãocp
.Pitão:
fonte
Arquivo em lote do Windows (48)
Eu esqueci o comando mover quando escrevi isso ...
fonte
a
arquivo!C 162
Golfe: usa t.txt como arquivo tmp e troca nomes, depois remove t.txt.
Editar: 2 espaços removidos
fonte
PHP - 172
Versão golfe da resposta de @ EisaAdil
fonte
Rebol - 46 (renomear arquivo) ou 55 (conteúdo em r / w)
Renomeie o arquivo (usando
t
como arquivo temporário):Leia e escreva o conteúdo do arquivo:
fonte
PHP, 45
Não é muito golfy, mas o PHP mais curto até agora.
fonte
Groovy - 99 caracteres
Esta é a minha tentativa, com o Groovy 2.2.1. Eu tentei fazer isso sem renomear:
Ungolfed:
fonte
VBA (148 ... 132) e (126 ... 110)
Renomeando com um arquivo temporário t na unidade c: \. Também primeira tentativa de golfe: S
Se o scrrun.dll já estiver mencionado, poderá reduzir um pouco para 126 ... 110.
fonte
C: 65 caracteres
Uma solução bastante simples em C que faz o trabalho. Ele usa um nome temporário (
.txt
) para um dos arquivos antes de atribuir seu novo nome adequado.Ungolfed (observe como o realce da sintaxe falha na definição, um bug foi descoberto!):
fonte
Perl, 120 bytes (troca de conteúdo sem renomear arquivos)
O conteúdo do arquivo é colocado na memória e gravado de volta no outro arquivo. Assim
i.txt
eo.txt
deve caber na memória.Como o conteúdo do arquivo é realmente trocado, os links físicos são atualizados automaticamente, consulte o comentário do AJManfield .
Ungolfed:
fonte
Lote do Windows, 39 bytes
fonte
Lua ,
7170 bytesExperimente online!
Defina
os
, a biblioteca do sistema operacional, como a tabela global para que possamos escreverrename
e emremove
vez deos.rename
eos.remove
. (Aliás, isso também significa que as variáveis de uma letra são realmente campos daos
tabela.) Crie um apelido curto paraos.rename
economizar espaço. Configure variáveis de nome de arquivo, usando'.txt'
como arquivo temporário. Renomeie e exclua.fonte
PHP, 52 bytes
O php de AsksAnyway modernizado e jogado:
Corra com
php -nr '<code>'
.fonte
Tcl , 122 bytes
Experimente online!
Tcl , 169 bytes
Experimente online!
fonte
SmileBASIC,
3635 bytesfonte