dog
adalah utilitas baris perintah yang menggunakan sejumlah argumen arbitrer, yang pertama adalah teks yang akan ditulis dan yang lainnya banyak file secara sewenang-wenang.
The dog
utilitas akan membagi teks dalam porsi yang sama atas file tersebut. Jika ada sisa n
, n
file pertama mendapatkan byte tambahan
dog
adalah kebalikan dari cat
, karena itu, secara keseluruhan x
, yang berikut ini harus berlaku.
$> dog x a.txt b.txt ...
$> cat a.txt b.txt ...
x$>
Di mana ...
menunjukkan banyak file sewenang-wenang.
Contoh (12 byte, 3 file, dapat dibagi secara merata):
$> ./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$>
Contoh dengan sisa (13 byte, 5 file, sisa 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
sumber
sumber
tac
asli .Jawaban:
Pyth - 12 byte
Menggunakan fungsi split bawaan dan kemudian menggunakan splat-map pada fungsi tulis. Tidak berfungsi online.
sumber
Python - 181 byte
sumber
PHP, 107 byte
Kode golf:
Kode terperinci:
sumber
Bash murni: 97
Sebagai fungsi: (
p=
hanya diperlukan untuk menjalankan kedua)Tes
Semua file berukuran 4 byte len dan digabung dalam urutan yang benar, berisi "Anjing vs Kucing" .
File pertama adalah 3 byte len dan hanya 2, disatukan dengan urutan abjad, mengandung "0123456789abc" .
Penjelasan (ungolfing):
Jika anda menekan:
declare -f dog
, pesta akan menjawab:Ini dapat ditulis:
sumber
Ruby,
9387 byteProgram penuh menggunakan argumen baris perintah.
Jika saya bisa menggunakan
s.slice!
untuk memutasi string, saya akan melakukan itu alih-alih perlu digunakans[c..-1]
, tetapi Ruby tidak membiarkan Anda mengubah string dari argv tanpa menduplikasi terlebih dahulu.sumber