dog
утилита командной строки, которая принимает произвольное количество аргументов, первый из которых - текст, который нужно записать, а остальные - произвольное количество файлов.
dog
Утилита разделить текст на равные части над этими файлами. Если есть остаток n
, первые n
файлы получают дополнительный байт
dog
противоположность cat
, как таковая, для всего x
, следующее должно иметь место.
$> dog x a.txt b.txt ...
$> cat a.txt b.txt ...
x$>
Где ...
указывает произвольно много файлов.
Пример (12 байт, 3 файла, можно разделить равномерно):
$> ./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$>
Пример с остатком (13 байт, 5 файлов, остаток 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
источник
источник
tac
это реально .Ответы:
Pyth - 12 байт
Использует встроенную функцию split, а затем использует splat-map для функции записи. Не работает онлайн.
источник
Python - 181 байт
источник
PHP, 107 байт
Гольф-код:
Подробный код:
источник
Чистая Баш: 97
Как функция: (
p=
требуется только для второго запуска)тесты
Все файлы имеют длину 4 байта и объединены в правильном порядке, содержат «Dogs vs Cats» .
Первые файлы имеют длину 3 байта и последние только 2, объединенные в алфавитном порядке, содержат «0123456789abc» .
Пояснение (разукраска):
Если вы попали:
declare -f dog
, Баш ответит:Это может быть написано:
источник
Руби,
9387 байтПолная программа с использованием аргументов командной строки.
Если бы я мог использовать
s.slice!
для изменения строки, я бы сделал это вместо того, чтобы использоватьs[c..-1]
, но Ruby не позволяет вам изменять строки из argv, не дублируя их в первую очередь.источник