dog
es una utilidad de línea de comandos que toma un número arbitrario de argumentos, el primero de los cuales es el texto a escribir y los otros son arbitrariamente muchos archivos.
La dog
utilidad dividirá el texto en partes iguales sobre estos archivos. Si hay un resto n
, los primeros n
archivos obtienen un byte adicional
dog
es lo opuesto de cat
, como tal, para todos x
, lo siguiente debería ser válido.
$> dog x a.txt b.txt ...
$> cat a.txt b.txt ...
x$>
Donde ...
indica arbitrariamente muchos archivos.
Un ejemplo (12 bytes, 3 archivos, se pueden dividir equitativamente):
$> ./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$>
Un ejemplo con resto (13 bytes, 5 archivos, resto 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
fuente
fuente
tac
es real .Respuestas:
Pyth - 12 bytes
Utiliza la función de división integrada y luego usa splat-map en la función de escritura. No funciona en línea.
fuente
Python - 181 bytes
fuente
PHP, 107 bytes
El código de golf:
El código detallado:
fuente
Golpe puro: 97
Como una función: (
p=
solo se requiere para la segunda ejecución)Pruebas
Todos los archivos son de 4 bytes y están concatenados en el orden correcto, contienen "Perros contra gatos" .
Los primeros archivos son 3 bytes len y los últimos solo 2, concatenados por orden alfabético, contienen "0123456789abc" .
Explicación (ungolfing):
Si se golpea:
declare -f dog
, fiesta responderá:Esto podría escribirse:
fuente
Ruby,
9387 bytesPrograma completo utilizando argumentos de línea de comando.
Si pudiera usar
s.slice!
para mutar la cadena, lo haría en lugar de tener que usarlas[c..-1]
, pero Ruby no te permite mutar las cadenas de argv sin duplicarlas primerofuente