Java - 126 ตัวอักษร
ลดลง:
class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}
unminimized:
class hjq {
public static void main(String... w) {
for (char z = '"'|0; ++z != 'a';) {
if ("'()+.0;=OS".indexOf(z) == ~0) {
System.out.print(z);
}
}
}
}
นี่เป็นปัญหาที่น่าสนใจเพราะโทเค็นส่วนบุคคลอาจได้รับประโยชน์จากรูปแบบที่ยาวขึ้นเพราะใช้อักขระซ้ำ ตัวอย่างเช่นโดยทั่วไปString[]จะสั้นกว่า แต่ไม่String...จำเป็นต้องใช้วงเล็บเหลี่ยมในสตริงที่มีเงื่อนไข
ฉันพบว่ากลอุบายคือการพยายามและใช้อักขระที่จุดเริ่มต้นและจุดสิ้นสุดของช่วงเพื่อให้คุณสามารถแยกพวกเขาออกจากผลลัพธ์ได้โดยเพียงแค่เปลี่ยนลูปเริ่มต้นและสิ้นสุด
สำหรับ Java เป็นตัวละครสำคัญที่จะไม่รวมเป็น"เพราะมีว่าในสตริงต้องหลบหนีมันซึ่งจะเพิ่มให้กับโปรแกรมของคุณซึ่งต้องไปในสตริงซึ่งจะเพิ่ม\ \\ด้วยการลบ"สตริงที่มีเงื่อนไขของคุณคุณจะลบอักขระ 4 ตัว นี้สามารถทำได้โดยการทำให้แน่ใจว่าคุณใช้และและเริ่มต้นของคุณจากวง!#
ทุกตัวอักษรตัวพิมพ์เล็กปรากฏอยู่ใกล้กับจุดสิ้นสุดของช่วงมีเพียง{, |, }และ~มาหลังจากที่พวกเขา เนื่องจากการใช้คำฟุ่มเฟือยของ Java ตัวอักษรตัวเล็กส่วนใหญ่จึงใช้สำหรับหม้อไอน้ำ ในทำนองเดียวกัน{และ}เป็นเรื่องเล็กน้อยสำหรับโปรแกรม Java เพราะต้นแบบต้องใช้พวกเขา
|สามารถใช้ถ้าคุณมีหรือเงื่อนไข แต่ฉันไม่สามารถหาวิธีที่จะใช้ประโยชน์จากหนึ่งที่นำไปสู่โปรแกรมที่สั้นกว่าเพียงแค่ใช้|เป็นผู้ประกอบการระดับบิต |0ทำให้ฉันรู้สึกเล็ก ๆ น้อย ๆ ที่สกปรกเพราะมันเป็นเพียงส่วนหนึ่งที่ nop เพียงเพื่อให้ได้ตัวอักษรที่อยู่ในนั้น
~0อัตราผลตอบแทนซึ่งเป็นประโยชน์เพราะนั่นคือสิ่งที่เราจะต้องตรวจสอบกับ-1 indexOfการรวมสิ่งนี้เข้ากับการใช้!=สำหรับลูปแบบมีเงื่อนไขจะกำจัด<อักขระทั้งหมดซึ่งหมายความว่าไม่จำเป็นต้องเข้าไปในสตริงที่มีเงื่อนไข
0x20การ0x7eซึ่งได้รับการกำหนดให้เป็น "ตัวอักขระ ASCII" แท็บทางเทคนิคและการขึ้นบรรทัดใหม่เป็นอักขระควบคุมจริง ๆ