สตริงเวลาแคปซูล 2016: ความหลากหลายของภาษาของคุณคืออะไร?


71

ประมาณหนึ่งปีที่แล้วเมื่อวันที่ 31 ธันวาคม 2558 ฉันมีความคิดว่า:

เราควรทำสายแคปซูลเวลา ทุกคนได้รับการเพิ่มตัวละครตัวหนึ่งและปีใหม่ต่อไปเราจะเห็นว่าใครสามารถสร้างโปรแกรมที่ดีที่สุดจากตัวละครทั้งหมดที่มี esolangs ที่มีอยู่แล้ว

ลูกบิดประตูเกล้าฯตัวอักษรที่เก็บรวบรวมจากPPCGชุมชนและเก็บไว้ที่ปลอดภัยสำหรับปี

มีคนเข้าร่วมมากถึง74 คนดังนั้นเราจึงมีตัวละครที่พิมพ์ได้-ASCII 74 อัน ที่น่าเล่น

นี่คือ 74 ตัวอักษรของสตริงแคปซูลเวลา 2016 ตามลำดับที่ส่งมา:

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

นี่คือ 74 ตัวอักษรของสตริงแคปซูลเวลา 2016 ตามลำดับ ASCII (พื้นที่นำโน้ต):

 !!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~

การทำงานกับมันมีไม่มากนัก แต่อยู่ที่นี่เราชอบความท้าทาย

ความท้าทาย

ในการพิจารณาว่าภาษาใด "ดีที่สุด" กับสตริงแคปซูลเวลาเราจะพบกับความท้าทาย6 (สำหรับ 201 6 ) ที่เพิ่มความยากลำบากซึ่งแต่ละครั้งคุณต้องใช้เซ็ตย่อยของอักขระแคปซูล 74 ครั้ง

การมี 6 ความท้าทายที่แตกต่างช่วยให้มั่นใจว่าภาษาจะสามารถแข่งขันได้มากขึ้น แต่มีเพียงภาษาที่ดีที่สุดเท่านั้นที่จะสามารถตอบคำถามเหล่านั้นทั้งหมดและให้คะแนนสูง

เกณฑ์การให้คะแนน:

  • แต่ละความท้าทายจะได้คะแนนจาก 0 ถึง 74 ขึ้นอยู่กับจำนวนอักขระที่ใช้
  • คะแนนที่สูงขึ้นจะดีกว่า
  • หากภาษาของคุณไม่สามารถทำการท้าทายได้คะแนนของคุณสำหรับความท้าทายนั้นคือ 0
  • ชุดย่อยใด ๆ ที่ไม่ได้รับการยกเว้นของความท้าทายอาจจะแล้วเสร็จ
  • คะแนนสุดท้ายของคุณคือผลรวมคะแนนจากการท้าทายทั้ง 6 รายการ
  • คะแนนสุดท้ายเป็นที่ดีที่สุด 6 × 74 หรือ 444

ความท้าทาย

1. เรียกใช้

หากรหัสของภาษาไม่สามารถทำงานในตอนแรกมันจะไม่สามารถทำอะไรได้เลย

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

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

อนุญาตให้แสดงความคิดเห็นดังนั้นอาจเป็นเรื่องง่ายเหมือนกัน

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

ใน Python ด้วยคะแนน 74

(อย่ากลัวที่จะตอบถ้านี่เป็นความท้าทายเพียงอย่างเดียวที่ภาษาของคุณสามารถทำได้ แต่อย่าคาดหวังว่าจะได้รับคะแนนเสียงมากมายเช่นกัน)

คะแนน = ความยาวของโปรแกรม (โปรแกรมที่ยาวกว่าดีกว่า)

2. I / O

ภาษาที่ไม่มีรูปแบบของอินพุตหรือเอาต์พุตเกือบไร้ประโยชน์อย่างที่ไม่สามารถทำได้

รับอักขระ ASCII ที่พิมพ์ได้จาก!(0x33) ถึง}(0x7D) รวมเอาท์พุทอักขระ ASCII ที่พิมพ์ได้ก่อนและหลัง

เอาต์พุตสามารถมีความยาวสองสตริงหรือรายการหรืออักขระคั่นด้วยช่องว่างหรือบรรทัดใหม่

ตัวอย่างเช่นถ้าใส่คือ}การส่งออกอาจจะมี|~หรือ["|", "~"]หรือหรือ| ~|\n~

ในทำนองเดียวกัน "คือผลลัพธ์สำหรับ!และเป็นผลลัพธ์สำหรับACB

คะแนน = 74 - ความยาวของโปรแกรม (โปรแกรมที่สั้นกว่าดีกว่า)

3. Branchability

เงื่อนไขมักเป็นข้อกำหนดสำหรับทัวริงครบถ้วนซึ่งมักเป็นข้อกำหนดสำหรับภาษาที่มีประโยชน์

รับจำนวนเต็มบวกถ้ามันลงท้ายด้วยเลขทศนิยม16แล้วเปลี่ยน6a 7และเอาท์พุทผลลัพธ์; มิฉะนั้นเอาท์พุทอินพุตไม่เปลี่ยนแปลง คุณสามารถใช้สตริงสำหรับอินพุต / เอาท์พุตหากต้องการ

ตัวอย่าง:

2016 -> 2017
16 -> 17
116 -> 117
1616 -> 1617
6 -> 6
15 -> 15
17 -> 17
106 -> 106
2106 -> 2106

คะแนน = 74 - ความยาวของโปรแกรม (โปรแกรมที่สั้นกว่าดีกว่า)

4. ความสามารถในการวนซ้ำ

ภาษาที่ไม่สามารถวนซ้ำได้จะทำให้เกิดรหัสซ้ำ ๆ ดังนั้นคุณจะต้องหยุดพักการเขียนโปรแกรมสักพัก

กำหนดจำนวนเต็มบวกเอาท์พุทสี่เหลี่ยมจัตุรัส ASCII-art ของความยาวด้านนั้นเต็มไปด้วยรูปแบบของสี่เหลี่ยมจัตุรัสขนาดเล็กที่มีศูนย์กลางที่สลับกันระหว่างอักขระ ASCII ที่พิมพ์ได้สองตัวที่แตกต่างกัน ไม่จำเป็นต้องเป็นอักขระสองตัวเดียวกันสำหรับอินพุตที่ต่างกัน

ตัวอย่างเช่น:

1    <- input
X    <- output

2
XX
XX

3
XXX
X-X
XXX

4
XXXX
X--X
X--X
XXXX

5
YYYYY
Y...Y
Y.Y.Y
Y...Y
YYYYY

6
XXXXXX
X----X
X-XX-X
X-XX-X
X----X
XXXXXX

7
ZZZZZZZ
Z-----Z
Z-ZZZ-Z
Z-Z-Z-Z
Z-ZZZ-Z
Z-----Z
ZZZZZZZ

คะแนน = 74 - ความยาวของโปรแกรม (โปรแกรมที่สั้นกว่าดีกว่า)

5. คณิตศาสตร์

ภาษาที่ไม่ดีกับตัวเลขและคณิตศาสตร์อาจรวมถึงวิชาเอกมนุษยศาสตร์ด้วย

