Dies ist eine Code-Golf-Frage. Sie müssen den Inhalt von zwei separaten Dateien (i.txt und o.txt) nehmen und diese austauschen. Sie können eine dritte Datei erstellen, die Sie bei diesem Vorgang unterstützt. Ihr Programm löscht sie jedoch, nachdem der Dateiinhalt ausgetauscht wurde. Das Umbenennen der Dateien ist nun wieder erlaubt.
Programme müssen für jeden Dateiinhalt funktionieren.
Gewinnt der kürzeste Code, werden alle teilnahmeberechtigten Einsendungen upgestimmt.
inode
s verwendet wird, ist das Ziel, dassi.txt
sinode
die Daten vono.txt
s enthältinode
und umgekehrt. Wenn also aninode
anderer Stelle Hardlinks zu diesen bestehen , werden deren Inhalte ebenfalls ausgetauscht. Umbenennen kann das nicht.Antworten:
zsh, 20
quelle
i=`<i.txt`;<o*>i*;<<<$i>o*
. Schade, dass das kürzer sein muss.<t>o*;rm t
indemmv t o*
Sie durch ersetzen !Python, 77
Python, 65
Python, 63
PHP, 68
Windows-Batchdatei, 42
Windows-Batchdatei (args), 30
quelle
$r=rename
Aliase für Funktionen in PHP erstellen können . Vielen Dank!Zwei bash basierte ansers; 52 und 62 Zeichen
Shell: Diff + Patch (+ Tee + Sed ...) 52
Vielleicht nicht die kürzere, aber ich finde das lustig (und es gibt keine Verwendung von temporären Dateien):
Wo Inhalte getauscht und Dateien werden geändert in Ort :
Probelauf
Könnte so etwas produzieren wie:
Verwendung von xargs zur Vereinfachung von
mv
AnfragenNicht so lustig, aber trotzdem nett.
quelle
patching file o.txt
angezeigt wird.PHP, 89
Ich dachte, ich würde es versuchen.
Ungolfed-Version:
Anscheinend habe ich 2 Antworten von hier genommen und sie kombiniert .. na ja.
quelle
Ruby, 72 Bytes
Beeindruckend! Ein Ruby Code Golf! Ich glaube nicht, dass das jemals zuvor versucht wurde!
In Wirklichkeit waren dafür einige nette Ruby-Shortcuts und ein paar Patterns erforderlich, die ich gefunden habe. Es war mein erstes Golfspiel überhaupt und es hat sehr viel Spaß gemacht. Hier ist ohne weiteres der Golf-Code:
Und die ungolfed version
Der Schlüsselfaktor dabei ist, dass die Parameter an den übergebenen
File.rename
genau dies sind:Hoffe das ergibt (keinen) Sinn!
quelle
Powershell,
4449 Byteswo
ren
ist Alias für Rename-Item . Das Skript verwendet und löscht eine dritte Dateia.txt
.quelle
gc
Standardeinstellung UTF8NoBOM ist, ist diesc
Standardeinstellung ASCII. Probieren Sie einige UTF-8-Dateien oder Binärdateien aus, und Sie können sehen, wie es fehlschlagen kann.-e by -n
Parameter benötigt , um sicherzustellen, dass die Dateien unverändert bleiben. Es wäre schön,-readCount 0
der Leistung einen Parameter hinzuzufügen . Das Skript mitrename
ist kürzer :) Behoben.Rubin
Verkürzte Version:
Nicht die kürzeste, aber sehr einfach und leicht zu lesen. Auch keine Zwischendateien, nur RAM.
quelle
PHP
quelle
Shell-Skript, 24
Funktioniert in Bash und wahrscheinlich den meisten Shells. Übergeben Sie mit Ihren beiden Dateinamen als Parameter.
Wenn Sie feste Dateinamen möchten, ist dies gegen eine Gebühr von 12 Zeichen möglich:
quelle
mv
Operationen, nichtcp
.Python:
quelle
Windows-Batchdatei (48)
Ich habe den Move-Befehl vergessen, als ich das geschrieben habe ...
quelle
a
Datei überschrieben !C 162
Golfed: Verwendet t.txt als tmp-Datei und tauscht die Namen aus, entfernt dann t.txt.
Bearbeiten: 2 Leerzeichen entfernt
quelle
PHP - 172
Golf-Version von @ EisaAdils Antwort
quelle
Rebol - 46 (Datei umbenennen) oder 55 (Schreib- / Leseinhalt)
Datei umbenennen (
t
als temporäre Datei verwenden):Dateiinhalt einlesen, dann ausschreiben:
quelle
PHP, 45
Nicht sehr golfen, aber bisher kürzestes PHP.
quelle
Groovy - 99 Zeichen
Dies ist mein Versuch mit Groovy 2.2.1. Ich habe versucht, es zu tun, ohne es umzubenennen:
Ungolfed:
quelle
VBA (148 ... 132) und (126 ... 110)
Umbenennen mit einer temporären Datei t im Laufwerk c: \. Auch erster Golfversuch: S
Wenn scrrun.dll bereits referenziert ist, könnte es ein bisschen auf 126 ... 110 reduziert werden.
quelle
C: 65 Zeichen
Eine recht einfache Lösung in C, die den Job macht. Es verwendet einen temporären Namen (
.txt
) für eine der Dateien, bevor es den richtigen neuen Namen erhält.Ungolfed (Beachten Sie, wie die Syntax-Hervorhebung im Define fehlschlägt, ein Fehler wurde aufgedeckt!):
quelle
Perl, 120 Bytes (Inhaltsaustausch ohne Dateiumbenennung)
Der Dateiinhalt wird in den Speicher gestellt und in die andere Datei zurückgeschrieben. So
i.txt
undo.txt
muss ins Gedächtnis passen.Da der Dateiinhalt tatsächlich ausgetauscht wird, werden Hardlinks automatisch aktualisiert, siehe AJManfields Kommentar .
Ungolfed:
quelle
Windows Batch, 39 Bytes
quelle
Lua ,
7170 BytesProbieren Sie es online!
Definieren Sie
os
die Betriebssystembibliothek als globale Tabelle, damit wir schreibenrename
undremove
anstelle vonos.rename
undos.remove
. (Dies bedeutet im Übrigen auch, dass die Ein-Buchstaben-Variablen tatsächlich Felder in deros
Tabelle sind.) Erstellen Sie einen kurzen Alias füros.rename
, um Platz zu sparen. Richten Sie Dateinamenvariablen'.txt'
als temporäre Datei ein. Führen Sie das Umbenennen und Löschen durch.quelle
PHP, 52 Bytes
AsksAnyway´s PHP modernisiert & golfen:
Laufen Sie mit
php -nr '<code>'
.quelle
Tcl , 122 Bytes
Probieren Sie es online!
Tcl , 169 Bytes
Probieren Sie es online!
quelle
SmileBASIC,
3635 Bytesquelle