Java - 126 ký tự
giảm thiểu:
class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}
chưa được tối ưu hóa:
class hjq {
public static void main(String... w) {
for (char z = '"'|0; ++z != 'a';) {
if ("'()+.0;=OS".indexOf(z) == ~0) {
System.out.print(z);
}
}
}
}
Đây là một vấn đề thú vị, bởi vì các mã thông báo riêng lẻ có thể được hưởng lợi từ hình thức dài hơn của chúng vì nó sử dụng lại các ký tự. Ví dụ, thông thường String[]
sẽ ngắn hơn, nhưng String...
loại bỏ sự cần thiết cho dấu ngoặc vuông trong chuỗi điều kiện.
Tôi đã tìm thấy mẹo là thử và sử dụng các ký tự ở đầu và cuối của phạm vi để bạn có thể loại trừ chúng khỏi đầu ra chỉ bằng cách thay đổi bắt đầu và kết thúc vòng lặp của bạn.
Đối với Java, một ký tự chính cần loại trừ là "
bởi vì có chuỗi đó yêu cầu thoát nó, điều này thêm \
vào chương trình của bạn, cần phải đi vào chuỗi, bổ sung \\
. Bằng cách xóa "
khỏi chuỗi điều kiện của bạn, bạn loại bỏ 4 ký tự. Điều này có thể đạt được bằng cách đảm bảo bạn sử dụng
và !
và bắt đầu vòng lặp của bạn từ #
.
Tất cả các chữ thường xuất hiện ở gần cuối của dãy núi này, chỉ với {
, |
, }
và ~
sắp tới sau khi họ. Do tính dài dòng của Java, hầu hết các chữ cái viết thường chỉ được sử dụng cho bản tóm tắt. Tương tự như vậy, {
và }
là tầm thường đối với một chương trình Java, bởi vì bản tóm tắt yêu cầu chúng.
|
có thể được sử dụng nếu bạn có hoặc có điều kiện, nhưng tôi không thể tìm ra cách tận dụng lợi thế của chương trình dẫn đến chương trình ngắn hơn là chỉ sử dụng |
như một toán tử bitwise. Điều này |0
khiến tôi cảm thấy hơi bẩn thỉu, bởi vì đó là phần duy nhất chỉ là một nhân vật chính để có được nhân vật trong đó.
~0
sản lượng -1
, rất tiện lợi vì đó là những gì chúng ta cần kiểm tra indexOf
. Kết hợp điều này với việc sử dụng !=
cho vòng lặp có điều kiện sẽ loại bỏ <
hoàn toàn ký tự, điều đó có nghĩa là nó không cần phải đi vào bên trong chuỗi điều kiện.
0x20
cho0x7e
, được định nghĩa là "ký tự ASCII in". Các tab kỹ thuật và dòng mới thực sự là các ký tự điều khiển.