ไม่ต้องป้อนข้อมูลใด ๆ ยกเว้นเอาท์พุทตัวหารจำนวนเต็ม 72 ของปี 2559บวกและลบในลำดับใดก็ได้ เอาต์พุตสามารถจัดรูปแบบเป็นสตริงหรือรายการด้วยวิธีที่สมเหตุสมผล

ตัวอย่าง:

-1, -2, -3, -4, -6, -7, -8, -9, -12, -14, -16, -18, -21, -24, -28, -32, -36, -42, -48, -56, -63, -72, -84, -96, -112, -126, -144, -168, -224, -252, -288, -336, -504, -672, -1008, -2016, 1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 18, 21, 24, 28, 32, 36, 42, 48, 56, 63, 72, 84, 96, 112, 126, 144, 168, 224, 252, 288, 336, 504, 672, 1008, 2016

คะแนน = 74 - ความยาวของโปรแกรม (โปรแกรมที่สั้นกว่าดีกว่า)

6. ความลึกลับ

(ไม่ไม่ใช่อย่างนั้น ) เราที่PPCGชอบสิ่งที่ลึกลับของเราและquinesเป็นตัวอย่างที่ดีของสิ่งนั้น

เขียนควินที่ยาวที่สุดที่คุณสามารถทำได้ตามกฎของควินินทั่วไป ควินินเป็นโปรแกรมที่ไม่มีอินพุตและเอาต์พุตเอง

คะแนน = ความยาวของโปรแกรม (โปรแกรมที่ยาวกว่าดีกว่า)

กฎเฉพาะ

  • ในความท้าทายทั้ง 6 ข้อของโปรแกรมของคุณจะต้องเป็นชุดย่อยของตัวอักษรแคปซูลเวลา 74 ที่จัดเรียงใหม่ตามที่คุณต้องการ อาจเป็นเซตย่อยที่ว่างเปล่าหรือเซ็ตย่อยที่ไม่เหมาะสมดังนั้นแต่ละโปรแกรมของคุณอาจมี 0 และมีอักขระไม่เกิน 74 ตัว
  • ขึ้นบรรทัดใหม่ที่ส่วนท้ายของอินพุต / เอาท์พุต / รหัสไม่เป็นไรที่ใดก็ได้เนื่องจากบางภาษาต้องการหรือไม่สามารถหลีกเลี่ยงได้ง่าย
  • เว้นแต่จะระบุไว้แต่ละท้าทายอาจจะแล้วเสร็จตามฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบตามค่าเริ่มต้นของเรา
  • ความท้าทายทั้งหมดจะต้องเสร็จสิ้นในภาษาเดียวกัน
  • คุณต้องใช้ภาษา (หรือรุ่นของภาษา) ทำก่อนที่จะถูก 2017 ที่ใดก็ได้ในโลก
  • ทุกคนยินดีที่จะตอบไม่ว่าคุณจะเพิ่มตัวละครในแคปซูลเวลาหรือไม่

อย่าลังเลที่จะใช้ตัวละครแคปซูลเวลา 2016 ในความท้าทายของคุณเอง


4
Yay: D เป็นความท้าทายที่ JavaScript สามารถเก่ง!
Downgoat

1
ห้องสนทนาการอภิปรายสำหรับการทำงานร่วมกันในการแก้ปัญหาบางอย่าง
user48538

6
ค่อนข้างแน่ใจว่า6×74 or 444เป็นไปไม่ได้เพราะจะหมายถึงโปรแกรมที่ว่างเปล่าซึ่งอย่างใดทำงานแตกต่างกัน ด้วยเหตุนี้ 442 จึงเป็นค่าต่ำสุดที่แท้จริงซึ่งหมายความว่าโปรแกรมการป้อนข้อมูลสองใน 3 รายการมีอักขระในตัวพวกมัน
Destructible Lemon

7
ภาษาของฉันคือ Java ฉันแพ้โดยค่าเริ่มต้น: P
Weckar E.

2
ลองทำอีกครั้ง!
ev3commander

คำตอบ:


37

Glypho , 74 + (74 - 36) = 112

1. เรียกใช้ (74 ไบต์)

!!#%QTQT@=A@$!!$)()*!&))+...1449:@HILOQZ\\^`````````eefmpx|||{~~~~~~y~|~ ~

2. IO (36 ไบต์)

!!!#!$!$4419TAHT\ee\OQQQ))*+)..)|~~~

คำอธิบาย

Glypho ดูเหมือนจะเป็นตัวเลือกที่ดีพอสมควรสำหรับความท้าทายนี้เพราะมันไม่สนใจว่าตัวละครที่แท้จริงจะถูกใช้งานอย่างไร แต่จะดูที่กลุ่มของอักขระสี่ตัวและเลือกคำสั่งตามรูปแบบของการทำซ้ำในอักขระสี่ตัวนั้น เนื่องจากมีการซ้ำซ้อนกันจำนวนมากในสตริงไทม์แคปซูลเราจึงค่อนข้างยืดหยุ่นในโปรแกรมที่เราสามารถเขียนได้ยกเว้นว่าเรา จำกัด โปรแกรมไว้ 18 คำสั่ง (ซึ่งไม่มากใน Glypho) ในขณะนี้ทำให้ฉันสามารถแก้ปัญหาสองปัญหาแรกได้อย่างง่ายดาย แต่ฉันสงสัยว่า Glypho สามารถเรียกใช้ตัวละครอื่น ๆ ด้วยตัวละครเพียงไม่กี่ตัว

ฉันได้ทดสอบสิ่งเหล่านี้โดยใช้ล่าม Java ที่ดึงมาจาก 2006-06-23 บนเครื่อง waybackซึ่งใช้การแม็พคำสั่งต่างกันเล็กน้อย:

0000 n
0001 i
0010 >
0011 \
0012 1
0100 <
0101 d
0102 [
0110 +
0111 o
0112 *
0120 -
0121 ]
0122 !
0123 e

เรียกใช้โปรแกรมแปลว่า:

1d-+[...]

ไหน...เป็นขยะบางอย่างที่ฉันไม่ได้รำคาญแปล

1      Push 1.
d      Duplicate.
-      Turn into -1.
+      Add. Gives 0.
[...]  Skip the rest because the top of the stack is zero.

IOโปรแกรมแปลว่า:

id1-+o1+o

นี่คือสิ่งที่ทำ:

i   Read a character.
d   Duplicate.
1   Push 1.
-   Turn into -1.
+   Add to character, i.e. decrement it.
o   Output it.
1   Push another 1.
+   Add to character, i.e. increment it.
o   Output it.

24

CJam, 74 + (74 - 14) + (74 - 26) = 182 คะแนน

1. เรียกใช้ (74 ไบต์)

e# !!!!!$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````efmpxy{||||~~~~~~~~~

เลื่อนe#ไปที่ความคิดเห็นด้านหน้าตลอดทั้งบรรทัด

2. I / O (14 ไบต์)

9`)ZH*+~):Q(Q)

Dennis บันทึก 8 ไบต์แล้ว

คำอธิบาย:

9`                   Push "9".
  )                  Extract character '9'.
   ZH*               Push 3 * 17 = 51.
      +              Add to get character 'l'.
       ~             Eval as CJam code. Command l reads a line.
        )            Extract the only character from the input line
         :Q(         Assign to Q and decrement
            Q)       Push Q and increment

