Lý lịch
Công cụ khai thác được sử dụng, thông thường, khi phục vụ JavaScript cho Trình duyệt web của bạn. Nó thường được sử dụng để giảm số lượng byte phải gửi. Tiết kiệm băng thông là hữu ích vì lý do rõ ràng. Một số người sử dụng obfuscaters (điều đó cố tình làm cho mã khó đọc hơn), tôi không nói về những điều đó.
Chúng tôi sẽ thu nhỏ Python 2
Tôi đã tranh luận về việc có nên sử dụng JavaScript hay Python cho trải nghiệm rút gọn hay không và tôi đã quyết định về Python vì hai lý do: vấn đề khoảng trắng và tôi nghĩ rằng điều đó sẽ thêm một vấn đề năng động thú vị. Ngoài ra, sử dụng Python 2.7 sẽ cung cấp một động lực khác, chẳng hạn như loại bỏ không cần thiết ()
trong quá trình in (tức là print("Hello world")
so với print"Hello world"
). Cá nhân tôi sẽ thích mở nó với bất kỳ ngôn ngữ nào, nhưng đối với một số ngôn ngữ, quá trình này sẽ không có ý nghĩa nhiều. Và, ngôn ngữ nào bạn quyết định giảm thiểu sẽ ảnh hưởng trực tiếp đến điểm số của bạn (và nếu ngôn ngữ thậm chí có thể được rút gọn).
Thông số kỹ thuật
Mục tiêu của bạn là chỉ sửa đổi mã theo cách không thay đổi chức năng của nó. Tất nhiên, bạn có thể thay đổi tên biến (trong chương trình rút gọn của mình) miễn là nó không ảnh hưởng đến đầu ra (theo dõi phạm vi ). Mặc dù tôi đang cung cấp cho bạn một chương trình cụ thể, vui lòng không tối ưu hóa cho trường hợp thử nghiệm vì tất cả các sơ hở tiêu chuẩn đều bị cấm.
Điểm : độ dài của chương trình sau khi bạn thu nhỏ nó.
Đầu vào : Bất kỳ chương trình Python 2.7 nào (không có lỗi)
Đầu ra : Một phiên bản rút gọn.
Mặc dù mã của bạn có thể chứa được tất cả đầu vào Python 2.7 hợp lệ, nhưng cần phải kiểm tra tập lệnh của bạn dựa vào thứ gì đó để chứng minh tính hiệu quả của nó.
Nhấn vào đây để xem chương trình ví dụ.
Làm cho vấn đề dễ tiếp cận hơn
Vui lòng sử dụng hoặc sửa đổi bất kỳ mã nào được tìm thấy trong giải pháp của tôi (được liệt kê dưới đây). Tôi đã làm điều này để giúp bạn bắt đầu với trích dẫn xử lý trích dẫn cơ bản; tuy nhiên, bạn có thể mở rộng nó sang thụt lề, v.v.
Ví dụ các cách để thu nhỏ Python
Tất cả khoảng trắng có thể được thay thế bằng số tiền tối thiểu có thể (Tôi thừa nhận rằng trong Python bạn có thể thực hiện một số nội dung phức tạp bằng các tab , nhưng tôi sẽ để bạn quyết định có thực hiện hay không).
Thí dụ
Sau đây là
def print_a_range(a):
for i in range(a):
print(i)
Có thể là:
def print_a_range(a):
for i in range(a):
print(i)
Về mặt kỹ thuật, nếu chỉ có một dòng trong một vòng lặp, bạn có thể nén nó nhiều hơn:
def print_a_range(a):
for i in range(a):print(i) #Note, you can also remove the `()` here.
Tuy nhiên, có một cách khác để bạn có thể thu nhỏ khoảng trắng trong Python:
Sau đây là
print ([a * 2 for a in range(20) if a % 2 == 0])
Có thể là:
print([a*2for a in range(20)if a%2==0])
Lưu ý rằng không cần khoảng cách giữa 2
và for
. Biến, chức năng và từ khóa không thể bắt đầu bằng một số. Vì vậy, trình thông dịch Python vẫn ổn <num><keyword>
, không có khoảng trắng. Bạn cũng nên lưu ý rằng không phải có khoảng cách giữa )
và if
.
Lưu ý, bạn không được thay đổi đầu ra của chương trình! Vì thế:
print"f(x)=x*2 is a great equation!"
Câu lệnh in ở trên phải giữ nguyên vì loại bỏ khoảng trắng giữa 2
và is
sẽ sửa đổi đầu ra.
'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
thành '1'*100
cho phép? Yêu cầu làm như hành vi là như nhau?