สลับ Quine!


11

เราทุกคนรู้ว่าสิ่งที่ควินคือ คว่ำควินเป็นโปรแกรมที่ไม่ว่างเปล่าที่พิมพ์ผกผันของรหัสที่มาของมันโดยไม่ต้องอ่านรหัสที่มาของตนและประกอบด้วย แต่เพียงผู้เดียวของตัวอักษรที่พิมพ์อักขระ ASCII (พื้นที่ผ่าน~)

ที่นี่“ ผกผันของซอร์สโค้ด” หมายถึงสิ่งต่อไปนี้: ผลลัพธ์ของโปรแกรมของคุณจะต้องมีอักขระ ASCII ที่พิมพ์ได้(m - c) แต่ละครั้งโดยที่cคือจำนวนครั้งที่อักขระที่กล่าวถึงเกิดขึ้นในรหัสของคุณและmคือค่าสูงสุด จำนวนครั้งที่มีการซ้ำอักขระใด ๆ ในรหัสของคุณ

(กล่าวอีกนัยหนึ่ง: รหัสของคุณ + ผลลัพธ์ของคุณ = การเรียงสับเปลี่ยนของmคูณทั้งหมดของ ASCII ที่พิมพ์ได้)

ตัวอย่างเช่นถ้าโปรแกรมของคุณ12345แล้วm = 1และคุณควรส่งออกการเปลี่ยนแปลงของสายนี้ใด ๆ :

 !"#$%&'()*+,-./06789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

ถ้าโปรแกรมของคุณAABแล้วm = 2และคุณควรส่งออกการเปลี่ยนแปลงใด ๆ :

  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@BCCDDEEFFGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~

หมายเหตุวิธีการมีสองหายไปAs Bและหนึ่งที่ขาดหายไป

แม้ว่าโปรแกรมที่มีอักขระ ASCII ที่พิมพ์ได้ทั้งหมดและไม่มีสิ่งใดเป็น quine ผกผันที่ถูกต้อง (เป็นที่พอใจm = 1 ) คำตอบดังกล่าวจะไม่สามารถแข่งขันได้มากนักเนื่องจากความยาวของมัน

คุณจะต้องเขียนโปรแกรมที่เป็นควินคว่ำตามที่อธิบายไว้ในวรรคข้างต้น เช่นนี้เป็นโปรแกรมที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ โชคดี!


1
เว้นวรรคแท็บและขึ้นบรรทัดใหม่
Stewie Griffin

11
คุณควรเน้นduplicated for every repeated character in the source codeว่ามันสร้างความแตกต่างในการท้าทาย
ร็อด

6
คุณสามารถยกตัวอย่างการผกผันที่มีการซ้ำหลายอักขระ (และหลายครั้ง) ได้ไหม กล่าวว่า11234512345?
Giuseppe

4
สิ่งนี้ซ้ำกันอย่างไร เกี่ยวข้องใช่ ทำซ้ำไม่! มันเป็นวิธีที่ยากขึ้นในภาษาที่คุณจะต้องมีตัวละครที่ซ้ำกัน โปรดทราบว่าคุณไม่สามารถทำซ้ำสตริงได้เนื่องจากจำนวนอักขระที่คุณต้องลบออกจากแต่ละสตริงมีการเปลี่ยนแปลง
Stewie Griffin

1
@StewieGriffin ฉันจะ VTC นี้เป็น "ไม่ชัดเจน" มากกว่า "ล่อ" เพราะ (เกือบ) ทุกคำตอบมีความคิดเห็นพยายามคิดออกว่าduplicated for every repeated character in the source codeหมายถึงอะไรหรือถ้าการส่งที่ถูกต้องสำหรับเกณฑ์นั้นเพราะ OP ไม่ได้ค่อนข้าง ไม่กี่คำถามที่นี่
Giuseppe

คำตอบ:


7

Brain-Flak , 221 207 bytes

รวม +1 สำหรับ -A

(((((((()()()()){}){}()){}){})()){}{}){({}[()]<((((((()()()()){}){}){})<>[()()()])[()])((((()()()){})){}{})<>((()()()()){}){({}[()]<(({})())>)}{}({}()())<>{{({}<>[()]<(({})())><>)}{}<>(({}())()())<>}<>>)}{}

ลองออนไลน์!