3. Branchability (26 ไบต์)

4`)4Z|`I!`|~^~~T$AT$*%H(=+

คำอธิบาย:

4`)                            Push character '4'
   4Z|`                        Push 4 | 3 = 7, stringify
       I!`                     Push !18 = 0, stringify
          |~                   Setwise or and eval to get 70
            ^                  XOR to get 'r'
             ~                 Eval to read input
              ~                Eval the input as CJam code to turn
                               it into an integer
               T$              Duplicate it
                 A             Push 10
                  T$*          Duplicate that and multiply → 100
                     %         Mod the copy by 100
                      H(=      Compare to 17 - 1 = 16
                         +     Add the result (1 or 0) to the original

ฉันจะดูคนอื่น ๆ ในภายหลัง ( แก้ไข : ฉันสงสัยว่ามันเป็นไปได้โดยไม่ต้องบล็อกหรือสตริงตัวอักษร…อาจคณิตศาสตร์อย่างใดอย่างหนึ่ง?)


สำหรับ # 2 9`)ZH*+~):Q(Q)คุณสามารถใช้
Dennis

11

J, คะแนน 71 + (74 - 19) = 126

งานที่ 1 ความยาว 71

AHILO=:( |T`T`Z`e`e`f`m`p`x`y|.~~%~@{|~^|Q@Q@Q+.*.449!~!~!~!!#$$&1\\~~)

สิ่งนี้นิยามคำกริยาAHILOให้อยู่ข้างใน ที่ไม่ได้ใช้:

)))

ฉันไม่คิดว่าจะมีวิธีใดที่จะได้รับนานกว่านี้

งานที่ 3 ความยาว 19

+($#~$~4)=1e4|&%:*~

วิธีทำภารกิจนี้โดยไม่มีข้อ จำกัด คือ+16=100|]อ่านดังนี้:

        ]  Input
    100|   mod 100
 16=       equals 16? (Evaluates to 1 or 0)
+          Add to input.

เรามี+, =และสำเนาหลายคนหรือ|ในการกำจัดของเราและมันเป็นเรื่องง่ายที่จะได้รับรอบ]แต่ตัวเลขที่มีปัญหามากขึ้น นี่คือส่วนแรกที่คำนวณโมดูโลอินพุต 100:

1e4|&%:*~
       *~  Input squared (multiplied with itself).
1e4        The number 10000.
   |       Perform modulo
    &      on
     %:    their square roots.

หลังจากที่เราทำเสร็จแล้วเราจะสร้างหมายเลข 16 วิธีที่ง่ายคือ*~4(4 คูณด้วยตัวมันเอง) แต่เราใช้ไปแล้ว*ซึ่งเป็นสิ่งต้องห้าม เราจะจัดการกับอาเรย์แทน

($#~$~4)
    $~4   Reshape 4 to shape 4, resulting in the array 4 4 4 4.
  #~      Replicate wrt itself: replace each 4 by four 4s.
 $        Take length.

งาน

2

นี่เป็นไปไม่ได้แน่นอนที่สุด วิธีเดียวที่จะจัดการค่าอักขระคือa.และu:และเราไม่สามารถเข้าถึงได้

ทีนี้ถ้าเราสามารถใช้aแทนพูดได้Aนี่จะเป็นทางออก:

Q{~(*^.4%9 1)+I.~&Q=:a.

ส่วนที่ยากที่สุดในการทำให้เรื่องนี้ทำงานคือการสร้างหมายเลข -1

Q{~(*^.4%9 1)+I.~&Q=:a.
                     a.  The array of all bytes.
                  Q=:    Bind it to Q
              I.~&       and find the input's index in it.
   (        )+           Add the following array:
    *                    Signum of
     ^.                  logarithm of
       4%                4 divided by
         9 1             the array 9 1.
                         This evaluates to -1 1.
Q{~                      Index back into Q.

4

(*.1:"|~@+.)

สิ่งนี้สร้างรูปร่างของแกลบ แต่ฉันไม่สามารถหาวิธีสร้างตัวละครได้ อนิจจา.

5

เป็นที่ยอมรับว่านี่เป็นงานที่ง่ายที่สุดที่จะทำใน J อย่างไรก็ตามโดยไม่ต้องทำi.เช่นนี้จะค่อนข้างยาก

6

สิ่งนี้อาจเป็นไปไม่ได้หากไม่มี quine like-out ที่เป็นเท็จ449หรืออะไรทำนองนั้นเนื่องจากสตริงแคปซูลไม่มีคำพูดหรือวิธีอื่นใดในการผลิตสตริง J


สำหรับงานที่ 2 Q{~1+I.~&Q=:a.ให้ตัวอักษรถัดไป: ผูกตัวอักษรa.เพื่อQหาดัชนีการป้อนข้อมูลในกับเพิ่มหนึ่งและดัชนีลงI. ลองมัน. ปัญหาที่เหลืออยู่เพียงอย่างเดียวคือการผลิต...Q-1
Zgarb

นอกจากนี้งานที่ 3 +16=100&|สามารถทำได้โดยไม่ต้องฟังก์ชั่นสตริง: คุณแค่ต้องผลิต 16 และ 100 อย่างใด
Zgarb

@Zgarb (1) ใช่ ... (2) โอ้! เยี่ยมมาก! อืมมไม่ควรจะยากเกินไป
Conor โอไบรอัน

ฮาผมคิดว่าผมได้ 3: +($@#~@$~4)=1e4|&%:*~มันเป็นที่น่ารำคาญมากเพราะเรามีเพียงหนึ่งในแต่ละ(&=:+*และสอง4s
Zgarb

Aaand นี่คือ 2: Q{~(*^.4%9 1)+I.~&Q=:a.ฉันรู้ว่าลอการิทึม^.ให้จำนวนลบสำหรับอินพุตอย่างเคร่งครัดระหว่าง 0 ถึง 1 และเราต้อง%ผลิตเศษส่วนและ*รับผลลัพธ์เป็น -1 และ 1
Zgarb

8

PowerShell - คะแนนรวม: 74

1. Run - คะแนน: 74

#~= `TeQ.)`~H|$QL4yA)\*`!^O$1)!Z`!`~|\`&T@!x+e(f|Q`.|!4%.{~`:~~)m@~`@p~I9~

เนื่องจากนี่เป็นเรื่องยากอย่างยิ่งใน PowerShell (ทุกวิธีที่เป็นไปได้ในการรับอินพุตเป็นไปไม่ได้กับตัวละครที่กำหนดเท่าที่ฉันสามารถบอกได้) อย่างน้อยฉันจึงตัดสินใจสุ่มความท้าทายครั้งแรกดังนั้นเราจึงไม่คัดลอกตัวอย่างทั้งหมดโดยตรง จากโพสต์

ดังนั้นนี่คือตัวสร้างคำตอบแบบสุ่มที่ท้าทาย 1 ข้อ (สำหรับภาษาที่#มีความคิดเห็น):

'#'+$(-join([char[]]' !!!!!$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~'|Get-Random -Count 73))

ลองออนไลน์!


ฉันคิดว่าคุณถูกต้อง สิ่งที่ใกล้เคียงที่สุดที่เราจะได้รับก็$^คือ "โทเค็นแรกของบรรทัดก่อนหน้าในเซสชั่น" ซึ่งจะมีข้อ จำกัดอย่างมากและมีแนวโน้มว่าจะมีการก้มอย่างรุนแรงของกฎ I / O มาตรฐาน
AdmBorkBork

@ TimmyD ใช่แล้ว$^ยังว่างเปล่าในเซสชันใหม่อยู่ดี
นักเทศน์

8

มส์คะแนน ( 62 65 + 70) 135

1: เรียกใช้

ฉันลบ backticks ทั้งหมด ( `) และตัวดำเนินการทางคณิตศาสตร์ พวกเขาขัดแย้งกันเพราะมีตัวเลขไม่เพียงพอที่จะทำให้ผู้ปฏิบัติงานทุกคนและไบนารี ฉันทิ้งในบางผลใน 3 ไบต์ โปรแกรมผลลัพธ์:

 !!!!!#$$%&())))...+1^4*49:=@@@AHILOQQQTTZ\\eefmpxy{||||~~~~~~~~~

ฉันไม่รู้ว่าเพราะอะไรและทำงานอย่างไร อย่างน้อยก็ไม่ได้มีข้อยกเว้น C # runtime และดังนั้นจึงไม่ผิดพลาด

6: ควิน

คุณรู้ไหมว่าถ้ามี-ตัวอักษรตัวเล็กหรือตัวqใดตัวหนึ่งใน 74 ตัวอักษรเหล่านี้คงง่ายเกินไป ฉันดีใจที่Iผู้ประกอบการอย่างน้อย

1/4I

รหัสนี้ไม่ชัดเจน นี่คือคำอธิบาย:

1    Set object to 1 (1)
/4   Divide by 4     (0.25)
I    Set object to a fraction string. (1/4)

สตริงเศษส่วน (เช่น1/4) จะแสดงด้วย I ที่ส่วนท้ายเพื่อระบุว่า Iผู้ประกอบการมักจะไร้ประโยชน์ฉันเพิ่มมันสำหรับวิธีการอื่น ๆ แต่เดี๋ยวก่อนมันทำงานเช่นนี้!

รหัสด้านบนไม่ถูกต้อง โง่ฉันไม่เห็นว่าตัวละคร 74 ตัวไม่มีตัวดำเนินการหารเดี่ยว forwardslash ( /) ฉันมากับอย่างอื่นแม้ว่า:

True

คำอธิบาย:

T    Set object to "true" (bool value)
rue  None of these are valid tokens, so they don't get interpreted.

เอาท์พุทTrue(เพราะวิธีที่ C # จัดการกับBoolean.ToString()ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก) ไม่แน่ใจว่านี่เป็นควินที่เหมาะสมหรือไม่ในขณะที่ฉันยังหัวของฉันแตกเพื่อความถูกต้องเหมาะสมและใช้งานง่าย

อาจจะสามารถแก้ปัญหาความท้าทายของ I / O และคณิตศาสตร์ได้เช่นกัน แต่ฉันขาดโทเค็นเฉพาะ (ตัวอักษร) ซึ่งไม่รวมอยู่ในตัวอักษร 74 ตัว


8

Brainfuck, 74 ไบต์

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

ฉันแค่ต้อง

คำอธิบาย:

อักขระใด ๆ ที่ไม่ใช่ตัวอักษร Brainfuck ที่ถูกต้องจะถือว่าเป็นความคิดเห็น โค้ดเดียวที่รันได้จริงคือ:

.+..

สิ่งนี้ไม่สร้างเอาต์พุตที่สามารถพิมพ์ได้เนื่องจากไม่มี 0 หรือ 1 เป็นอักขระที่พิมพ์ได้ใน ASCII อย่างไรก็ตามมันไม่ได้ทำให้เกิดข้อผิดพลาดดังนั้นเราจึงประสบความสำเร็จในการท้าทายครั้งแรก


3
มันผลิตผลได้จริง มันผลิตตัวละครเหล่านั้น พวกเขาอาจจะไม่ "พิมพ์" (อ่าน: มองเห็นได้) แต่พวกเขายังคงถูกส่งไปยัง stdout อย่างไรก็ตาม
mbomb007

7

Mathematica คะแนน 62

ฉันจะแปลกใจถ้าใครสามารถสร้างความท้าทาย 2-6 ใน Mathematica นี่คือสิ่งที่ดีที่สุดที่ฉันทำกับการท้าทาย 1:

A:=1.`!#&@(4`+4.`*9.`^$$H~I~L~O~Q~Q~Q~T~T||Z||e@@efmpxy%)!!!!

นิยามฟังก์ชั่นโง่ที่Aมีค่าคงที่ อักขระ 12 ตัวที่ไม่ได้ใช้คือ:

)))\\`````{~

6

อ็อกเทฟคะแนน 74

1. เรียกใช้

x =@(AHILOQQQTTZeefmpy)+.1||!!!!!~~~~~~~~~4.^.4||9%#$$)))*@@\`````````{\&:

50 ตัวอักษรเหล่านี้เป็นส่วนหนึ่งของฟังก์ชั่นในขณะที่ 24 ที่เหลือไม่ได้

มันทำอะไร:

x =@(AHILOQQQTTZeefmpy)สร้างฟังก์ชั่นxที่สามารถรับตัวแปรAHILOQQQTTZeefmpyเป็นอินพุตได้

เพื่อทำความเข้าใจส่วนที่เหลือ:

a||bเรียกฟังก์ชันall()ทั้งบนและa bหากหนึ่งหรือทั้งสองของพวกเขากลับมาจริง||ผู้ประกอบการจะกลับมาจริง

!aและหมายถึงสิ่งเดียวกันที่นี่พวกเขาทั้งสอง~anot(a)

a.^b เป็นพลังที่ฉลาดหลักแหลม (a(1)^b(1), a(2)^b(2) ...)

คำอธิบายอย่างต่อเนื่อง

ฉันจะทำให้แต่ละขั้นตอนสั้นลงเมื่อฉันไปตาม:

4.^.4||9  % This is 4 raised to the power of .4||9
          % .4||9 is true, since both .4 and 9 are true
          % true is evaluated to 1 when used in an expression
...       % 4 raised to the power of 1 is simply 4.
4         % The above expression simplified

และ:

!!!!!~~~~~~~~~4  % ! and ~ are the not() operator, so this is equivalent to:
not(not(not(not(not(not(not(not(not(not(not(not(not(not(4))))))))))))))

มีแม้กระทั่งจำนวนเป็นnotดังนั้นนี้จะเทียบเท่ากับnot(not(4))ซึ่งเป็นหรือtrue1

+.1||1      % This is equivalent to all(+.1) | all(1), which returns true

ส่วนที่เหลือถูกคอมเม้นท์


6

*> <> , คะแนนรวม = 74

1. เรียกใช้คะแนน 74

f:4%*e+e14=p!Q H@~^)$.`~A|Q)~`\ZI~O.~@``#|9@)T\T`(!``|`~!y!`)Q~$x.|m~~&!L{

ลองที่นี่!

นี่เป็นเรื่องยากที่จะทำโดยไม่มี;ตัวละคร จริง ๆ แล้วฉันคิดว่ามันจะเป็นไปไม่ได้ในช่วงเวลาสองสามนาทีจนกระทั่งฉันเห็นว่า%ฉันเลิกโดยทั่วไป

นี่เป็นโปรแกรมที่ถูกต้อง> <>

อธิบาย (ละเว้นส่วนที่ไม่เกี่ยวข้องออก)

f:4%*e+e14=p!Q 

f:               copy 15
  4%             pop 15, push 15%4 (3)
    *            pop 15 and 3, push 15*3 (45)
     e+          pop 45, push 45+14 (59, ascii ";")
       e         push 14
        14=      push 0
           p     replace coord (14, 0) with ";"
            !Q   skip Q (this is just filler)
              ;  end execution

เผชิญกับความท้าทาย

ฉันอาจลองความท้าทายอื่น ๆ ... พวกเขาจะยากมากและอาจเกี่ยวข้องกับการดัดกฎด้วยวิธีแปลก ๆ แต่การใช้|กระจกอย่างเสรีและ!แทมโพลีนควรทำอย่างน้อยหนึ่งความท้าทายที่เป็นไปได้

ความท้าทายเหล่านี้เป็นเรื่องยากโดยเฉพาะอย่างยิ่งเพราะเราไม่อนุญาตให้ใช้เอาต์พุตที่มี *> <> ( oและn) หรือแม้กระทั่งการเรียกใช้ฟังก์ชัน ( C), ฟังก์ชันส่งคืน ( R) หรือโปรแกรมยุติการทำงาน ( ;) แม้ว่าเราจะขาดiอินพุทเราก็ยังสามารถใส่อินพุตลงในสแต็กซึ่งเป็นข้อดี ข้อดีอีกอย่างคือเราได้pคำสั่งเดียวซึ่งทำให้เราสามารถแทนที่คำสั่งในกล่องรหัสได้ สิ่งนี้อาจจะสามารถใช้งานได้หลายครั้ง (ยังไม่ได้คิดวิธีที่เป็นประโยชน์) ซึ่งจะเริ่มทำให้โปรแกรมอื่นดูเป็นไปได้มากขึ้น (เนื่องจากเราสามารถสร้างคำแนะนำสองคำหรือมากกว่า)


5

Haskell คะแนน 63

1. Run:

(!!!!!#$$%&*+...:@@@\\^||||~~~~~~~~~)fmpxyAHILOQQQTTZ e=14`e`49

)))```````{ไม่ได้ใช้เป็น ความคิดเห็นใน Haskell เป็น--หรือ{- ... -}ดังนั้นจึงไม่มีรุ่นความคิดเห็นทั้งหมดง่าย ๆ

รหัสนี้กำหนดตัวดำเนินการมัด!!!!!#$$%&*+...:@@@\^||||~~~~~~~~~ซึ่งใช้เวลาสองข้อโต้แย้ง:

  1. fmpxyAHILOQQQTTZ ซึ่งถูกละเว้นและสามารถเป็นชนิดใดก็ได้
  2. eซึ่งจะต้องเป็นฟังก์ชันที่มีตัวเลขสองตัว

ในร่างกายของฟังก์ชั่นeนั้นจะใช้กับ 14 และ 49 โดยใช้`เครื่องหมาย -infix

