เขียน Quine เป็นภาษาอังกฤษธรรมดา


41

เขียนควินที่ประกอบด้วยคำภาษาอังกฤษจริงคั่นด้วยช่องว่างเดียว "word" ถูกกำหนดเป็นสตริงที่มีตัวอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เท่านั้น ( /[a-zA-Z]+/ใน regex) จะเป็น "ของจริง" คำพูดของคุณจะต้องได้รับการยอมรับจากพจนานุกรมข่วนอย่างเป็นทางการ

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

ตั้งแต่การเขียนควินเท่านั้นโดยใช้ตัวอักษรและพื้นที่อยู่ใกล้กับไปไม่ได้มากที่สุดในการเขียนโปรแกรมภาษาคุณมีตัวเลือกที่จะมาแทนที่ช่องว่างระหว่างคำเดียวกับตัวละครที่คุณเลือก นอกจากนี้คุณยังมีตัวเลือกในการเพิ่มอักขระต่อท้ายคำแรกและท้ายคำสุดท้าย ตัวละครเพิ่มเหล่านี้อาจเป็นอะไรก็ได้ (รวมถึงการขึ้นบรรทัดใหม่และไม่ใช่ ASCII) ยกเว้นตัวอักษร (az, AZ) มีโทษสำหรับการเพิ่มไว้ (ดูเกณฑ์การให้คะแนน)

รายละเอียด

  • ตามปกติควินินอาจไม่อ่านหรือเข้าถึงซอร์สโค้ดของตัวเอง (ฉันบอกว่าคำสั่งHQ9 + ของละเมิดนี้)
  • ผลลัพธ์ควรไปที่ stdout หรือทางเลือกอื่นที่คล้ายกัน ไม่มีอินพุต
  • คำไม่จำเป็นต้องเป็นตัวพิมพ์ใหญ่อย่างถูกต้อง พวกเขาสามารถมีตัวพิมพ์ใหญ่และตัวพิมพ์เล็กได้ทุกที่ ลำดับของคำไม่จำเป็นต้องมีเหตุผลใด ๆ
  • ห้ามใช้คำเกิน 3 ครั้งในโปรแกรมของคุณ คำที่เป็นตัวพิมพ์ใหญ่ต่างกันยังคงเป็นคำเดียวกัน (เช่น 'DOG', 'dog' และ 'dOg' เป็นคำเดียวกันทั้งหมด)
  • การใช้ภาษาเช่น PHP หรือ HTML ที่สามารถแยกแยะเนื้อหาของพวกเขานั้นถือเป็นช่องโหว่เล็กน้อยและไม่ได้รับอนุญาต
  • โปรแกรมจะต้องมีอย่างน้อยหนึ่งคำ

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

คะแนนของคุณคือจำนวน "คำพูดจริง" ในโปรแกรมของคุณรวมถึงบทลงโทษเหล่านี้:

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

ตัวอย่างเช่นโปรแกรม

We all LIKE PROgraMmING

จะให้คะแนน 4 เพราะมันมี 4 คำ ไม่มีการเพิ่มตัวอักษรหรือแทนที่ช่องว่างใด ๆ We all LIKE PROgraMmINGมันเอาท์พุทของหลักสูตรจะเป็น

โปรแกรม

!We@all LIKE#PROgraMmING- =

จะให้คะแนน 4 + 2 + 1 + 27 = 34; 4 สำหรับคำ 2 สำหรับช่องว่างที่ถูกแทนที่ 1 สำหรับ!ที่ด้านหน้าและ 27 สำหรับ- =ตอนท้าย !We@all LIKE#PROgraMmING- =มันเอาท์พุทของหลักสูตรจะเป็น

คะแนนต่ำสุดชนะ Tiebreaker จะตอบคำถามด้วยคะแนนการลงโทษน้อยที่สุด หากยังมีคำตอบที่ถูกโหวตสูงสุดเสมอ


1
พจนานุกรมนั้นมีอยู่ในรายการหรือไม่ นั่นจะเป็นประโยชน์มากขึ้นในการเรียกดูกว่าต้องตรวจสอบแต่ละคำแต่ละรายการ
Martin Ender

16
เช็คสเปียร์ทุกคน?
dwana


1
@JanDvorak ฉันไม่คิดอย่างนั้น ... ความจริงที่ว่าฉันไม่สามารถเขียนอะไรแบบนี้ไม่ควรทำให้คนอื่นเห็นว่านี่เป็นคำถามที่ไม่ดี แต่มันก็ใช้ได้แม้ว่าจะยากท้าทายท้าทายใช่ไหม
rorlork

