เดินทางกลับใน Quine


12

ความท้าทายที่นี่นั้นง่ายและไม่เกี่ยวกับจำนวนไบต์ งานของคุณคือส่งออกอักขระ 50 ตัวแรกของซอร์สโค้ดของ quine ก่อนหน้าโดยต่อกับอักขระ 50 ตัวแรกของคุณเริ่มต้นด้วยอักขระ 50 ตัวที่ฉันได้วางไว้ด้านล่าง:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY

ลองมาตัวอย่างที่นี่ถ้าคุณต้องตอบใน 05AB1E วิธีแก้ปัญหาเพียงแค่ส่งออก 50 ไบต์แรกจะเป็น:

ži50£

ซึ่งหมายความว่าคุณต้องแสดงผล:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£

หากโปรแกรมของคุณสั้นลงเพียงใช้x < 50อักขระตัวแรก หากโปรแกรมของคุณต่อเชื่อมอักขระ 50 ตัวแรกให้ยาวขึ้นให้ลงท้ายด้วยอักขระที่ 50 บุคคลต่อไปจะต้องส่งออกอักขระ 50 ตัวแรกของ quine ของคุณที่ต่อกับรหัสของตัวเอง

รหัสของคุณสามารถมีขนาดใดก็ได้ แต่คุณควรส่งออก 50 ตัวอักษรแรกของรหัสของคุณตัดกับส่วนท้ายของ 50 ไบต์แรกของรหัสคำตอบก่อนหน้านี้


ข้อ จำกัด:

สิ่งนี้ใช้คำนิยามของควินินที่เหมาะสมและนอกจากนี้สิ่งต่อไปนี้:

  • ความคิดเห็นไม่ได้รับอนุญาตทั้งหมด
  • ให้ความสนใจกับส่วนนี้อาจทำให้เกิดลูปลูปเกิดขึ้นอย่างต่อเนื่อง

วิธีการโพสต์คำตอบที่ถูกล่ามโซ่:

  1. โพสต์ตัวยึดตำแหน่ง:
    • พูดถึงหมายเลขคำตอบและภาษาที่คุณจะใช้
  2. เรียงตามวันที่ถ้าคุณสังเกตเห็นคนอื่นโพสต์ตัวยึด 1 มิลลิวินาทีก่อนคุณ:
    • ลบของคุณรอโอกาสต่อไปขอโทษ
  3. หากคุณได้รับความปลอดภัยในจุดต่อไปโปรดตอบภายใน 6 ชั่วโมง :
    • หากคุณไม่สามารถตอบได้ให้ลบพื้นที่ที่สงวนไว้ออก
  4. ถ้าพื้นที่ว่างเปล่านานเกิน 6 ชั่วโมง
    • ลงคะแนนเพื่อลบพื้นที่ที่สงวนไว้ฉันจะจัดการกับมัน

รูปแบบโพสต์ของคุณ:

#[Answer #]:[Character Count] Characters, [Language Used]

{TIO MARKDOWN}

{LINE_SEPARATOR="---"}

{ADDITIONAL EXPLANATION OR INFORMATION}

หมายเหตุเฉพาะบางประการ (สำคัญสำหรับความง่ายในการแข่งขัน):

  • หากบุคคลก่อนที่คุณจะรวมบรรทัดใหม่หรืออักขระที่ไม่ใช่ ASCII ในแหล่งที่มาคุณอาจ STRIP ได้ ซึ่งหมายความว่าx="a\nb"จะกลายเป็นที่ abx[0]=a;x[1]=b;
    • คุณต้องระบุการกลายพันธุ์ที่คุณใช้กับแหล่งข้อมูลก่อนหน้า
  • อักขระทั้งหมดถูกนับเป็นอักขระเดียวแม้จะเป็นโค้ดเพจหรือการเข้ารหัสภาษา โปรดอย่าใช้ไบต์นับใช้ตัวอักษรนับ

คำตอบที่ได้รับการยอมรับจะเป็น50thคำตอบเพียงเพราะ; ฉันหมายถึงมันคือ SE หลังจากนั้น


ทำไมความคิดเห็นถูกแบน? นอกจากนี้แทนที่จะกำหนดไบต์เป็นอักขระทำไมไม่ใช้เพียงอักขระ?
CalculatorFeline

