To jest pytanie do golfa. Musisz wziąć zawartość dwóch oddzielnych plików (i.txt i o.txt) i zamienić je. Możesz utworzyć trzeci plik, który pomoże ci w tym procesie, ale twój program usunie go po zamianie zawartości pliku. Zmiana nazw plików jest teraz znów dozwolona.
Programy muszą działać dla dowolnej zawartości pliku.
Zwycięża najkrótszy kod, wszystkie kwalifikujące się zgłoszenia zostaną poddane pod głosowanie.
inode
s celem tutaj byłoby dlai.txt
„sinode
zawierać dane zo.txt
” sinode
i odwrotnie, tak, że jeśli istnieją hardlinki do tychinode
s gdzie indziej, ich zawartość będzie wyświetlana wymienili również. Zmiana nazwy nie może tego osiągnąć.Odpowiedzi:
zsh, 20
źródło
i=`<i.txt`;<o*>i*;<<<$i>o*
. Szkoda, że to musi być krótsze.<t>o*;rm t
jemv t o*
!Python, 77
Python, 65
Python, 63
PHP, 68
Plik wsadowy Windows, 42
Plik wsadowy Windows (args), 30
źródło
$r=rename
do tworzenia aliasów funkcji w PHP. Dzięki!Dwa ansery bazujące na bash ; 52 i 62 znaki
shell: diff + patch (+ tee + sed ...) 52
Może nie krótszy, ale uważam to za zabawne (i nie ma zastosowania pliku tymczasowego ):
W przypadku wymiany treści i modyfikacji plików w miejscu :
Przykładowy przebieg
Może produkować coś takiego:
użycie xargs w celu uproszczenia
mv
żądańNie tak zabawny, ale i tak miły.
źródło
patching file o.txt
pojawia się tylko jeden .PHP, 89
Myślałem, że dam temu szansę.
Wersja bez golfa:
Najwyraźniej wziąłem tutaj 2 odpowiedzi i połączyłem je ... no cóż.
źródło
Rubinowy, 72 bajty
Łał! Golf Ruby Code! Nie sądzę, żeby kiedykolwiek próbowano!
W rzeczywistości wymagało to jednak ładnych skrótów Ruby i kilku wzorów, które znalazłem. To był mój pierwszy golf i to było bardzo fajne. Bez zbędnych ceregieli, oto kod do gry w golfa:
I wersja bez golfa
Kluczowym czynnikiem jest to, że parametry przekazywane do
File.rename
są dokładnie takie:Mam nadzieję, że to (nie) ma sens!
źródło
PowerShell,
4449 bajtówgdzie
ren
jest alias dla Rename-Item . Skrypt wykorzystuje i usuwa trzeci plika.txt
.źródło
gc
domyślnie jest to UTF8NoBOM, alesc
domyślnie jest to ASCII. Wypróbuj niektóre pliki UTF-8 lub pliki binarne, a zobaczysz, jak może się nie powieść.-e by -n
parametry, aby pliki pozostały niezmienione. Byłoby miło dodać parametr-readCount 0
do wydajności. Skrypt zrename
jest krótszy :) Naprawiono.Rubin
Skrócona wersja:
Nie najkrótszy, ale bardzo prosty i łatwy do odczytania. Brak plików pośrednich, tylko pamięć RAM.
źródło
PHP
źródło
Skrypt powłoki, 24
Działa w Bash i prawdopodobnie w większości powłok. Przekaż z dwoma nazwami plików jako parametrami.
Jeśli chcesz naprawić nazwy plików, zrobi to za karę 12 znaków:
źródło
mv
operacjecp
.Pyton:
źródło
Plik wsadowy Windows (48)
Zapomniałem o poleceniu move, pisząc to ...
źródło
a
plik!C 162
Gra w golfa: używa t.txt jako pliku tmp i zamienia nazwy, a następnie usuwa t.txt.
Edycja: usunięto 2 spacje
źródło
PHP - 172
Wersja odpowiedzi EisaAdil w golfa
źródło
Rebol - 46 (zmiana nazwy pliku) lub 55 (zawartość r / w)
Zmień nazwę pliku (używając
t
jako pliku tymczasowego):Wczytaj, a następnie zapisz zawartość pliku:
źródło
PHP, 45
Niezbyt golfowy, ale jak dotąd najkrótszy PHP.
źródło
Groovy - 99 znaków
To jest moja próba z Groovy 2.2.1. Próbowałem to zrobić bez zmiany nazwy:
Nie golfowany:
źródło
VBA (148 ... 132) i (126 ... 110)
Zmiana nazwy za pomocą pliku tymczasowego t na dysku c: \. Również pierwsza próba golfa: S
Jeżeli odwołanie do scrrun.dll już istnieje, może go nieco obniżyć do 126 ... 110.
źródło
C: 65 znaków
Dość proste rozwiązanie w C, które spełnia swoje zadanie. Używa tymczasowej nazwy (
.txt
) dla jednego z plików przed nadaniem mu poprawnej nowej nazwy.Niegolfowany (zwróć uwagę na to, jak podświetlenie składni kończy się niepowodzeniem w definicji, wykryto błąd!):
źródło
Perl, 120 bajtów (zamiana zawartości bez zmiany nazwy pliku)
Zawartość pliku jest zapisywana w pamięci i zapisywana z powrotem w innym pliku. Tak więc
i.txt
io.txt
musi pasować do pamięci.Ponieważ zawartość pliku jest faktycznie wymieniana, twarde linki są aktualizowane automatycznie, patrz komentarz AJManfield .
Nie golfowany:
źródło
Pakiet Windows, 39 bajtów
źródło
Lua ,
7170 bajtówWypróbuj online!
Zdefiniuj
os
bibliotekę systemu operacyjnego jako tabelę globalną, abyśmy mogli pisaćrename
iremove
zamiastos.rename
ios.remove
. (Nawiasem mówiąc, oznacza to również, że zmienne jednoliterowe są w rzeczywistości polami wos
tabeli.) Utwórz krótki alias,os.rename
aby zaoszczędzić trochę miejsca. Skonfiguruj zmienne nazw plików, używając ich'.txt'
jako pliku tymczasowego. Wykonaj zmianę nazwy i usuwanie.źródło
PHP, 52 bajty
Pyta Anyway zmodernizowany i grał w golfa:
Uruchom z
php -nr '<code>'
.źródło
Tcl , 122 bajty
Wypróbuj online!
Tcl , 169 bajtów
Wypróbuj online!
źródło
SmileBASIC,
3635 bajtówźródło