dog
é um utilitário de linha de comando que recebe um número arbitrário de argumentos, o primeiro dos quais é o texto a ser escrito e os outros são arbitrariamente muitos arquivos.
O dog
utilitário dividirá o texto em partes iguais sobre esses arquivos. Se houver um restante n
, os primeiros n
arquivos receberão um byte adicional
dog
é o oposto de cat
, como tal, forall x
, o seguinte deve valer.
$> dog x a.txt b.txt ...
$> cat a.txt b.txt ...
x$>
Onde ...
indica arbitrariamente muitos arquivos.
Um exemplo (12 bytes, 3 arquivos, podem ser divididos igualmente):
$> ./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$>
Um exemplo com restante (13 bytes, 5 arquivos, restante 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
fonte
fonte
tac
é real .Respostas:
Pitão - 12 bytes
Usa a função de divisão interna e, em seguida, usa o mapa de splat na função de gravação. Não funciona online.
fonte
Python - 181 bytes
fonte
PHP, 107 bytes
O código do golfe:
O código detalhado:
fonte
Pure bash: 97
Como função: (
p=
é necessária apenas para a segunda execução)Testes
Todos os arquivos são de 4 bytes e concatenados na ordem correta, contêm "Dogs vs Cats" .
Os primeiros arquivos têm 3 bytes de len e os últimos apenas 2, concatenados por ordem alfabética, contêm "0123456789abc" .
Explicação (ungolfing):
Se você acertar:
declare -f dog
, o bash irá responder:Isso pode ser escrito:
fonte
Ruby,
9387 bytesPrograma completo usando argumentos de linha de comando.
Se eu pudesse usar
s.slice!
para alterar a string, faria isso em vez de precisar usá-las[c..-1]
, mas Ruby não permite que você modifique as strings do argv sem duplicá-las primeirofonte