dog
ist ein Befehlszeilenprogramm, das eine beliebige Anzahl von Argumenten aufnimmt, von denen das erste der zu schreibende Text ist und die anderen beliebig viele Dateien sind.
Das dog
Dienstprogramm teilt den Text zu gleichen Teilen auf diese Dateien auf. Wenn es einen Rest gibt n
, erhalten die ersten n
Dateien ein zusätzliches Byte
dog
ist das Gegenteil von cat
als solches für alle, x
sollte das Folgende gelten.
$> dog x a.txt b.txt ...
$> cat a.txt b.txt ...
x$>
Wobei ...
beliebig viele Dateien angezeigt werden.
Ein Beispiel (12 Bytes, 3 Dateien, können gleichmäßig aufgeteilt werden):
$> ./dog.py "Dogs vs Cats" a.txt b.txt c.txt
$> cat a.txt
Dogs$> cat b.txt
vs $> cat c.txt
Cats$> cat a.txt b.txt c.txt
Dogs vs Cats$>
Ein Beispiel mit Rest (13 Bytes, 5 Dateien, Rest 3):
9$>./dog.py "0123456789abc" a.txt b.txt c.txt d.txt e.txt
$> cat a.txt
012$> cat b.txt
345$> cat c.txt
678$> cat d.txt
9a$> cat e.txt
bc$> cat a.txt b.txt c.txt d.txt e.txt
0123456789abc$>
code-golf
string
file-system
Caridorc
quelle
quelle
tac
ist echt .Antworten:
Pyth - 12 Bytes
Verwendet die integrierte Split-Funktion und dann die Splat-Map für die Schreibfunktion. Funktioniert nicht online.
quelle
Python - 181 Bytes
quelle
PHP, 107 Bytes
Der Golfcode:
Der detaillierte Code:
quelle
Pure Bash: 97
Als Funktion: (
p=
wird nur für den zweiten Lauf benötigt)Tests
Alle Dateien sind 4 Byte lang und in der richtigen Reihenfolge verkettet. Sie enthalten "Dogs vs Cats" .
Die ersten Dateien sind 3 Byte lang und die letzten nur 2, in alphabetischer Reihenfolge verkettet, enthalten "0123456789abc" .
Erklärung (ungolfing):
Wenn Sie getroffen:
declare -f dog
, bash beantworten:Dies könnte geschrieben werden:
quelle
Ruby,
9387 BytesVollständiges Programm mit Befehlszeilenargumenten.
Wenn ich
s.slice!
die Zeichenfolge mutieren könnte , würde ich das tun, anstatt sie verwenden zu müssens[c..-1]
, aber Ruby lässt Sie die Zeichenfolgen nicht von argv mutieren, ohne sie vorher zu duplizierenquelle