# Push 206 (the number of times to duplicate the output)
(((((((()()()()){}){}()){}){})()){}{})

# For 0 to 206
{({}[()]<

    # Push 32 on this stack and 18, 28 and 29 to the other
    # 18, 28 and 29 are the distances between the sets of braces 
    ((((((()()()()){}){}){})<>[()()()])[()])((((()()()){})){}{})<>

    # For 0 to 8
    ((()()()()){}){({}[()]<

        # Push TOS, TOS + 1
        (({})())

    # end For 0 to 8
    >)}{}

    # Push TOS + 2 
    # skips '(' and ')'
    ({}()())

    # For each value on the off stack (18, 28, 28)
    <>{

        # For 0 to that number
        {({}<>[()]<

            # Push TOS, TOS + 1
            (({})())

        # End for 0 to that number
        ><>)}{}

        # Push TOS + 1, TOS + 3 (skips this set of braces)
        <>(({}())()())<>

    # End for each value on the off stack (18, 28, 28)
    }<>

 # End for 0 to 206
 >)}{}

ฉันคิดว่าคุณควรลบ[ห้าครั้งเท่านั้นไม่ใช่ทุกครั้ง โปรดทราบว่า2จะถูกลบเพียงครั้งเดียวในตัวอย่าง ความท้าทายค่อนข้างสับสนเล็กน้อย
Stewie Griffin

น่าสนใจว่ามันสั้นกว่าควินมาตรฐานอย่างมากได้อย่างไร +1:)
James

2
นี่มันง่อยจริงๆและน่าสนใจน้อยกว่าคำตอบของคุณ แต่ในทางเทคนิค!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz {|} ~ `จะได้รับคะแนนที่ดีกว่า: /
James

6

CJam , 17 ไบต์

{s95c+'|,32>\-}_~

ลองออนไลน์!

พิมพ์

 !"#$%&()*./014678:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^`abdefghijklmnopqrtuvwxyz

คำอธิบาย

เป้าหมายคือการแก้ไขควินมาตรฐาน

{"_~"}_~

ดังกล่าวที่ไม่มีตัวละครซ้ำในโปรแกรม สาเหตุของเรื่องนี้คือ CJam มีชุดตัวดำเนินการที่แตกต่างกันซึ่งเราสามารถใช้เพื่อลบอักขระจากช่วง ASCII ที่พิมพ์ได้ แต่ไม่คำนึงถึงจำนวนครั้งที่เกิดขึ้น การนำไปใช้ด้วยมือนั้นอาจจะนานกว่านี้ดังนั้นฉันต้องตรวจสอบให้แน่ใจว่าตัวละครทุกตัวปรากฏเพียงครั้งเดียวและเราไม่ต้องกังวลกับเหตุการณ์ที่เกิดขึ้น

