Một số người khăng khăng sử dụng không gian để lập bảng và thụt lề.
Đối với lập bảng, đó là sai không thể chối cãi. Theo định nghĩa, lập bảng phải được sử dụng để lập bảng.
Ngay cả đối với thụt lề, lập bảng cũng vượt trội khách quan:
Có sự đồng thuận rõ ràng trong cộng đồng Stack Exchange.
Sử dụng một không gian duy nhất để thụt đầu dòng là khó chịu trực quan; sử dụng nhiều hơn một là lãng phí.
Như tất cả những người
chơi golf điện tử đềubiết, các chương trình nên càng ngắn càng tốt. Không chỉ tiết kiệm dung lượng ổ cứng, thời gian biên dịch cũng giảm nếu phải xử lý ít byte hơn.Bằng cách điều chỉnh độ rộng tab 1 , cùng một tệp trông khác nhau trên mỗi máy tính, vì vậy mọi người có thể sử dụng chiều rộng thụt lề yêu thích của mình mà không cần sửa đổi tệp thực tế.
Tất cả các trình soạn thảo văn bản tốt đều sử dụng trình lập bảng theo mặc định (và định nghĩa).
Tôi nói vậy và tôi luôn luôn đúng!
Đáng buồn thay, không phải ai cũng lắng nghe lý do. Ai đó đã gửi cho bạn một tệp đang thực hiện sai TM và bạn phải sửa nó. Bạn chỉ có thể làm nó bằng tay, nhưng sẽ có những người khác.
Nó đủ tệ đến mức các miếng đệm đang lãng phí thời gian quý báu của bạn, vì vậy bạn quyết định viết chương trình ngắn nhất có thể để giải quyết vấn đề.
Bài tập, nhiệm vụ
Viết chương trình hoặc hàm thực hiện như sau:
Đọc một chuỗi đơn từ STDIN hoặc dưới dạng đối số dòng lệnh hoặc hàm.
Xác định tất cả các vị trí nơi không gian đã được sử dụng để lập bảng hoặc thụt lề.
Một khoảng trống được thụt lề nếu nó xuất hiện ở đầu dòng.
Việc chạy hai hoặc nhiều khoảng trắng là lập bảng nếu nó không thụt lề.
Một không gian duy nhất không thụt lề có thể hoặc không được sử dụng để lập bảng. Như mong đợi khi bạn sử dụng cùng một nhân vật cho các mục đích khác nhau, không có cách nào dễ dàng để nói. Do đó, chúng tôi sẽ nói rằng không gian đã được sử dụng cho sự nhầm lẫn .
Xác định chiều rộng tab dài nhất có thể 1 mà tất cả các khoảng trắng được sử dụng để lập bảng hoặc thụt lề có thể được thay thế bằng các bảng, mà không làm thay đổi giao diện của tệp.
Nếu đầu vào không chứa bảng, cũng không thụt lề, không thể xác định chiều rộng của tab. Trong trường hợp này, bỏ qua bước tiếp theo.
Sử dụng chiều rộng tab được xác định trước đó, thay thế tất cả các khoảng trắng được sử dụng để lập bảng hoặc thụt lề bằng bảng.
Ngoài ra, bất cứ khi nào có thể mà không làm thay đổi sự xuất hiện của tệp, hãy thay thế tất cả các khoảng trắng được sử dụng để gây nhầm lẫn với các bảng. (Nếu nghi ngờ, hãy loại bỏ khoảng trắng.)
Trả về chuỗi đã sửa đổi từ chức năng của bạn hoặc in nó thành STDOUT.
Ví dụ
Tất cả không gian của
a bc def ghij
được lập bảng.
Mỗi lần chạy khoảng trắng sẽ tạo chuỗi ký tự không phải khoảng trắng trước cho chiều rộng là 5, vì vậy chiều rộng của tab chính xác là 5 và đầu ra đúng 2 là
a--->bc-->def->ghij
Hai không gian đầu tiên của
ab cde f ghi jk lm
Được lập bảng, những người khác nhầm lẫn.
Độ rộng tab đúng là 4, vì vậy đầu ra đúng 2 là
ab->cde>f ghi>jk lm
Không gian cuối cùng vẫn còn chưa được xử lý, vì nó sẽ được hiển thị thành hai khoảng trắng nếu được thay thế bằng một trình lập bảng:
ab->cde>f ghi>jk->lm
Tất cả trừ một không gian của
int main( ) { puts("TABS!"); }
là thụt, khác là nhầm lẫn.
Các mức thụt lề là 0, 4 và 8 khoảng trắng, vì vậy độ rộng tab chính xác là 4 và đầu ra 2 chính xác là
int --->main( ) --->{ --->--->puts("TABS!"); --->}
Không gian trong
( )
sẽ được hiển thị dưới dạng ba khoảng trắng nếu được thay thế bằng bảng, vì vậy nó vẫn còn nguyên.Hai không gian đầu tiên của
x yz w
là thụt, những người khác nhầm lẫn.
Độ rộng tab thích hợp là 2 và đầu ra đúng 2 là
->x>yz w
Không gian cuối cùng sẽ được hiển thị dưới dạng hai khoảng trắng nếu được thay thế bằng bảng, vì vậy nó vẫn còn nguyên.
Hai không gian đầu tiên của
xy zw
là thụt, ba cái còn lại là bảng.
Chỉ có chiều rộng tab là 1 cho phép loại bỏ tất cả các khoảng trắng, vì vậy đầu ra 2 chính xác là
>>xy>>>zw
Tất cả không gian của
a b c d
là sự nhầm lẫn.
Không có chiều rộng tab dài nhất có thể, vì vậy đầu ra 2 chính xác là
a b c d
Quy tắc bổ sung
Đầu vào sẽ bao gồm toàn bộ các ký tự và nguồn cấp dữ liệu ASCII có thể in được.
Bạn có thể cho rằng có tối đa 100 dòng văn bản và tối đa 100 ký tự trên mỗi dòng.
Nếu bạn chọn STDOUT cho đầu ra, bạn có thể in một dòng cấp dữ liệu duy nhất.
Luật golf tiêu chuẩn được áp dụng.
1 Độ rộng của tab được định nghĩa là khoảng cách tính theo ký tự giữa hai lần dừng tab liên tiếp , sử dụng phông chữ đơn cách.
2 Mũi tên nghệ thuật ASCII đại diện cho các trình lập bảng Stack Exchange từ chối hiển thị đúng, mà tôi đã gửi báo cáo lỗi. Đầu ra thực tế phải chứa các tab thực tế.
programs should be as short as possible
Tôi tin rằng tôi đã tìm thấy người anh trai đã mất từ lâu của Arthur Whitney !!