ตัวอย่างการใช้งาน:

Prelude> () !!!!!#$$%&*+...:@@@\\^||||~~~~~~~~~ (*)
686

ตัวดำเนินการถูกใช้กับ()tuple ที่ว่างเปล่าและ(*)ตัวดำเนินการคูณดังนั้นจึง14*49 = 686คำนวณ

ลองออนไลน์!

ความท้าทายอื่น ๆ

ฉันสงสัยว่าความท้าทายอื่นใดที่เป็นไปได้โดยเฉพาะอย่างยิ่งเนื่องจากการขาดชื่อตัวแปรที่เป็นไปได้ที่อาจปรากฏขึ้นสองครั้งซึ่งเป็นเพียงe(หรืออะไรทำนองนั้นeQT) เนื่องจากชื่อตัวแปรไม่สามารถเริ่มต้นด้วยตัวอักษรตัวพิมพ์ใหญ่ แน่นอนว่าการมีเพียงอันเดียว=ก็ไม่ได้ช่วยอะไรเช่นกัน


5

Pyth, 131 สำหรับตอนนี้ (2 ความท้าทายที่สมบูรณ์)

1. เรียกใช้ 74

# `````````!!!)!)!)*$AOeIefLmpxQ|Q|y|Q|~~~~~~~~~()${+%&\=@@@^\:.1.4.49TTZH