{      e# Quine framework. Executes the block while leaving another copy of the
       e# block on the stack.
  s    e#   Stringify the block, giving us "{s95c+'|,32>\-}".
  95c  e#   Convert 95 to a character, which gives us '_' without repeating
       e#   it in the source code.
  +    e#   Append it to the string. We don't need to worry about '~', we'll just
       e#   leave it out of the printable ASCII range to begin with.
  '|,  e#   Get a character range from the null byte up to '{'. This omits "|}~",
       e#   but those are in the program anyway, it doesn't matter.
  32>  e#   Discard the unprintable characters.
  \-   e#   Subtract the source string from the printable ASCII range.
}_~


2

05AB1E , 95 61 60 ไบต์ (ไม่ใช่ 58 b / c ฉันไม่ชอบเลย)

A?9L<J, !"'#$%&()*+-./:;=>@BCDEFGHIKMNOPQRSTUVWXYZ[\]^_`{|}~

ลองออนไลน์!

คำตอบเก่าใช้ไม่ได้กับ "อักขระ ASCII เท่านั้น" คำสั่งจำนวนมากไม่ถูกต้องที่นี่

มันพิมพ์abcdefghijklmnopqrstuvwxyz012345678ครั้งเดียวเนื่องจากไม่มีตัวอักษรซ้ำซ้อน


เวอร์ชันที่BCDEFGHIKMNOPQRSTUVWXYZถูกลบ:

กำลังดำเนินการ ... ฉันคิดว่า ~ 60 ไบต์ต่ำที่สุดเท่าที่คุณจะได้รับโดยไม่มีตัวอักษรที่ไม่ใช่ ASCII ใน 05AB1E ..

05AB1E , 58 ไบต์

T5+FA'uK?Au"ADLJFKST"SK?9L<5KJ?} !#$%&()*>-./:;=@[]^_`{|~\

ลองออนไลน์!

พิมพ์เอาต์พุต x12 เนื่องจากอักขระซ้ำ:

['""', '55', '???', 'AAA', 'FF', 'JJ', 'KKKK', 'LL', 'SS', 'TT', 'uu']

มันยังไม่ยุติอย่างถูกต้องทำงานในตอนนี้ ...


คำตอบเก่าที่ไม่ถูกต้อง (เนื่องจากอักขระที่ไม่ใช่ ASCII) ถูกลบแล้วโปรดดูประวัติการแก้ไข


"Inverted Quine เป็นโปรแกรมที่ไม่ว่างที่จะพิมพ์ส่วนกลับของซอร์สโค้ดโดยไม่ต้องอ่านซอร์สโค้ดและประกอบด้วยตัวอักษรที่พิมพ์ได้ - ASCIIเท่านั้น" ฉันกำลังทำงานกับคำตอบ 05AB1E ด้วยจนกระทั่งฉันสังเกตเห็นสิ่งนี้
KSmarts

1
@ มาร์กอัปคงที่ที่ราคา 76 ไบต์
Magic Octopus Urn

2
โดยปกติแล้วในความท้าทายที่รหัสกอล์ฟหนึ่งคาดหวัง 05AB1E จะทำเล็ก ๆ น้อย ๆดีกว่า "เต้น Java"
KSmarts

@ มาร์กอัปยักถ้าคุณไม่ปล่อยให้ esolangs แข่งขันกันโดยง่ายคุณควรได้รับการตอบประชดประชัน:
Magic Octopus Urn

0

Java 8, 106 99 190 ไบต์

class i {/*{}!"#$%&'()+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`bdefghjkmnopqrtuvwxyz|~!"#$%&'()+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`claibdefghjkmnopqrtuvwxyz|~*/}

คุณอาจจะเล่นกอล์ฟด้วยการลบที่ว่างi {เพราะคุณมีที่ว่างอยู่แล้ว
Okx

1
ฉันเชื่อว่าตัวละครทุกตัวจะต้องเกิดขึ้นในจำนวนที่เท่ากันเพื่อให้ถูกต้อง
Roberto Graham

ฉันไม่แน่ใจว่าฉันเข้าใจความท้าทายทั้งหมดclass i{/*!"#$%&'()+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`bdefghjkmnopqrtuvwxyz|~*/}หรือไม่ มันมีทั้งหมด - ASCII ที่พิมพ์ได้ในซอร์สโค้ดของมันและเอาท์พุทอะไร ส่วน " ทำซ้ำสำหรับอักขระที่ซ้ำกันทุกครั้งในซอร์สโค้ด " ใช้กับเอาต์พุตดังนั้นแม้ว่าจะsมีการทำซ้ำในclassและ*และ/ทำซ้ำเนื่องจากการ/* */แสดงผลสี่ครั้งไม่มีอะไรที่ยังคงไม่มีอะไร
Kevin Cruijssen

นอกจากนี้ถ้าฉันถูกต้องแน่นอนคุณสามารถเล่นกอล์ฟได้ที่: interface Z{}//!"#$%&'()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY[\]^_`bdghjklmopqsuvwxyz|~( 97 bytes )
Kevin Cruijssen

0

Javascript (ES6), 103 101 ไบต์

_=>` !"#$%&'()*+,-.0123456789:;<?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~`//_=>\\

โซลูชันเก่า (ใช้ 103 ไบต์alert)

alert;;alert`\ \!"#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_bcdfghijkmnopqsuvwxyz{|}~`

โซลูชันเก่า (ไม่ถูกต้อง) (96 ไบต์)

alert()// !"#$%&'*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`bcdfghijkmnopqsuvwxyz{|}~

คุณมีสองตัว//ซึ่งหมายความว่าคุณต้องส่งออกอักขระที่พิมพ์ได้โดย/ลบออกหนึ่งตัว (ฉันคิดว่า)
Stewie Griffin

@StewieGriffin แก้ไขแล้ว
Herman L
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.