@CalculatorFeline ฉันคิดว่าคุณสามารถทำช่องโหว่ที่ไม่น่าสนใจและน่าสนใจโดยใช้ความคิดเห็น แต่นั่นเป็นเพียงฉัน จองจุดแรกและพิสูจน์ฉันผิดด้วยความคิดเห็นและฉันจะยกเลิกการแบน
Magic Octopus Urn

5
โพสต์เมตาที่เชื่อมโยงการกำหนด quines ที่เหมาะสมมีการกล่าวถึงไม่ได้มีรหัสไม่หมดอายุ
Ørjan Johansen

1
คุณนิยามความคิดเห็นอย่างไร ความคิดเห็นไม่ใช่คำที่กำหนดไว้อย่างดี
Ad Hoc Garf Hunter

1
คุณดูเหมือนจะแลกเปลี่ยนคำศัพท์อักขระและไบต์ซึ่งค่อนข้างสับสน ฉันไม่แน่ใจว่ามันเป็น 50 ตัวอักษรหรือไบต์แรกหรือไม่
Ad Hoc Garf Hunter

คำตอบ:


7

1: 96 ตัวละครHaskell

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY:z=['`'..'z']++'A':['C'..'Y']
main=putStr$z++z

ลองออนไลน์!


ผมรู้สึกโง่และเห็นอะไรห้ามรายการแรกเริ่มต้นด้วยการที่แน่นอนเดียวกัน 50 ตัวอักษรเป็นสตริงเริ่มต้น

  • ['`'..'z']++'A':['C'..'Y']คือการแสดงออกประเมินสตริงของตัวละครเหล่านั้นด้วยการ`เพิ่มด้านหน้า
  • ผลลัพธ์คือการจับคู่รูปแบบทำให้ตัวแปรabcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYเท่ากับ'`'และzเท่ากับ 50 อักขระ
  • main=putStr$z+z จากนั้นทำเอาต์พุตจริง

ฉันชอบความท้าทายนี้เริ่มต้นด้วย a-zA-Z และตอนนี้มันไม่ใช่ตัวอักษรอีกต่อไป โทรดีในโปรแกรมที่ 1
Magic Octopus Urn

5

5:76 ตัวอักษรEmojicode

🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACD🔤😀🍪a🔤🏁🍇🍦a❌🔤🔤🔪a 0 45🍪🍉

ลองออนไลน์!


คำอธิบาย:

🏁🍇		👴 start
  🍦 a 🔤...🔤	👴 define variable a as that string
  😀    	👴 print:
    🍪		👴 combine those strings:
      a		👴 a, and:
      🔤🏁🍇🍦a❌🔤🔤	👴 string literal. the ❌🔤 works like \"
      🔪a 0 45	👴 between indexes 0 and 45 of a
    🍪
🍉		👴 end

1
ตัวอักษรหายไปอย่างช้าๆ: O
Magic Octopus Urn

คำแนะนำการจัดรูปแบบ: ใช้<pre><code>และ</code></pre>จากนั้นคุณสามารถใช้&#9;สำหรับแท็บซึ่งจัดเรียงตามที่ตั้งใจไว้แม้จะมีอักขระความกว้างผันแปรเช่นอิโมจิ BTW ฉันคิดเกี่ยวกับวิธีการทำ quine ใน Emojicode แล้วฉันเลื่อนลง ...
NieDzejkob

@NieDzejkob ความคิดที่ดีขอบคุณ
betseg

@betseg มันปิดเล็กน้อยในบางสถานที่สำหรับฉัน แต่อ่านเพิ่มเติมได้แล้ว ดีใจที่คุณชอบ
NieDzejkob

@NieDzejkob ไม่กี่? ด้วยตัวอักษรของฉันเพียงคำสั่งตัวอักษรสตริงจะปิดเพราะมันยาวที่ปลายของคุณ?
betseg

4

2: 119 ตัวอักษร, Javascript

alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY'+`alert(eval(c=${JSON.stringify(c).substr(0,37)}`"))

ลองใช้ออนไลน์ (ใช้console.logแทนalertเอาต์พุต)

อิงจากJS quine นี้

เวอร์ชั่นเก่า (อ่านซอร์สโค้ด):

f=_=>`abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYf=${(f+"").substr(0,48)}`;alert(f())

อิงจากJS quine นี้


นี่ไม่ใช่ quine ที่เหมาะสมเนื่องจากฟังก์ชั่นอ้างอิงตัวเอง
Shaggy

@Shaggy ฉันเพิ่มหนึ่งที่ถูกต้อง
SuperStormer