โปรแกรมนี้ไม่ใช้อินพุตและไม่สร้างเอาต์พุต

โปรแกรมนี้ใช้$$ซึ่งอนุญาตให้มีการใช้รหัสโดยอำเภอใจและถูกแบนออนไลน์ดังนั้นโปรแกรมนี้จึงทำงานแบบออฟไลน์ นี่คือผลลัพธ์การคอมไพล์ดังนั้นคุณสามารถดูสิ่งที่จะได้รับจริง:

while True:
 try:
  (repr(repr(repr(repr(repr(repr(repr(repr(repr(Pnot(Pnot(Pnot()))))))))))))
  imp_print(Pnot())
  imp_print(Pnot())
  imp_print(times(AOeIefLmpxQ|Q|y|Q|~~~~~~~~~(),uniquify(plus(mod(("=" and lookup(lookup(lookup(Ppow(":",.1),.4),.49),T)),T),Z))))
  imp_print(H)
 except Exception:
  break

มันค่อนข้างยากที่จะเขียนโปรแกรมด้วยตัวละครที่ไม่มีข้อผิดพลาดใน Pyth ฉันตั้งความท้าทายเพิ่มเติมให้ตัวเองเพื่อให้โปรแกรมทำงานโดยไม่ต้องป้อนข้อมูลจากผู้ใช้เช่นกัน

ขั้นตอนแรกคือการใช้#เพื่อกินข้อผิดพลาดทั้งหมด ต่อไปเราต้องหลีกเลี่ยงข้อผิดพลาดที่เกิดจากการ~, IและLซึ่งแต่ละคนมีรายละเอียดของตัวเอง สิ่งนี้สามารถทำได้โดยการใส่ไว้ใน$$ซึ่งฝังไว้ในการรวบรวมผลลัพธ์และทำให้พวกเขาอยู่ในกฎการรวบรวมของ Python ไม่ใช่ Pyth's ในที่สุดเพื่อหลีกเลี่ยงการป้อนข้อมูลของผู้ใช้โทเค็น arity 0 (ตัวแปรและสิ่งที่คล้ายกัน) จะถูกวางไว้ที่ส่วนท้ายและQs จะถูกย้ายภายใน$$บล็อก

2. IO

มันจะยากอย่างไม่น่าเชื่อถ้าเป็นไปได้ ไม่มีฟังก์ชั่น Pyth ที่สร้างสตริงหรืออักขระตามอำเภอใจยกเว้น.fว่าเป็นงานที่ไม่ดีในการสร้างอักขระตามอำเภอใจ

3. Branchability: 74 - 17 = 57

|&x%Q*TTye|LZ9Q+1

ลองออนไลน์

โปรแกรม Pyth ที่เทียบเท่าจะเป็น:

?n%Q100 16Q+1

