dog
to narzędzie wiersza polecenia, które pobiera dowolną liczbę argumentów, z których pierwszy to tekst do napisania, a pozostałe to dowolnie wiele plików.
dog
Narzędzie zostanie podzielony tekst w równych porcjach tych plików. Jeśli pozostała część n
, pierwsze n
pliki otrzymują dodatkowy bajt
dog
jest przeciwieństwem cat
forallu jako takiego x
, co należy przyjąć.
$> dog x a.txt b.txt ...
$> cat a.txt b.txt ...
x$>
Gdzie ...
wskazuje dowolnie wiele plików.
Przykład (12 bajtów, 3 pliki, można podzielić równomiernie):
$> ./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$>
Przykład z resztą (13 bajtów, 5 plików, reszta 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
źródło
źródło
tac
jest prawdziwy .Odpowiedzi:
Pyth - 12 bajtów
Używa wbudowanej funkcji podziału, a następnie używa funkcji splat-map w funkcji zapisu. Nie działa online.
źródło
Python - 181 bajtów
źródło
PHP, 107 bajtów
Kod do gry w golfa:
Szczegółowy kod:
źródło
Pure Bash: 97
Jako funkcja: (
p=
jest wymagany tylko przy drugim uruchomieniu)Testy
Wszystkie pliki mają długość 4 bajtów i są łączone w odpowiedniej kolejności, zawierają „Dogs vs. Cats” .
Pliki Firsts mają długość 3 bajtów, a ostatnie tylko 2, połączone w kolejności alfabetycznej, zawierają „0123456789abc” .
Objaśnienie (niestosowanie golfa):
Jeśli trafisz:
declare -f dog
, bash odpowie:Można to napisać:
źródło
Ruby,
9387 bajtówPełny program przy użyciu argumentów wiersza poleceń.
Gdybym mógł użyć
s.slice!
do mutowania łańcucha, zrobiłbym to zamiast go używaćs[c..-1]
, ale Ruby nie pozwala ci mutować łańcuchów z argv bez uprzedniego skopiowania ichźródło