7
ฉันยังคงสนใจในโซลูชันของเช็คสเปียร์
John Dvorak

คำตอบ:


25

golfscript, 8 คำ + 8 สัญลักษณ์ = 20 16 (3?)

{four"words.written~twice"four}words.written~twice

คำพูดเป็นเพียงฟิลเลอร์แก่นเป็นแก่นแกนเล็ก ๆ :

{".~"}.~

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

หรือเราสามารถใช้ฟังก์ชันตามตัวอักษรที่ไม่เคยได้รับการประเมิน แต่มันรู้สึกเหมือนโกง ...

{whatever}

คุณไม่ต้องการการต่อข้อมูล {a`b"x.y~z"c}x.y~z
เดนนิส

@Dennis ฉันไม่ต้องการการตรวจสอบในกรณีนี้ ขอบคุณ! ฉันรู้สึกว่าฉันต้องการถาม OP บางอย่าง ...
John Dvorak

8
@Cephalopod ฉันไม่ได้อ่านซอร์สโค้ดของตัวเอง ฉันแค่กดฟังก์ชั่นลงบนสแต็กและรันไทม์พิมพ์ออกมาให้ฉันไม่รู้ถึงความจริงที่ว่าซอร์สโค้ดทั้งหมดของฉันเป็นฟังก์ชันที่แท้จริง
John Dvorak

1
ฉันคิดว่าการ{whatever}ละเมิดกฎที่เล็กน้อยเกินไป ("การใช้ภาษาเช่น PHP หรือ HTML ที่สามารถแยกแยะเนื้อหาของพวกเขานั้นถือเป็นช่องโหว่เล็กน้อยและไม่ได้รับอนุญาต")
Claudiu

1
@Claudiu นั่นเป็นกฎสำหรับภาษาไม่ใช่การแก้ปัญหา นั่นเป็นเหตุผลที่ฉันถาม
John Dvorak

54

> <> , 25 คำ + (22 + 1 1 + 1 1 ) พิเศษ = 57 49

โอ้พระเจ้าสมองของฉัน

'brr3deep*clap6beep+orb5flap*leap4deep+clap5beep5flap*leap9deep9clap*beep+flap0placed apple alp0leap=clip?lob8blip*flip0clip.

เนื่องจากสถานะกฎ "ไม่มีอินพุต" สำหรับโปรแกรมนี้ในการทำงานคุณจะต้องไพพ์ในไฟล์เปล่า

โอ้และใช่brrเป็นคำข่วนที่ถูกต้องเช่นเดียวกับและtsktskpfft

คำอธิบาย

ก่อนอื่นคำต่อไปนี้เป็นแบบไม่มี ops:

deep clap beep flap leap clip blip flip

นี่เป็นเพราะเหตุผลสองประการ:

  • abcdeflหมายเลขกด (10, 11, 12, 13, 14, 15 และความยาวของสแต็กตามลำดับ) นอกจากนี้ให้iกด -1 หากพบ EOF เนื่องจากไม่มีอินพุต
  • pคำสั่งปรากฏสามตัวอักษรv,y,xและสถานที่ที่ตำแหน่งvx,y

ใช่> <> ให้คุณแก้ไขซอร์สโค้ดได้ทันที! เราไม่ได้จริงๆทำให้การใช้งานของว่าที่ที่เราต้องการเพียงpสำหรับ popping

หากเรากำจัดตัวเลือกเหล่านี้ออกไปเราจะได้รับ:

'brr3*6+orb5*4+55*99*+0placed apple alp0=?lob8*0.

ในลักษณะที่คล้ายกันlaced appส่วนของplaced appleและe alpส่วนหนึ่งเป็นส่วนapple alpที่ไม่มีตัวเลือกและส่วนrrของbrrเพียงแค่สแต็กกลับสองครั้งซึ่งเราสามารถลบได้:

'b3*6+orb5*4+55*99*+0pl0=?lob8*0.

ในที่สุดสิ่งที่ดูเหมือนโปรแกรมปกติ> <>! แนวคิดคือการใช้ประโยชน์จากมาตรฐาน> <> quine ซึ่งใช้งานได้เช่น:

  • เริ่มต้น'เริ่มต้นแยกสตริงผลักดันทุกถ่านจนเจอกัน'
  • เราผลักตัวอักษรไปเรื่อย ๆ จนกระทั่งถึงจุดสิ้นสุดของบรรทัดที่จุดที่เราตัดตัวชี้คำสั่งกลับไปที่จุดเริ่มต้น (ตั้งแต่> <> เป็น toroidal)
  • เราลงจอดในจุดเริ่มต้น'อีกครั้งและหยุดการแยกสตริง ผลก็คือเราได้ผลักถ่านทุกตัวในโปรแกรม (ยกเว้นตัวแรก') ไปยังสแต็ก

จากนั้นต่อไปนี้จะเกิดขึ้น:

b3*6+o                Print the initial ' quote (ASCII 39)
r                     Reverse the stack
b5*4+                 Push a ';' (ASCII 59)
55*99*+0p             Replace the 'l' of 'lob' with ';'

(print loop)
l0=?;                 If the stack is empty, terminate. Otherwise...
o                     Print the top of the stack
b8*0.                 Jump back to the beginning of the loop

"ไม่สามารถใช้คำได้เกิน 3 ครั้งในโปรแกรมของคุณคำที่แตกต่างกันจะยังคงเป็นคำเดียวกัน (เช่น 'DOG', 'dog' และ 'dOg' เป็นคำเดียวกันทั้งหมด)" อย่างไรก็ตามคุณได้รับ upvote จากฉันครับ
rorlork

@rcrmn ฉันเพิ่มคำศัพท์ไปเรื่อย ๆ จนลืมกฎไปหมดแล้ว! iตอนนี้คงถึงแม้ว่าฉันไม่ต้องการที่จะหลีกเลี่ยงการใช้งาน
Sp3000

1
TIL "pa", "la" และ "be" เป็นคำที่ถูกต้องใน Scrabble
John Dvorak

20
การอ่านโปรแกรมของคุณดัง ๆ ทำให้ฉันจินตนาการได้ว่าคอมพิวเตอร์แบบ punch card ต้องฟังเป็นอย่างไร
งานอดิเรกของ Calvin

10
ฉันคิดว่าคุณขโมยโปรแกรมนั้นจากแหล่งที่มาของระบบปฏิบัติการของ R2D2
หยุดหมุนทวนเข็มนาฬิกาเมื่อ

21

ไก่ 1 คำ

โดยปกติฉันไม่ได้เป็น esolangs แต่อันนี้ดูเหมือนจะสมบูรณ์แบบสำหรับสิ่งนี้ ฉันคิดว่านี่เป็นควินจริง:

chicken

ผลักไก่ 1 ตัวเข้ากอง สแต็กจะปรากฏขึ้น


1
ขอบ (และคำตอบของจูเลีย) นี้เป็นโมฆะเล็กน้อย คุณสามารถเก็บไว้ที่นี่ แต่ไม่มีสัญญาว่าจะยอมรับ
งานอดิเรกของ Calvin

@ Calvin'sHobbies ในความสนใจของความเป็นธรรมฉันจะลบสิ่งนี้อย่างมีความสุขถ้าคุณรู้สึกว่ามันเป็น loopholey - สายของคุณ ฉันกำลังทำงานกับโซลูชัน applescript แต่ได้รับความผิดหวังจากกฎ "ไม่มีคำใดที่อาจใช้มากกว่า 3 ครั้ง" ซึ่งดูเหมือนจะทำให้เรื่องนี้ยากเป็นพิเศษ ดังนั้นฉันจึงไปหากลอุบายราคาถูกแทน :-)
Digital Trauma

@ Calvin'sHobbies: ฉันเป็นผู้แต่งข้อเสนอ Julia ฉันเห็นด้วยกับ DigitalTrauma ในการลบโพสต์ของฉันถ้าคุณรู้สึกว่ามันเป็นเขตแดนเกินไป ฉันก็ทำเช่นนั้นอาร์นั่นก็ใกล้เกินไปเช่นกัน?
Alex A.

@Alex และ DT: ขึ้นอยู่กับพวกคุณ ฉันอาจจะไม่ยอมรับคำตอบอย่างใดอย่างหนึ่ง แต่ฉันไม่คิดว่าพวกเขาจะอยู่ที่นี่ ฉันยังคงฉีกขาดครับกับคำตอบ R แต่ความคิดที่สวยมากเช่นเดียวกับจูเลียหนึ่ง ...
คาลวินอดิเรก

12

R, 2 คำ + 1 การแทนที่ + 1¹ต่อท้าย = 4

วัตถุที่ไม่ได้ถูกกำหนดให้กับสิ่งใดจะถูกพิมพ์ไปยัง stdout เนื่องจากการแสดงออกเป็นวัตถุรหัสต่อไปนี้พิมพ์ตัวเอง:

expression(puppy)

การส่งก่อนหน้า, 5 คะแนน:

function(hello)hello

คุณได้รับแรงบันดาลใจจากวิธีแก้ปัญหาแบบ 3 จุดของฉันใช่ไหม ;-)
John Dvorak

1
@JanDvorak: จริง ๆ แล้วฉันไม่เห็นว่าก่อนที่ฉันโพสต์นี้ แต่ตอนนี้มันเป็นแหล่งที่มาของแรงบันดาลใจย้อนหลัง
Alex A.

12

Python 2, 58 = 37 คำ + เครื่องหมายวรรคตอน 21

programming=puzzle=hash and'fear=coerce and"programming=puzzle=hash and%rif reload else fire;exec prog"or English;ramming=None or"ramming"if license else pirate;print fear%puzzle+ramming'if reload else fire;exec programming

ด้วยการขึ้นบรรทัดใหม่บางส่วน:

programming=puzzle=hash and'fear=coerce and"programming=puzzle=hash
and%rif reload else fire;exec prog"or English;ramming=None or
"ramming"if license else pirate;print fear%puzzle+ramming'
if reload else fire;exec programming

การใช้สามข้อต่อข้อ จำกัด คือสิ่งที่ทำให้ยากต่อการเขียน ฉันต้องการใช้สตริงที่มีรหัสทั้งหมดมากกว่า 3 ครั้งและทุกสตริงต้องมีฉนวนกับif else and orโอเปอเรเตอร์ซึ่งฉันมีจำนวน จำกัด เท่านั้น


@ user23013 โอ๊ะลืมแทนที่ด้วยตัวระบุแบบสุ่ม
feersum

7

Julia, 1 คำ + 1¹ก่อนหน้า = 2

:จูเลียมีวัตถุที่เรียกว่าสัญลักษณ์ซึ่งจะมีการกำหนดใช้ก่อนหน้านี้ เหมือนกับโซลูชัน R ของฉันนี่จะพิมพ์เมื่อส่ง

:puppy

5

บรรทัดคำสั่ง DOS 10

& was unexpected at this time.

เกิดข้อผิดพลาดดูเหมือนไม่ถูกแบน


1
รหัสนี้ไม่ได้ "เข้ารหัส" ส่วนใดส่วนหนึ่งของรหัส ดูคำจำกัดความของเราสำหรับควินิน
MilkyWay90

@ MilkyWay90 การใช้คำจำกัดความ&เข้ารหัสรหัสทั้งหมดและหยุดการส่งออก
l4m2

โอ้คุณสามารถแก้ไขคำตอบเพื่อให้ฉันสามารถลบ downvote ของฉัน
MilkyWay90

1
คำตอบ loopholey ที่น่าสนใจ ... เป็น&คำว่า?
โปรแกรม Redwolf

@ RedwolfPrograms ไม่ แต่& เป็นสองสัญลักษณ์ 5 (คำ) + 1 (ต่อท้าย) + 2 ^ 2 นำ = 10
Draco18s

3

ร่ายมนต์มรณะคะแนน 4 + 3 + 1 1 +1 1 = 9

"hOt3OX4NOt+kNOt@

ลองออนไลน์!

คำ: hot ox not knot(4) การ
แทนที่: 3 4 +(3)
ก่อนหน้า: "(1)
หลัง: @(1)

ตัวละครทุกตัวGNOQWghtxzไม่มีตัวละครใน Runic (เช่นเดียวกับช่องว่างและระยะเวลา แต่ช่องว่างอื่น ๆ ไม่ได้ช่วยให้คะแนน) รวมถึงXและkจำเป็นสำหรับการใช้งานสิ่งนี้จะให้รายการคำที่มีอยู่ต่อไปนี้:

5 Letter Word(s)
  thong
4 Letter Word(s)
  gong goth gowk gown hogg hong honk howk knot know nogg nowt tong town wonk wont zonk
3 Letter Word(s)
  got gox hog hon hot how nog noh not now nth own tho tog ton tow two who wok won wot
2 Letter Word(s)
  go ho no oh on ow ox to wo

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

การลบอักขระ NOP ทั้งหมดจะให้ควินดังต่อไปนี้:

"3X4+k@

ลองออนไลน์!


0

ฮะ? - 1 คำ + 1 ** 1/1 ^ 1 = 1 ถ่านหลังคำ = 2 คะแนนรวม

Ouch!

Ouch! ควินที่ถูกต้องใน huh คืออะไร?

เรียกใช้เช่นpythuhn.py Ouch!นั้นและจะไม่มีไฟล์ชื่อOuch!ในไดเรกทอรีปัจจุบัน

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