รหัสนี้ใช้อินพุต mod 100 เปรียบเทียบกับ 16 จากนั้นใช้ ternary เพื่อเลือกระหว่างอินพุตและอินพุตบวกหนึ่ง เนื่องจากข้อ จำกัด ของตัวละครฉันได้ทำการทดแทนบางอย่าง:

  • แทนที่จะ?, ternary ผมใช้|&, orแล้วandซึ่งมีการทำงานเหมือนกันยกเว้นว่ามันแบ่งถ้าใส่เป็นศูนย์ แต่เนื่องจากเราจะรับประกันการป้อนข้อมูลจำนวนเต็มบวกก็ปรับ (สิ่งนี้อาจได้รับการแก้ไขโดยไม่มีอักขระเพิ่มเติม แต่วิธีนี้ง่ายกว่า)

  • แทนที่จะเปรียบเทียบตัวเลขทั้งสองโดยตรงฉันใช้ XOR ของพวกเขาxซึ่งเป็นศูนย์ถ้าหากว่าพวกเขาเท่ากันตามที่ต้องการ

  • แทนการเขียน100โดยตรงผมสร้างมันด้วย*TTตั้งแต่เริ่มต้นไปT10

  • แทนการเขียนโดยตรงผมสร้างมันด้วย16 หลักทำหน้าที่เป็นฟังก์ชั่นหลากหลายเพื่อช่วยให้ เตะองค์ประกอบสุดท้ายของรายการให้ คู่มันให้ได้ตามที่ต้องการ ด้วยการเพิ่มหรือเพิ่มพิเศษฉันสามารถบันทึกตัวละครได้ แต่ทั้งคู่มีประโยชน์มากกว่าที่อื่นye|LZ9|LZ|LZ9[0, 1, 2, 3, 4, 5, 6, 7, 8]e8y16+*

อื่น ๆ อีกมากมายที่จะมา!


3

Ruby - คะแนน: 74

1. เรียกใช้

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

คว้าตัวจากการท้าทาย


1
เหมือนกันกับ Python
Daniel

3

JavaScript (ES6) คะแนน = 74

1. เรียกใช้ 74 ไบต์

Z=` !!!!!#$$%())))...1449:@@@\AHILOQQQTT^\`eefmpxy{||||~~~~~~~~~`*``+``&``

6. Esotericism (ไม่ถูกต้อง)

สำหรับบันทึกควินน์ที่แนะนำของฉันคือ:

1.4e+49

ซึ่งกลายเป็นไม่ถูกต้องตามที่กล่าวไว้ในความคิดเห็นด้านล่าง


ควินนั้นถูกต้อง
wizzwizz4

3
ควินินไม่ถูกต้อง กฎที่เกี่ยวข้องมีการเชื่อมโยงในความท้าทาย โดยเฉพาะอย่างยิ่งควินใด ๆ ที่อยู่บนพื้นฐานของตัวอักษรเดียวล้มเหลวในการเข้ารหัสส่วนของแหล่งที่มาในส่วนที่แตกต่างกันของแหล่งที่มา cc @ wizzwizz4
Martin Ender

@MartinEnder ในเบราว์เซอร์ของฉันโปรแกรมนั้นจะส่งออกซอร์สโค้ดของมันอย่างแท้จริง มันเป็นคำสั่งที่ประเมินถึงตัวมันเอง ฉันไม่แน่ใจว่าคุณกำลังพูดอะไร ไม่มีส่วนต่าง ๆของแหล่งที่มา
wizzwizz4

1
@ wizzwizz4 ชุมชนนี้มีข้อกำหนดสำหรับ quines มากกว่าเพียงแค่ "โปรแกรมพิมพ์แหล่งที่มาของตัวเอง" เพราะนั่นทำให้สามารถแก้ไขปัญหาการโกงประเภทต่าง ๆ ที่ไม่ได้อยู่ในจิตวิญญาณของควินิน ดูลิงค์
Martin Ender

1
@ wizzwizz4 จากคำตอบที่ได้รับการโหวตสูงสุด "ต้องเป็นไปได้ที่จะระบุส่วนของโปรแกรมที่เข้ารหัสส่วนต่าง ๆ ของโปรแกรม (" แตกต่าง "หมายความว่าทั้งสองส่วนปรากฏในตำแหน่งที่แตกต่างกัน)" สำหรับกอล์ฟคุณควินๆ เพื่อประโยชน์ที่ดีความท้าทาย (และคำตอบที่เชื่อมโยง) นั้นเก่ากว่าโพสต์เมตาที่เชื่อมโยงหลายปี
Martin Ender

3

จอประสาทตาคะแนน 74

1. เรียกใช้คะแนน 74

)))` !!!!!#$$%&()*.+..1449:=@@@AHILOQQQTTZ\\^````````eefmpxy{||||~~~~~~~~~

ฉันย้าย parens พิเศษเพื่อกำหนดค่าเพื่อให้สมดุลใน regex ฉันยังย้าย`ขวาหลังจากนั้นและมีการเปลี่ยนแปลงไป+..+

ลองออนไลน์

คนอื่น ๆ เป็นไปไม่ได้เนื่องจากไม่มีการขึ้นบรรทัดใหม่ นอกจากนี้ยังไม่มี-สำหรับการถอดเสียงหรือdสำหรับคลาสตัวอักษร


3

Pip, คะแนน 74 + (74 - 19) = 129

Backticks จำนวนมากที่มีคำพูดที่ไม่สามารถมองเห็นได้ทั้งแบบเดี่ยวและสองครั้ง!

ภารกิจที่ 1 คะแนน 74

`` `\``!!!!!`#$$%&())))*+...1449:=@@@ILOQQQTTZ\^efmpx{|||~~~~~~~~~`|`yeAH`

โดยทั่วไปเป็นเพียงชุดของรูปแบบ (regex) ตัวอักษรใน backticks สุดท้ายที่ถูกพิมพ์ เนื่องจากมี backticks เป็นจำนวนคี่เราจึงต้อง backslash-escape หนึ่งในนั้น ( `\``) ลองออนไลน์ด้วยการ-wเพิ่มการตั้งค่าสถานะเพื่อพิสูจน์ว่าไม่มีการสร้างคำเตือน

งาน 3, คะแนน 55 (ความยาว 19)