1
ฟังก์ชั่น @Shaggy Self-Referential นั้นถูกต้องตามนิยามของเรา
ATaco


2

3:56 ตัวละครSOGL

"alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJ”1#Οj

ลองที่นี่!

คำอธิบาย:

"...”      push the first 50 bytes of the previous answer
     1#Ο   wrap a quote around with that
        j  take the last letter off, as my answer has one more byte for the starting quote.

คำตอบ Javascript มีคำพูดอยู่ในนั้นดังนั้นฉันต้องเพิ่มราคาเริ่มต้น แต่เนื่องจากนี่ไม่ใช่ code-golf จึงไม่สำคัญ



2

7: 137 ตัวอักษร, Java 8

v->{String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";return t+("v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}

ลองออนไลน์

คำอธิบาย:

v->{        // Method with empty unused parameter and String return-type
  String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";
            //  String containing the first 50 characters of the previous answer
  return t  //  Return those first 50 characters
   +"v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}
            //  Concatted with the first 50 characters of my answer
            //  with correct escape-slashes

Aha! ฉันคิดว่า Emoji ฆ่าความท้าทายนี้ให้ดี ทำได้ดีนี่.
Magic Octopus Urn

@MagicOctopusUrn ตอนนี้ฉันสังเกตเห็นกฎของคุณเกี่ยวกับ " ถ้าบุคคลก่อนที่คุณจะรวมบรรทัดใหม่หรืออักขระที่ไม่ใช่ ASCII ในแหล่งที่มาของพวกเขาคุณสามารถ STRIP พวกเขาได้ " ดังนั้นคำตอบอาจกำจัด Emojis หากพวกเขาต้องการ สำหรับคำตอบของฉันมันไม่สำคัญว่าจะด้วยวิธีใดเนื่องจากเรานับเป็นตัวอักษรแทนที่จะเป็นไบต์ต่อไป
Kevin Cruijssen

นั่นและมันไม่เกี่ยวกับปริมาณของตัวละครอย่างซื่อสัตย์และใช่ฉันลืมเกี่ยวกับกฎนั้น (ยิ่งลืมเกี่ยวกับความท้าทายโดยทั่วไป)
Magic Octopus Urn

พูดตามตรงนะลองคิดดูสินี่เป็นความท้าทายที่ไม่จริงเลยใช่ไหม?
Magic Octopus Urn

@ MagicOctopusUrn มันเป็นแบบนั้น โดยพื้นฐานแล้วคุณจะได้รับ 50 ตัวอักษรแรกของควายของคุณ ใน Java quines มักจะเกิดขึ้นโดยการใส่ซอร์สโค้ดที่ยังไม่ได้ฟอร์แมตใน String จากนั้นจัดรูปแบบ / หนีเครื่องหมายอัญประกาศและเครื่องหมายทับอย่างถูกต้อง ฟังก์ชั่นพื้นฐานแลมบ์ดาใน Java 8 มีอยู่แล้ว 88 ไบต์ ( ลองออนไลน์ ) ดังนั้นใน Java ความท้าทายนี้สั้นกว่ามากโดยไม่ต้องใช้ควินเต็ม ฉันสามารถจินตนาการควินินเป็นวิธีที่ดีที่สุดในเกือบทุกภาษา
Kevin Cruijssen

1

6: 70 ตัวอักษรEmoji

⛽as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzAC🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡

ลองออนไลน์!

ดูเหมือนว่าเป็นไปไม่ได้ที่จะไม่ส่งบรรทัดขึ้นบรรทัดใหม่ หากไม่เป็นไรฉันจะลบคำตอบออก

คำอธิบาย:

⛽ ... 🚘	String literal
👥		Duplicate
💬⛽💬		Push ⛽ as a string
🔀		Swap the top two strings. Stack: [long literal] "⛽" [long literal]
👫		Concatenate.
💬0💬📥💬-1💬📥✂	Remove the last character
👫		Concatenate.
➡		Print.

ไม่ควรจะเป็น⛽🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡แทน betseg 's คำตอบ Emojicode ไม่ได้เริ่มต้นด้วยas=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACแต่ด้วย🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxแทน
Kevin Cruijssen

@KevinCruijssenIf the person before you has included newlines or non-ASCII characters in their source, you may STRIP them.
NieDzejkob

อาฉันพลาดกฎนั่น .. ในกรณีนี้ฉันจะอัพเดทคำตอบของฉัน
Kevin Cruijssen

ทำไมคุณเปลื้องพวกเขาออกด้วยความอยากรู้? เพื่อให้ง่ายขึ้นสำหรับคำตอบในอนาคต เพราะรหัสของคุณทำงานได้อย่างสมบูรณ์แบบโดยไม่ต้องลอก Emojis ของคำตอบก่อนหน้า: ลองได้ที่นี่
Kevin Cruijssen

@KevinCruijssen เมื่อครึ่งปีที่แล้ว ฉันจำไม่ได้
NieDzejkob

1

อักขระ 12: 202, Ruby

puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7).gsub('0','>').gsub('1','+').gsub('2','-').gsub('3','<').gsub('4','[').gsub('5','.').gsub('6',']')+'puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7'

