Chào buổi chiều Golfgeneers.
Đây là câu hỏi hợp lý dài và chi tiết. Cho những gì nó đã yêu cầu, nó cần phải được. Nếu bạn có bất kỳ câu hỏi, xin vui lòng hỏi họ. Nếu có bất cứ điều gì không rõ ràng, xin vui lòng thông báo cho tôi để tôi có thể sửa nó. Đây có lẽ là về phía khó khăn hơn của codegolf.
Chúng tôi đang xây dựng một máy tính nhẹ và chúng tôi cần hệ thống tập tin trọng lượng nhẹ nhất có thể. Mã ngắn nhất sẽ được chọn.
Chúng tôi đang cung cấp một ổ cứng 65536 byte tiên tiến. Vì lợi ích của nguyên mẫu này, nó sẽ là một tệp hình ảnh trực tiếp, mà chương trình của bạn có thể giả sử tồn tại và ở bất kỳ vị trí nào phù hợp với bạn - tức là một tệp nhị phân đại diện cho toàn bộ đĩa cứng. Bạn có thể cho rằng hình ảnh này đã được 'định dạng' - tức là. nếu chương trình của bạn dựa vào một cái gì đó trong tệp để hoạt động, nó có thể. Nếu bạn yêu cầu trạng thái trống ban đầu là một số khác thì tất cả đều là số không, vui lòng cho biết trạng thái đó là gì.
Không có giới hạn bộ nhớ như RAM được sử dụng bởi ứng dụng của bạn.
Các lệnh đầu vào và đầu ra sẽ yêu cầu một giao diện cho ổ cứng thực tế. Giống như hình ảnh đĩa, chương trình của bạn có thể giả sử rằng tệp cho đầu vào tồn tại và là bất cứ nơi nào bạn muốn. Tương tự như vậy, chương trình của bạn có thể xuất ra bất cứ nơi nào thuận tiện. Tuy nhiên, nó phải đóng tệp sau khi thực hiện lệnh đầu vào hoặc đầu ra.
Bạn không được cung cấp một định dạng mà bạn phải sử dụng cho hình ảnh đĩa - bạn có thể tự do phát triển. Nó phải có khả năng lưu trữ tới 248 tệp. Bất kỳ tệp nào lớn hơn 256 byte đều có thể được tính là một tệp mới vì giới hạn này cho mỗi 256 byte hoặc một phần của chúng. Một tệp có thể lên tới 63488 byte. Về cơ bản - nó phải có khả năng như một ổ cứng với 248 cung 256 byte mỗi cái.
Lý do đằng sau các kích thước dường như này là cung cấp cho bạn 2048 byte 'quản trị' - để lưu trữ chi tiết của các tệp. Mỗi tệp / thư mục phải được truy cập bằng tên gồm 4 ký tự chữ và số, có thể phân biệt chữ hoa chữ thường hoặc không nhạy cảm theo sở thích của bạn. Nếu chương trình của bạn hỗ trợ tên của 4 ký tự trở xuống, thì có phần thưởng là số nhân 0,95.
Chương trình của bạn phải chấp nhận, thông qua stdin, các lệnh sau. Các thông số sẽ được phân tách bằng một khoảng trắng. Lệnh sẽ được chấm dứt bởi một dòng mới.
- L - Liệt kê tên của thiết bị xuất chuẩn của tất cả các tệp hiện tại và kích thước của chúng theo byte, được phân tách bằng dòng mới.
- C ab - Sao chép tập tin a sang tập tin mới b.
- D a - Xóa tập tin a
- R ab - Đổi tên tập tin a thành tên mới b
- I a - Thêm tệp đầu vào (xem ghi chú ở trên) dưới dạng tệp a
- O a - Đầu ra tệp a đến tệp đầu ra
Các lỗi sau có thể được báo cáo cho STDOUT hoặc STDERR là lý do hợp lệ để lệnh không thực thi. Bạn có thể chọn chỉ in ERR # trong đó # là số lỗi:
- 1 - Tệp không tồn tại
- 2 - Tệp đã tồn tại
- 3 - Hết dung lượng *
* Lưu ý rằng chương trình của bạn không thể phát hành điều này chỉ vì nó nằm ngoài không gian liên tục. Nếu bạn vẫn có sẵn các cung, bạn phải chống phân mảnh đĩa để làm cho nó hoạt động.
Một hệ thống thư mục là tùy chọn - tuy nhiên, sẽ lấy thêm phần thưởng 0,8 cho số điểm của bạn. Nếu nó hỗ trợ nhiều hơn 1 cấp thư mục, nó sẽ kiếm được phần thưởng là 0,7 nhân (không phải là 0,8). Để nhận tiền thưởng, bạn phải có
- L, R, C và D chỉ hoạt động trong thư mục hiện tại. L phải liệt kê các thư mục trong thư mục hiện tại, cũng như các tệp.
- Lệnh mới M ab di chuyển tệp a đến thư mục b. Nếu b là '.', Di chuyển tệp đến giám đốc mẹ
- Lệnh mới G a vào thư mục a. Nếu a là '.', Chuyển đến thư mục cha
- R cũng phải đổi tên thư mục
- D cũng phải xóa các thư mục và mọi tệp / thư mục trong đó
- C cũng phải sao chép các thư mục và bất kỳ tệp / thư mục nào trong đó
Các lỗi bổ sung sau đây có thể được báo cáo cho STDOUT hoặc STDERR là lý do hợp lệ để lệnh không thực thi.
- 4 - Thư mục không tồn tại
- 5 - Tệp, không yêu cầu thư mục - trong đó, tôi và O yêu cầu tên tệp và một thư mục đã được cung cấp
Điểm số của bạn là:
- Kích thước, tính bằng byte, của mã nguồn của bạn
Nhân với
- 0,95 nếu bạn hỗ trợ tên của 4 hoặc ít hơn các ký tự
- 0,8 nếu bạn hỗ trợ một cấp thư mục
- 0,7 nếu bạn hỗ trợ nhiều cấp độ thư mục
- 0,95 nếu bạn hỗ trợ các lệnh (không nhất thiết phải là tên tệp) bằng chữ thường hoặc chữ hoa
Chúc may mắn.