e+!!e%(1.#x.!9)=4*4

ใช้วิธีการป้อนข้อมูลที่ค่อนข้างแปลก - อาร์กิวเมนต์บรรทัดคำสั่งที่ห้า - เป็นไปได้ ลองออนไลน์!

                     e is 5th cmdline arg; x is empty string
       1.#x.!9       Concatenate 1, 0 (length of x), and 0 (not 9)
    e%(       )      e mod 100...
               =4*4  ... equals 16?
  !!                 Logically negate twice
e+                   Add to e (+1 if number mod 100 is 16, +0 otherwise)
                     Expression is autoprinted

งานอื่น ๆ

เป็นไปได้ที่จะรับอินพุตสำหรับภารกิจ 2ด้วยวิธีเดียวกับภารกิจ 3 ด้านบน ปัญหากำลังแปลงเป็นรหัส ASCII และกลับไปเป็นอักขระ อดีตสามารถทำได้ด้วยAแต่หลังต้องCหรืออาจเป็นดัชนีในPAตัวแปร Vการสร้างและการประเมินผลรหัสไม่สามารถทำได้โดยไม่ต้อง ฉันไม่คิดว่างานจะเป็นไปได้

ภารกิจที่ 4นั้นท้าทายแม้จะไม่มีชุดอักขระที่ จำกัด คาดเดาว่าจะต้องมีรายการ (โดยไม่ใช้[]ตัวคั่นหรือRL(รายการซ้ำ) และมีโอกาสเดียวเท่านั้นที่จะใช้AL(รายการต่อท้าย) - ไม่น่าเป็นไปได้) หรืออาจเป็นบางสิ่งบางอย่างด้วยCG(พิกัดกริด) หรือMC( ประสานแผนที่) .

ภารกิจที่ 5อยู่บนขอบของความเป็นไปได้ ลูปจะเป็นเรื่องยากเนื่องจากFหรือและMAP ,เป็นไปไม่ได้และช่วงไม่สามารถสร้างขึ้นด้วย อาจมีบางสิ่งที่ต้องทำเมื่อTป่วย การเพิ่มขึ้นอาจเป็นx:x+1ความหลากหลาย (เห็นได้ชัดว่ามีตัวแปรอื่นที่ไม่ใช่x) %การตรวจสอบการหารสามารถใช้ ถึงกระนั้นฉันไม่คิดว่ามีตัวละครมากพอ - โดยเฉพาะตัวอักษรซ้ำแล้วซ้ำอีก - ทำทุกสิ่งที่จะต้องเกิดขึ้น

ภารกิจที่ 6ดูเป็นไปไม่ได้อย่างสมบูรณ์ Pip quines ทั้งหมดที่รู้จักมี"อยู่ในนั้น พวกเขายังใช้R(แทนที่), RP(repr)) หรือV(eval) ซึ่งไม่มีอยู่


2

ที่จริงแล้วคะแนน (74 + 0 + 0 + 0 + 0 + 0 ) = 74

ใช่สตริงแคปซูลจะใช้งานได้กับจริงตามที่มีไว้สำหรับเรียกใช้เนื่องจากจริงแล้วจะยกเลิกข้อผิดพลาดใด ๆ และทุกข้อผิดพลาดจะกลายเป็น NOP

H@~*^)$.~+1A|Q)p~\Z!IQ~e:O.~@#|9@)Tf\eT`=(!|~!y!) Q~$x.4|m4~~&!L{%( ลองออนไลน์! )

มันจะออกมาเป็นระเบียบของสิ่งต่าง ๆ แม้ว่า (แต่ยังแหล่งที่มาของมันอีกครั้ง: 3)

อย่างไรก็ตามฉันจะทำงานกับสิ่งท้าทายอื่น ๆ


1
โปรแกรม quine จะ (หวังว่า) จะค่อนข้างง่ายถ้าคุณสามารถทำให้บาง ops เป็น noops
wizzwizz4

1
โปรแกรมควินินนั้นไม่ง่าย คุณไม่สามารถใช้งานQได้เลย (เนื่องจากเป็นรุ่น quining ในตัว) และไม่มีเครื่องหมายอัญประกาศคู่ดังนั้นคุณจึงไม่สามารถทำการจัดรูปแบบสตริงได้ ฉันทำงานไปสักพักแล้วเมื่อวานนี้และฉันค่อนข้างมั่นใจว่าโปรแกรมอื่น ๆ ไม่สามารถทำได้ด้วยตัวอักษร 74 ตัวเท่านั้น
Mego

