Chán nản với độ tin cậy của bộ lưu trữ flash, bạn đã quyết định lưu trữ tất cả các chương trình của mình trên một trong những đĩa mềm 1.440 KiB cũ. Tuy nhiên, sau khi sao chép thậm chí không tới 3.000 chương trình, đĩa đã đầy. Làm thế nào mà thậm chí có thể? Có kỹ năng chơi golf mã như bạn, hầu hết các chương trình của bạn thậm chí không dài 100 byte, vì vậy sẽ còn rất nhiều chỗ ...
Sau khi hỏi về Super User, bạn phát hiện ra rằng bạn đã bị sai bởi kích thước cụm của hệ thống tệp , một âm mưu xấu xa của các nhà thiết kế của FAT12 khiến một phần đáng kể của đĩa mềm của bạn không được sử dụng và buộc bạn phải mua nhiều hơn bạn thực sự cần.
Mua thêm đĩa mềm? Không bao giờ! Kích thước cụm sẽ ít gặp sự cố hơn nếu chúng ta chỉ lưu nhiều chương trình trong một tệp, điều này có thể xảy ra vì các trình biên dịch / trình thông dịch khác nhau sẽ hoạt động khác nhau cho cùng một mã nguồn.
Bài tập
Viết một polyglot phù hợp trong một cụm đơn (512 byte trở xuống) và giải quyết càng nhiều tác vụ sau càng tốt.
Đọc tất cả đầu vào và in nó.
In Xin chào, Thế giới! .
Đọc một dòng / đối số ( tên ) làm đầu vào và in Chúc mừng sinh nhật, [tên]! .
Đọc tất cả các đầu vào và in Tôi yêu các tab! nếu nó chứa một hoặc nhiều bảng điều khiển (0x09) và tôi ghét khoảng trắng! nếu nó không
Đọc hai dòng / đối số và in một giá trị trung thực nếu chuỗi thứ hai là chuỗi con của giá trị thứ nhất và giá trị giả nếu không.
Đọc một dòng / đối số và in một giá trị trung thực nếu các ký tự của nó theo thứ tự tăng dần và giá trị giả nếu không.
Đọc một dòng / đối số và một ký tự và in các chỉ mục của tất cả các lần xuất hiện của ký tự đó.
Đọc một dòng / đối số và in bất kỳ ký tự nào có số lần xuất hiện cao nhất.
Đọc hai số nguyên từ 0 đến 255 và in tổng của chúng.
Đọc một số nguyên duy nhất trong khoảng từ 0 đến 255 và in thương số và phần dư của phép chia cho 7 .
Đọc một số nguyên duy nhất trong khoảng từ 1 đến 255 và in một giá trị trung thực nếu đó là số tổng hợp (không phải 1 cũng không phải số nguyên tố) và giá trị giả nếu không.
Đọc một số nguyên duy nhất trong khoảng từ 1 đến 255 và in một giá trị trung thực nếu nó là lũy thừa 2 và giá trị giả nếu không.
Đọc hai số nguyên từ 0 đến 255 và in số nguyên lớn hơn.
Đọc một số nguyên thập phân từ 0 đến 255 in đại diện thập lục phân của nó.
Đọc một số nguyên duy nhất trong khoảng từ 0 đến 255 và in trọng số Hamming của nó (số lượng 1 bit).
Đọc một số nguyên n duy nhất trong khoảng từ 1 đến 13 và in F n , số Fibonacci thứ n .
Ví dụ, cho đầu vào
13
, in233
.
Đọc một dòng / đối số của đầu vào và đóng khung nó.
Ví dụ: đối với đầu vào
Programming Puzzles & Code Golf
, in này:+---------------------------------+ | Programming Puzzles & Code Golf | +---------------------------------+
Đọc một khối ký tự hình chữ nhật và xoay nó một phần tư theo chiều kim đồng hồ.
Ví dụ: cho đầu vào
tye xll epb tma id sa s e i r hsn Tiu
in cái này:
This text is simply unreadable
Đọc một số nguyên từ 1 đến 40 và in một viên kim cương có độ dài cạnh đó.
Ví dụ: đối với đầu vào
3
, in này:/\ / \ / \ \ / \ / \/
In này:
....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@....
Chấm điểm
Câu trả lời quản lý để kết hợp số lượng chương trình cao nhất trong một tệp phù hợp với một cụm 512 byte đơn sẽ giành chiến thắng. Ties bị phá vỡ bởi số byte (thấp hơn là tốt hơn).
Quy tắc bổ sung
Đối với mỗi tác vụ bạn yêu cầu cho điểm của mình, cùng một tệp (byte trên byte) phải tạo thành một chương trình đầy đủ - theo ngôn ngữ bạn chọn - giải quyết nhiệm vụ cụ thể này.
Mỗi nhiệm vụ phải được giải quyết bằng một ngôn ngữ khác nhau.
Ngôn ngữ được tính là khác nhau nếu chúng không phải là phiên bản khác nhau của cùng một ngôn ngữ. Ví dụ: chỉ có một JavaScript, một Python và một TI-BASIC, nhưng C, C ++, Octave và MATLAB là bốn ngôn ngữ khác nhau.
Ngôn ngữ được chọn cho mỗi tác vụ phải đáp ứng định nghĩa thông thường của chúng tôi về ngôn ngữ lập trình .
Ngoài ra, ngôn ngữ phải được xuất bản và thực hiện trước ngày 9 tháng 9 năm 2015.
Trình biên dịch / trình thông dịch của bạn có thể không yêu cầu bất kỳ cờ không chuẩn nào để tạo ra hành vi dự kiến.
Các ngoại lệ cho quy tắc này bao gồm các cờ cần thiết để chỉ định một ngôn ngữ cụ thể, để đọc chương trình từ một tệp (đơn) hoặc để chặn biểu ngữ.
Đầu vào cho mỗi tác vụ sẽ bao gồm các ký tự ASCII có thể in (0x20 đến 0x7E) và nguồn cấp dữ liệu (0x0A) và nó sẽ không vượt quá 255 byte.
Tất cả các số nguyên có thể được đọc ở dạng thập phân hoặc đơn nguyên, trừ khi có quy định khác trong tác vụ.
Hành vi cho đầu vào không hợp lệ là không xác định.
Bạn có thể đọc đầu vào từ STDIN (hoặc thay thế gần nhất của nó) hoặc dưới dạng đối số dòng lệnh.
Nếu một tác vụ yêu cầu đọc hai phần đầu vào, bạn có thể đọc chúng - theo bất kỳ thứ tự nào - được phân tách bằng dấu phân cách một byte mà bạn chọn, dưới dạng đối số dòng lệnh riêng biệt hoặc một đối số từ STDIN và đối số khác là đối số dòng lệnh.
Nếu một trong các phần đầu vào là một dòng, dấu phân cách duy nhất có thể là một nguồn cấp dữ liệu.
In đầu ra sang STDOUT (hoặc thay thế gần nhất). Tất cả đầu ra cho STDERR sẽ bị bỏ qua.
Đối với mỗi nhiệm vụ, áp dụng quy tắc golf tiêu chuẩn .
Đặc biệt, điều này bao gồm các lỗ hổng bị cấm theo mặc định , ngoại trừ mã hóa cứng đầu ra , được phép rõ ràng cho thử thách này.
2>/dev/null
và nhận đầu ra chính xác đến thiết bị xuất chuẩn, nó có ổn không? Chỉ để được chắc chắn.