Twoim zadaniem dzisiaj będzie pobranie istniejącego pliku i dodanie do niego zer, aż osiągnie określony rozmiar.
Musisz napisać program lub funkcję, która pobierze nazwę pliku w bieżącym katalogu f
i liczbę bajtów b
. Zachowując oryginalną treść f
, musisz napisać na końcu zero (bajty zerowe, a nie ascii 0), aby nowy rozmiar to b
bajty.
Możesz założyć, że f
w nazwie ma tylko alfanumeryczne ascii, że masz nad nim pełne uprawnienia, że początkowo nie jest większy b
, ale może być tak duży b
, i że jest nieskończona ilość wolnego miejsca na dysku.
Nie możesz założyć, że f
jest niepusty lub że nie zawiera już bajtów o wartości NULL.
Inne istniejące pliki nie powinny być modyfikowane, a nowe pliki nie powinny istnieć po zakończeniu wykonywania.
Przypadki testowe
Zawartość f | b | Wynikowa zawartość f 12345 | 10 | 1234500000 0 | 3 | 000 [pusty] | 2 | 00 [pusty] | 0 | [pusty] 123 | 3 | 123
code-golf
file-system
code-golf
code-golf
string
code-golf
string
code-golf
random
game
compression
code-golf
array-manipulation
sorting
code-golf
number
arithmetic
primes
code-golf
geometry
code-golf
code-golf
decision-problem
regular-expression
code-golf
string
math
code-challenge
restricted-source
integer
palindrome
code-golf
string
palindrome
code-challenge
busy-beaver
code-golf
ascii-art
code-golf
string
code-golf
string
permutations
code-golf
code-golf
string
permutations
code-golf
number
primes
function
set-theory
code-challenge
hello-world
code-golf
math
number
decision-problem
code-golf
code-golf
sequence
arithmetic
integer
code-golf
math
number
arithmetic
decision-problem
code-golf
kolmogorov-complexity
alphabet
code-golf
combinatorics
graph-theory
tree-traversal
code-golf
set-theory
code-golf
interpreter
brainfuck
substitution
code-golf
quine
permutations
Pavel
źródło
źródło
b
Odpowiedzi:
Bash + coreutils, 13
Dane wejściowe z wiersza poleceń - pierwszy parametr to rozmiar pliku, a drugi to nazwa pliku.
Od
man truncate
:Wypróbuj online .
źródło
truncate
zawodzi syscall.dd bs=1 of=$1 seek=$2<&-
(która wyświetla komunikat o błędzie, który można zignorować). Twoja jest znacznie krótsza. Ładny.Groovy,
54474341 bajtów-6 dzięki pomysłowi manatwork na usunięcie pętli; to był mój oryginalny pomysł, nie wiem, dlaczego myślałem, że to nie zadziała i wybrałem pętlę ... Zdecydowanie działa, po prostu przetestowałem.
Nie golfowany:
źródło
{a,b->c=new File(a);c<<('\0'*(b-c.size()))}
(c=new File(a))
powodu wymaganego nawiasu.APL (Dyalog) ,
3317 bajtówWypróbuj online!
źródło
∇Extend
?Python 2 ,
595754 bajtów-5 bajtów dzięki chepnerowi
źródło
\x00
jest bajtem zerowym.\0
zamiast\x00
.def g(n,b):f=open(n,'a');f.write('\0'*b);f.truncate(b)
.PHP, 66 bajtów
Pobiera dane wejściowe z argumentów wiersza poleceń; biegać z
-nr
.Te 55 bajtów może, ale najprawdopodobniej nie zadziała:
źródło
Java (Oracle JRE), 55 bajtów
Specyfikacja
setLength(int)
mówi, że dołączone bajty są niezdefiniowane, ale praktycznie środowisko JRE Oracle dołącza tylko0
bajt (dlatego to podałem).Zasób jest automatycznie zamykany przez JVM, więc nie musimy tego robić sami.
Test
źródło
AHK, 48 bajtów
1
i2
są pierwszymi dwoma parametrami w skrypcie AHK.FileGetSize
domyślnie działa w bajtach.To nie jest ekscytujące, ale proste: uzyskaj rozmiar, odejmij go od pożądanego rozmiaru i dodaj tyle zer.
źródło
Perl 6 , 40 bajtów
$^a
i$^b
są parametrami funkcji - odpowiednio nazwa pliku i długość.źródło
Python 2 , 68 bajtów
Wypróbuj online! (Podczas drukowania zawartości pliku kod zastępuje puste bajty zerami ASCII 0).
źródło
\0
jest on krótszy.PowerShell, 69 bajtów
$f
dla pliku,$s
dla rozmiaru docelowego, zapisz jako .ps1 i uruchomTo powłoka, więc powinna być naprawdę mała pętla dodająca 1 bajt z
>>
przekierowaniem wyjścia i dołączaniem, prawda? Cóż, nie, ponieważ>>
generuje tylko kodowanie wielobajtowe UCS2-LE, więc nie ma sposobu, aby dodać do niego pojedynczy bajt. Chyba że używasz PSv5.1 i możesz to zmienić, ale to sprawia, że jest zbyt długi, aby być konkurencyjnym :Może istnieje podejście .NET Framework? Powinno być, ale nie mogę zmusić go do napisania żadnego bajtu lub błędu. Ale i tak jest już dłuższy:
źródło
Mathematica 50 bajtów
Import Eksport
Stosowanie
źródło
q, 29 bajtów
Funkcja, która przyjmuje nazwę pliku w formacie
:/foo/bar.baz
i długości jako liczbę całkowitą.Przykład:
źródło
C, 56 bajtów
Program znajduje rozmiar pliku i liczbę bajtów do dołączenia. Plik następnie dodaje
fs - b
dodatkowe bajty na końcu.źródło
f
ib
, co jest niedozwolone. Państwo musi zawierać I / O do programu, który może być zARGV
, wejście konsoli lub argumentów do funkcji.C #, 90 bajtów
źródło