และดูเหมือนจะไม่เป็นตัวเอียงf ... :(
user48538

2

05AB1E - คะแนนรวม: 74

1. เรียกใช้ 74 ไบต์

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

ทุกสิ่งที่ทำให้เกิดข้อผิดพลาดจะถูกข้ามโดย 05AB1E รหัสทั้งหมดนี้คือ NOP

ลองออนไลน์!


2

(ถูกทารุณกรรม) PHP, 74 + 74 = 148

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

ล่าม PHP เพียงทิ้งซอร์สโค้ดจนกว่ามันจะพบ<?เพราะเราขาด<การเปลี่ยนแปลงของตัวอักษรเหล่านั้นทุกครั้งจะเป็นควินิน ฉันเดาว่านี่ไม่ได้แย่ไปกว่าการใช้คำสั่ง builtin quine: P


9
นี้ไม่ตรงตามข้อกำหนดของเราสำหรับ quines, ดูที่นี่ มันไม่ได้เข้ารหัสตัวเอง (เช่นมันไม่ได้พิมพ์ออกมาจริงๆมันแค่เกิดขึ้นเพราะเอาท์พุท
R

@Easterly ล่ามถือว่าทุกถ่านเป็นจนกว่าจะได้พบกับoutput this char ผมไม่ได้บอกว่ามันเป็นส่วนของข้อมูลที่มีความสามารถหรือฏฉันแค่บอกว่าแตกต่างกับภาษาที่มีถ่านไม่พูด< output the sourceหากนี่ไม่ใช่คำตอบที่ถูกต้องสำหรับส่วนที่ 1 กว่าภาษาใด ๆ ที่รับอินพุตใด ๆ โดยไม่มีข้อผิดพลาดก็ไม่ใช่คำตอบที่ถูกต้องเช่นกัน ฉันไม่คิดว่านี่เป็นสิ่งที่ไม่เหมาะสมมากกว่าคำตอบส่วนใหญ่ที่นี่
Christoph

4
@Christoph มันใช้ได้สำหรับตอนที่ 1 แต่มันไม่เป็น quine ที่ถูกต้องโดยกฎที่เชื่อมโยงในการท้าทาย ชุมชนนี้พิจารณา quine ที่ถูกต้องหากคุณสามารถระบุส่วนของแหล่งที่เข้ารหัสส่วนต่าง ๆของรหัส ในโปรแกรมของคุณอักขระทุกตัวจะเข้ารหัสเท่านั้น
Martin Ender

@MartinEnder: #! / bin / cat ถือว่าเป็น quine ก่อนหน้านี้
Joshua

@ โจชัวแน่นอน แต่วันนี้มันไม่ได้และแมวก็ไม่ถือว่าเป็นภาษาการเขียนโปรแกรม
Martin Ender

2

Mathematica คะแนน 68

`A: = .1% *. 44y # +. 9 ^` H @ `$ I @` L @ (`$ O ~` Q ~ `Q ~` Q ~ `T ~ T ~ Z ~ e ~ e | ฉ | M | P | x) !!!!! & \

สังเกตเห็นการขึ้นบรรทัดใหม่ ฉันไม่เชื่อว่าความท้าทายอื่นใดสามารถทำได้กับ Mathematica


2

เขาวงกตคะแนน 74

AH)
IL)
OQ:
`=!)~`{+4.@ !!!$$%&(*..149@@TTZ\\^```eefmpxy||||~~~~~~~~
`Q#
`Q)
``!

ผมค่อนข้างมั่นใจว่าชุดของตัวละครเหล่านี้ผลิตโปรแกรมเขาวงกตที่ถูกต้อง แต่จะทำให้มันน่าสนใจอย่างน้อยเล็กน้อยมากขึ้นนี้พิมพ์ออก2016บาทโดยหลัก (โดยสรุป: กด 2 2บนสแต็กป๊อป / พิมพ์ย้ายอีกหนึ่งไปยังสแต็ค aux พิมพ์ 0 กด 2 1ของบนสแต็กป๊อป / พิมพ์ 1 เพิ่มขึ้นไม่ใช่บิตไม่ใช่ลบล้าง (สุดท้าย1คือ3ณ จุดนี้) รวมกับ2จาก aux stack, 5 * 10 + 4 = 54, พิมพ์เป็นค่า ascii, ยกเลิก)

บรรทัดยาวส่วนใหญ่จะถูกละเว้นเพียงแค่@ยกเลิกโปรแกรม

ความท้าทายที่ 2, 3 และ 4 เป็นไปไม่ได้เนื่องจากไม่มีคำสั่งอินพุตของเขาวงกตที่มีให้ ( ,หรือ?) และฉันไม่ได้คิดอะไรเลยสำหรับ 5 หรือ 6


2

SmileBASIC 48 คะแนน

ท้าทาย 1:

@LOQQQTTZ A$=H$+@efmy+@9414*!exp(!!.||!!.#||I%):

คำอธิบาย:

@LOQQTTZ 'label
A$= 'set value of A$ (string)
H$ 'string
+@efmy 'adds label, interpreted as string literal
+@9414 'adds label, interpreted as string literal
*!exp( 'multiplies by logical not e^x (= 0)
!!. 'not not 0.0 (= 0)
||!!.# 'or not not 0.0 converted to a float (= 0)
||I% 'or I% (integer variable)
: 'equivalent to a line break, does nothing here

คนอื่น ๆ :

ไม่มีคำสั่งอินพุต / เอาต์พุตใช้งานได้ดังนั้นส่วนที่เหลือจึงไม่สามารถทำได้

ยังคงไม่เลวสำหรับภาษาจริงโดยไม่ใช้ความคิดเห็น


+1 สวยงามอย่างแท้จริง ฉันสงสัยว่าฉันจะทำสิ่งเหล่านี้อย่างไรและไม่สามารถทำได้ สิ่งนี้ทำอะไรได้อีก?
หอยทาก _

1

MATL , คะแนนรวม 74

1. เรียกใช้คะแนน 74

`4.e4 1.$!!!!!T+Zyf9.)AH^ILx@Q@Q@Qm||||~~~~~~~~~:=Tp*O%#$&()))\\````````e{

ทุกอย่างขึ้น%อยู่กับรหัสจริง %เป็นสัญลักษณ์ความคิดเห็นดังนั้นอักขระทางด้านขวาจะถูกละเว้น

โปรแกรมเอาต์พุต1โดยไม่มีข้อผิดพลาด

ลองออนไลน์!


1

ทุบตี, คะแนน 74

1: เรียกใช้ เราสามารถเรียกใช้ทั้งหมด 74

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

6: ความลึกลับ

โปรแกรมที่ว่างเปล่าคือ quine in bash

หากไม่มีอักขระช่องว่างจะไม่มีสิ่งใดในรายการที่สามารถทำได้ เออร์โกฉันมีผลงานตีอย่างแรง


หมายเหตุเกี่ยวกับกฎ: ถ้ามีคนท้าทายว่าว่างเปล่าไม่ใช่ควินินที่ถูกต้องและชนะฉันยังมีรายการที่ชนะ (ไม่มีควินใด ๆ ) หากในอีกทางหนึ่งฉันไม่ได้ทำและคนอื่นทำและพวกเขาชนะการท้าทายที่พวกเขาเอาชนะฉัน ดังนั้นจึงมีอยู่
Joshua

1

Perl 6 , คะแนนรวม 74

1. เรียกใช้คะแนน 74

my @TOTAL=$!||(e*4...9^e)Z+1~4||!!Q`{fp)))\#\&`~Q!```HI````!~Q:x~~~$~@~@~%

ไม่มีความคิดเห็น.
(เพียงวางไว้#ด้านหน้าเพื่อให้ทุกอย่างมีความคิดเห็นใช้งานได้ แต่นี่สนุกกว่า)

งาน

นี่เป็นส่วนย่อยของภาษา Perl 6 ที่ใช้อักขระที่อนุญาตเท่านั้น:

ค่าคงที่: e

ชื่อประเภท: IO

ฟังก์ชั่น: ประสบการณ์

วิธีการ:
    บนประเภท IO: .e .f .x
    (... อาจจะมากกว่า)

ผู้ประกอบการ: | มัด: | คำนำหน้า:
    ----------- + ----------------------- + ---------
    ตัวเลข: | + * + ^ + | + &% | + + ^
    สตริง: | ~ x ~ ^ ~ | ~ & | ~
    บูลีน: | || ~~ | !
    ทางแยก: | | & ^ |  
    อื่น ๆ : | =: = Z .. ... |  

ไวยากรณ์:
    จำนวนตัวอักษร: 1 4 9
    ตัวอักษรสตริง: Q`` Q! ! เป็นต้น
    คำสั่งเชลล์: Q: x`` Q: x! ! เป็นต้น
    ดาวอะไรก็ตาม: *
    ตัวแปร: ของฉัน \ $ @ &
    การจัดกลุ่ม: ()
    ความคิดเห็น: # # `()
    unspace: \

อุปสรรค์ทันทีที่ป้องกันไม่ให้มีความท้าทาย 2-6 คือดูเหมือนจะไม่มีทางทำ I / O:

  • หากเราสมมติว่ามีไฟล์ชื่อfเราสามารถใช้Q`f`.IO.eเพื่อตรวจสอบว่ามีอยู่หรือQ`f`.IO.xเพื่อตรวจสอบว่าสามารถเรียกใช้งานได้หรือไม่ แต่เราไม่สามารถอ่านหรือเขียนจากมัน

  • เราสามารถใช้Q:x` `เพื่อเรียกใช้คำสั่งเชลล์ (สมมติว่าเราค้นหาอักขระสำหรับหนึ่งตัว) แต่เราไม่สามารถสอดแทรกสิ่งใด ๆ เข้าด้วยกันดังนั้นมันจะดีสำหรับการอ่านไม่ใช่การเขียน

  • เนื่องจากไม่มีการปิดวงเล็บเราจึงไม่สามารถสร้าง lambda บล็อก (เช่น{1 + $_}) ที่ส่งคืนค่าของคำสั่งสุดท้ายโดยอัตโนมัติ

  • เราสามารถใช้เครื่องหมายดอกจันเพื่อสร้างแลมบ์ดานิพจน์ (เช่น1+*) แต่จากนั้นเราสามารถรับหนึ่งอาร์กิวเมนต์เท่านั้นอ้างถึงอาร์กิวเมนต์นี้เพียงครั้งเดียวและมีข้อ จำกัด มากขึ้นในไวยากรณ์ / ตัวดำเนินการที่เราสามารถใช้ได้


ทำได้ดีมากจริง ๆ ! :)
Dada



0

/// , คะแนน: 146

1. เรียกใช้คะแนน: 74

!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~

6. ควิน, คะแนน: 72

!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ^`````````eefmpxy{||||~~~~~~~~~

ใช่แล้วเมื่อไม่มีโค้ดสแลชไปข้างหน้าหรือข้างหลังมันแค่พิมพ์ออกมาเอง

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