Java 10 (โปรแกรมเต็มรูปแบบ), 282 ไบต์
interface N{static void main(String[]a){var s="interface N{static void main(String[]a){var s=%c%s%1$c;s=s.format(s,34,s);System.out.print(new Boolean(a[0])?new StringBuffer(s).reverse():s);}}";s=s.format(s,34,s);System.out.print(new Boolean(a[0])?new StringBuffer(s).reverse():s);}}
ลองออนไลน์
Java 10 (เป็นฟังก์ชั่นแลมบ์ดา), 154 ไบต์
b->{var s="b->{var s=%c%s%1$c;s=s.format(s,34,s);return b?new StringBuffer(s).reverse():s;}";s=s.format(s,34,s);return b?new StringBuffer(s).reverse():s;}
ลองออนไลน์
คำอธิบาย:
interface N{ // Class
static void main(String[]a){ // Mandatory main-method
var s="interface N{static void main(String[]a){var s=%c%s%1$c;s=s.format(s,34,s);System.out.print(new Boolean(a[0])?new StringBuffer(s).reverse():s);}}";
// Unformatted source code
s=s.format(s,34,s); // Format the source code (the quine-String)
System.out.print( // Print:
new Boolean(a[0])? // If the input is true:
new StringBuffer(s).reverse() // Print the quine-String reversed
: // Else:
s);}} // Print the quine-String as is
คำอธิบายควิน :
var s
มีรหัสที่มาที่ยังไม่ฟอร์แมต
%s
จะใช้ในการใส่สายนี้เป็นของตัวเองด้วย s.format(...)
%c
,, %1$c
และ34
ใช้เพื่อจัดรูปแบบเครื่องหมายคำพูดคู่
s.format(s,34,s)
ทำให้มันเข้าด้วยกัน
จากนั้นnew StringBuffer(s).reverse()
จะใช้ในการย้อนกลับ quine-String หากจำเป็นขึ้นอยู่กับ input-boolean