ลองออนไลน์!


เข้ารหัสอักขระห้าสิบตัวแรกของคำตอบก่อนหน้าในฐานเจ็ด

  • 0:>
  • 1: +
  • 2: -
  • 3: <
  • 4: [
  • 5:.
  • 6:]

จากนั้นแปลงเป็นฐาน 36 เพื่อรับ "21ipdgmtwkkke7ynvzpcnlzt7kl"


0

9: 55 ตัวอักษรเยลลี่

“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefg”;”“;

ลองออนไลน์!


ฉันลบอักขระที่ไม่ใช่ ASCII ออกจากเอาต์พุตเนื่องจากได้รับอนุญาตและเยลลี่ก็เพิกเฉย

คำอธิบาย

นี้เริ่มต้นด้วยตัวอักษรสตริงของ 50 ตัวอักษรแรก (ลบ) ของคำตอบก่อนหน้านี้แล้วผนวกตัวละครไปด้วยแล้วผนวกอักษรสายเดิมที่จะสิ้นสุดอีกครั้งกับขั้นสุดท้าย;”“ ;เนื่องจากตัวละครถูกลบออกไป 50 ตัวอักษรแรกของซอร์สโค้ดของฉันคือ 49 จากคำตอบก่อนหน้าโดยมีส่วนหน้าซึ่งทำให้โปรแกรมนี้สั้นมาก (ใช่ฉันรู้ว่านี่ไม่ใช่แต่ทำไมไม่ตีกอล์ฟถ้าคุณทำได้)


0

10: 116 ตัวละคร, Python 3

print('''“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefgprint(\'\'\'“"v->{String t=`"as=:'\`"alert(eval(c=\`"''')

เพียงพิมพ์สตริงที่ประกอบด้วยอักขระ 50 ตัวแรกของคำตอบ 9 แล้วตามด้วยอักขระ 50 ตัวแรกของแหล่งที่มาของมัน ไม่จำเป็นต้องมีความฉลาดเหมือนควินินเพราะคำพูดที่หลบหนี ( \'\'\') ปรากฏหลังตัวอักษรที่ 50 และดังนั้นจึงไม่จำเป็นต้องทำซ้ำในการส่งออก

วิธีนี้ใช้ได้กับแทบทุกภาษา - คุณเพียงแค่ต้องหลีกเลี่ยงอักขระที่มีคำพูดที่ปรากฏในคำตอบก่อนหน้า ดังนั้นฉันไม่คิดว่าจะมีความท้าทายมากในการท้าทายนี้


0

11: 723 ตัวละคร, Brainf ***

+[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.[[-]<]++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

ถอดอักขระที่ไม่สามารถพิมพ์ออกได้ เกือบสมบูรณ์โดยสร้างbrainfuck ข้อความปั่นไฟ อาจจะขี้เกียจใช่มั้ย

TIO

Print [print('''"v->{String t=`"as=:'\`"alert(eval(c=\`"] +[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----------.++++++.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.
Clear all cells to left until first empty cell [[-]<]
Print [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

คุณดูเหมือนจะพิมพ์ตัวที่ 2 ถึง 51 ของคำตอบ Brainfuck ของคุณแทนที่จะเป็น 50 ตัวแรก (มันหายไปก่อน>): ลองออนไลน์ นอกจากนี้คุณอาจต้องการลบตัวละครเนื่องจากคำตอบของคุณ Brainfuck กำลังแสดงว่า ``
Kevin Cruijssen

>ที่จุดเริ่มต้นที่ดูเหมือนว่าจะได้รับนอกจากนี้อุบัติเหตุและผมทิ้งตัวละคร จากคำตอบอื่น ๆ ฉันคิดว่านั่นหมายความว่าฉันต้องพิมพ์อักขระ 49 ตัวแรกเท่านั้น
Panda0nEarth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.