เพียงทำซ้ำตัวเอง


64

เขียนโปรแกรมที่ส่งออก

Do not repeat yourself!

รหัสโปรแกรมของคุณต้องเป็นไปตามข้อ จำกัด ดังต่อไปนี้:

  • ความยาวของมันจะต้องเป็นเลขคู่
  • ตัวละครที่อยู่ในแต่ละตำแหน่ง2n(ที่nเป็นจำนวนเต็ม> 0) 2n-1ต้องเท่ากับตัวละครในตำแหน่ง อักขระตัวที่สองของโปรแกรมเท่ากับตัวแรกตัวที่สี่เท่ากับตัวที่สามเป็นต้น

ขึ้นบรรทัดใหม่นับเป็นตัวละคร!

นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ!

ตัวอย่าง

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

123หรือAAABBBหรือHHeelloไม่ถูกต้อง

การตรวจสอบ

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


51
สนุกจริง: ถ้าปัญหามี triplets แทนDDDooo nnnooottt rrreeepppeeeaaattt yyyooouuurrrssseeelllfff!!!จะเป็นคำตอบที่ถูกต้องในTrigger
Sp3000

14
ฉันคิดว่านี่อาจจะเข้มงวดเกินไป แต่ความวุ่นวายของคำตอบนั้นทำให้ฉันเข้าใจผิด เป็นคำถามที่ดี!
trichoplax

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

1
มีคนเพิ่มข้อมูลโค้ดให้คะแนนได้ไหม ฉันชอบที่มีและฉันหวังว่าทุกคำถามมีพวกเขา
mbomb007

คำตอบปัจจุบันทั้งหมดเป็นความลับที่ลึกลับ ฉันสงสัยว่ามันเป็นไปได้ในภาษาปกติหรือไม่?
DankMemes

คำตอบ:


51

Hexagony , 166 126 124 ไบต์

\\;;;;33rr''22DD..));;;;;;oo;;}}eeoo\\@@nn;;;;ee;;;;aass&&;;uuoo;;;;..\\\\;;ttee..pp;;tt;;;;..rr;;''ll..'';;;;..;;}}ff..}}yy

การแทรก no-ops และ whitespace โดยนัยซึ่งสอดคล้องกับซอร์สโค้ดต่อไปนี้:

       \ \ ; ; ; ; 3
      3 r r ' ' 2 2 D
     D . . ) ) ; ; ; ;
    ; ; o o ; ; } } e e
   o o \ \ @ @ n n ; ; ;
  ; e e ; ; ; ; a a s s &
 & ; ; u u o o ; ; ; ; . .
  \ \ \ \ ; ; t t e e . .
   p p ; ; t t ; ; ; ; .
    . r r ; ; ' ' l l .
     . ' ' ; ; ; ; . .
      ; ; } } f f . .
       } } y y . . .

ฉันแน่ใจว่ามันเป็นไปได้ที่จะย่อให้สั้นลงกว่านี้และอาจแก้ได้ในความยาวด้าน 6 แต่มันก็ยุ่งยาก ...

มันทำงานอย่างไร

ป้อนคำอธิบายรูปภาพที่นี่

แผนภาพสร้างขึ้นด้วยTimwi ของ Hexagony Colorer

รหัสเป็นเส้นตรงอย่างสมบูรณ์ \ที่เหมาะสมในการเริ่มต้นการเปลี่ยนเส้นทางของ IP เป็นเส้นทแยงมุมเช่นว่าเราไม่จำเป็นต้องกังวลเกี่ยวกับตัวละครสองเท่าที่ทุกคน เส้นทางที่มีสีจะถูกดำเนินการตามลำดับสีส้ม / แดง, น้ำเงิน / เทา, เขียว, ม่วง (เมื่อมีสองเส้นทางที่มีสีเดียวกันเส้นทางซ้ายจะถูกดำเนินการก่อน

หากเราเพิกเฉยต่อคำสั่งห้ามมิเรอร์และคำสั่งที่ถูกแทนที่โดยผู้อื่นรหัสเชิงเส้นจะลงมาที่นี่

D;o;&32;}n;o;t;';}r;e;p;e;a;t;';}y;o;u;r;s;e;l;f;');@

ตัวอักษรใน Hexagony เพียงตั้งค่าขอบของหน่วยความจำปัจจุบันเป็นรหัสอักขระของตัวอักษร ;พิมพ์ขอบหน่วยความจำปัจจุบันเป็นอักขระ เราใช้&เพื่อรีเซ็ตขอบหน่วยความจำและพิมพ์พื้นที่ที่มี0 ย้ายไปที่ขอบที่แตกต่างกันเพื่อให้เราสามารถจดจำช่องว่างเพิ่มเติม ส่วนที่เหลือของรหัสเพียงพิมพ์ตัวอักษรบนขอบใหม่และบางครั้งย้ายไปมาเพื่อพิมพ์ช่องว่าง ในตอนท้ายเราก็ย้ายไปที่ขอบอวกาศอีกครั้งด้วยเพิ่มค่าเป็น 33 ด้วยและพิมพ์เครื่องหมายอัศเจรีย์ ยุติโปรแกรม32;}32';}')@


4
มันน่าประทับใจจริงๆ !!!
WizardOfMenlo

คุณบรรลุข้อสรุปว่าเป็นไปได้ในขนาด 6 หรือ 5 ได้อย่างไร ฉันเห็นขนาด 7 ว่าเหมาะสมมาก ๆ
Timwi

@Timwi 5 อาจจะค่อนข้าง overambitious แต่มีข้อยกเว้นของเดียว;ไม่มีการใช้ซ้ำระหว่างตัวละครในรหัสอย่างแน่นอน รหัสปัจจุบันสวยมากสิ่งแรกที่มาถึงใจของฉันดังนั้นฉันคิดว่าถ้าพยายามอย่างหนักพอมันควรจะเป็นไปได้ที่จะหาทางออกที่ซับซ้อนมากขึ้นซึ่งนำเซมิโคลอนและตัวอักษรบางตัวมาใช้ใหม่ เข้าสู่ความยาวด้าน 6
Martin Ender

ในการรับขนาด 6 คุณต้องบันทึก 36 ตัวอักษรเมื่อเทียบกับขนาด 7 แม้ว่าคุณจะใช้ช่องที่ไม่ได้ใช้ 6 ช่องในขณะนี้คุณยังต้องบันทึก 30 คุณสามารถนำมาใช้ซ้ำได้ทุก;ครั้งเพราะคุณ ไม่สามารถข้ามแนวนอนได้ มีเพียง 23 ;วินาทีในรหัสของคุณและมีเพียง 6 ตัวอักษรซ้ำ (2 × o, 1 × t, 1 × r, 2 × e), ให้เพียง 29. โดยส่วนตัวแล้วสิ่งนี้ยิ่งทำให้ฉันเชื่อว่าขนาด 6 เป็นไปไม่ได้ .. .
Timwi

44

GolfScript, 130 84 76 ไบต์

22..!!..00)){{DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff}}``%%>><<[[33]]++

ลองใช้ออนไลน์ในเว็บ GolfScript

มันทำงานอย่างไร

ตัวแปล GolfScript เริ่มต้นด้วยการวางสตริงว่างบนสแต็ก

22 # Push 22.
.. # Push two copies.
!! # Negate the last copy twice. Pushes 1.
.. # Push two copies.
00 # Push 0.
)) # Increment twice. Pushes 2.

   # STACK: "" 22 22 1 1 1 2

{{DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff}}

`` # Push a string representation of the string representation of the block.

   # This pushes "{{DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff}}" (with quotes).

%% # Take every second element of that string, then every element of the result.
>> # Discard the first element of the result. Repeat.
<< # Truncate the result to length 22. Repeat.
[[ # Begin a two-dimensional array.
33 # Push 33, the character code of '!'.
]] # End the two-dimensional array.
++ # Concatenate the empty string, the 22-character string and the array [[33]].

การต่ออาร์เรย์กับสตริงทำให้แบนดังนั้นผลลัพธ์คือเอาต์พุตที่ต้องการ


38

เอก , ~ 1.86 × 10 222

Simple brainfuck -> คำตอบเดียว ย่อยมากที่สุด;)

โปรแกรมประกอบด้วยจำนวน 0 ของคู่; โดยเฉพาะ:

1859184544332157890058930014286871430407663071311497107104094967305277041316183368068453689248902193437218996388375178680482526116349347828767066983174362041491257725282304432256118059236484741485455046352611468332836658716

ของพวกเขา.

รหัส brainfuck เดิม:

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

3
บล็อกโค้ดที่คุณให้ไว้ไม่เป็นไปตามกฎการดับเบิลคลิก ฉันพลาดอะไรไป
doppelgreener

26
@doppelgreener: บล็อกแรกของ "รหัส" เป็นเพียงจำนวนมาก จำนวนของ1s ในโปรแกรม Unary ที่ส่งออกสตริงที่ร้องขอ บล็อกโค้ดที่สองคือโปรแกรม BF ที่ใช้สร้างมันขึ้นมา เนื่องจากโปรแกรมของ Unary นั้นทำมาจาก1s โดยสมบูรณ์จึงเป็นไปตามข้อกำหนดการทำซ้ำ ๆ
El'endia Starman

8
นอกจากนี้จำนวนศูนย์คือ (โชคดีไหม) จำนวนคู่ :-)
Arnaud

1
ฉันใช้เสรีภาพในการแก้ไขคำตอบเพื่อให้ตัวเลขไม่เหมือนที่ควรจะเป็นรหัส
Timwi

2
@ Kametrixom มันเป็นคำอธิบาย Golunar ของโปรแกรม Unary โปรแกรม Golunar ตามที่เขียนไม่เป็นไปตามเงื่อนไข
Paŭlo Ebermann

34

Ruby - 2100 1428 1032 820 670 ไบต์

นี่ถือว่าเอาท์พุทสามารถเป็นค่าส่งคืนจากฟังก์ชั่น (มันไม่ได้ระบุว่าเอาต์พุตจะต้องเป็น STDOUT)

รหัส:

((((((((((((((((((((((((((((((((((((((((((((((""<<66++11**00++11**00))<<99++11++11**00))<<((55>>11**00))++((11>>11**00))))<<99++11))<<99++11++11**00))<<99++((33>>11**00))++11**00))<<((55>>11**00))++((11>>11**00))))<<99++11++((11**00<<11**00<<11**00))))<<99++11**00++11**00))<<99++11++11**00++11**00))<<99++11**00++11**00))<<88++((11>>11**00))++((11**00<<11**00<<11**00))))<<99++((33>>11**00))++11**00))<<((55>>11**00))++((11>>11**00))))<<99++22))<<99++11++11**00))<<99++((33>>11**00))++11**00++11**00))<<99++11++((11**00<<11**00<<11**00))))<<99++((33>>11**00))))<<99++11**00++11**00))<<99++((11>>11**00))++((11**00<<11**00<<11**00))))<<99++11**00++11**00++11**00))<<33))

เคล็ดลับคือการสร้างสตริงจากสตริงว่าง""โดยใช้การดำเนินการผนวก<<และรหัส ASCII ของตัวละคร

เพื่อให้ได้ตัวเลขสำหรับรหัส ASCII ฉันพยายามที่จะแยกตัวเลขออกเป็นค่าที่ฉันสามารถสร้างได้อย่างง่ายดาย ตัวอย่างเช่น ASCII 90เป็นเพียง88+1+1ซึ่งคือ:

  • 88 ไม่เป็นไร
  • 11**00คือ11^0ซึ่งเป็นเพียง1

โชคดีทั้งสอง++และ--อาจหมายถึงaddทับทิมดังนั้นฉันจึงสามารถเขียน90เป็น88++11**00++11**00

มีเทคนิคบางอย่างเพื่อให้ได้ตัวเลขบางอย่างง่ายกว่าแค่เพิ่ม 1s นี่คือรหัสที่ฉันใช้ในการสร้างด้านบน (ซึ่งรวมถึงการแมปทั้งหมดที่ฉันใช้):

d = "Do not repeat yourself!"

d.each_char do |c|
  print "(("
end

print '""'

VALUES = [
  [0,'00'],
  [1,'11**00'],
  [4,'((11**00<<11**00<<11**00))'],
  [5,'((11>>11**00))'],
  [11,'11'],
  [16,'((33>>11**00))'],
  [22,'22'],
  [27,'((55>>11**00))'],
  [33,'33'],
  [38,'((77>>11**00))'],
  [44,'44'],
  [49,'((99>>11**00))'],
  [55,'55'],
  [66,'66'],
  [77,'77'],
  [88,'88'],
  [99,'99']
].reverse

d.each_char do |c|
  print "<<"
  num = c.ord
  while num != 0
    convert = VALUES.find{|val|val.first<=num}
    print convert.last
    num -= convert.first
    print "++" unless num == 0
  end
  print "))"
end

ฉันยังคงคิดเกี่ยวกับลูกเล่นอื่น ๆ เพื่อลดจำนวนตัวอักษรที่ต้องใช้เพื่อให้ได้ตัวเลข

โปรดทราบว่าหากคุณใช้การ-rppตั้งค่าสถานะและเพิ่มppจุดเริ่มต้นของรหัสดังนี้:

pp((((((((((((((((((((((((((((((((((((((((((((((""<<66++11**00++11**00))<<99++11++11**00))<<((55>>11**00))++((11>>11**00))))<<99++11))<<99++11++11**00))<<99++((33>>11**00))++11**00))<<((55>>11**00))++((11>>11**00))))<<99++11++((11**00<<11**00<<11**00))))<<99++11**00++11**00))<<99++11++11**00++11**00))<<99++11**00++11**00))<<88++((11>>11**00))++((11**00<<11**00<<11**00))))<<99++((33>>11**00))++11**00))<<((55>>11**00))++((11>>11**00))))<<99++22))<<99++11++11**00))<<99++((33>>11**00))++11**00++11**00))<<99++11++((11**00<<11**00<<11**00))))<<99++((33>>11**00))))<<99++11**00++11**00))<<99++((11>>11**00))++((11**00<<11**00<<11**00))))<<99++11**00++11**00++11**00))<<33))

ดังนั้นสำหรับ 2 + 4 ไบต์พิเศษสิ่งนี้สามารถทำหน้าที่เป็นโปรแกรมที่สมบูรณ์แบบได้ แต่มันจะพิมพ์พิเศษ"ก่อนและหลังสตริงที่ต้องการ:

ตัวอย่าง:

$ ruby -rpp golf.rb
"Do not repeat yourself!"

คุณช่วยอธิบายได้ไหมว่าเหตุใดจึงไม่ปฏิบัติตามอย่างสมบูรณ์ มันมีลักษณะที่สมบูรณ์แบบกับผมและแม้กระทั่งppอัญมณีเป็นตัวอักษรคู่ ...
Trichoplax

3
@trichoplax: มันอยู่ในโพสต์: 1. "ตัวอักขระเพิ่มเติมในเอาต์พุตและ 2. ความต้องการของ-rppแฟ--rrpp
ล็

1
คำตอบนี้เจ๋ง แต่คำตอบที่ไม่ตรงตามข้อกำหนดอาจมีการลบ
ข้าวสาลีตัวช่วยสร้าง

1
@SztupY เพื่อความชัดเจนเป็นนโยบายเว็บไซต์ที่จะลบการตอบสนองที่ไม่ปฏิบัติตามกฎของความท้าทาย
Mike Bufardeci


23

> <> , 174 ไบต์

vv

77

99

**

00

77

bb

**

pp

""

!!

ff

ll

ee

ss

rr

uu

oo

yy



tt

aa

ee

pp

ee

rr



tt

oo

nn



oo

DD

""

~~

oo

ll

11

==

;;

00

66

bb

**

..

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

รหัสที่ทำงานประมาณจะเป็นดังนี้:

v            Redirect instruction pointer to move downwards
79*07b*p     Place a ? on row 77 before the first ;
"..."        Push "Do not repeat yourself!" backwards, riffled between spaces

[main loop]
~o           Pop a space and output a char
l1=?;        If there is only the final space left, halt
06b*.        Jump back to the start of the loop

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

(หมายเหตุ: นี่อาจจะสั้นลง 50 ไบต์ถ้ามันจบลงด้วยข้อผิดพลาดแต่ฉันชอบวิธีนี้)


1
เครื่องมือที่เหมาะสมสำหรับงาน ...
Erik the Outgolfer

20

การสลิป , 186 146 ไบต์

끄끄닶닶긂긂닦닦닶닶덇덇긂긂댧댧뉖뉖댇댇뉖뉖눖눖덇덇긂긂뎗뎗닶닶덗덗댧댧댷댷뉖뉖닆닆뉦뉦긒긒

껢껢鎵鎵❶❶合合虛虛替替標標現現併併一一終終

เพื่อความชัดเจนมีโค้ดสามบรรทัดซึ่งอยู่ตรงกลางซึ่งว่างเปล่าเนื่องจากขึ้นบรรทัดใหม่จะต้องมีการทำซ้ำ จำนวนไบต์จะขึ้นอยู่กับการเข้ารหัส UTF-16

คำอธิบาย

"DDDof� \"\u0002nf�of�twG \"\u0002rw'efVpw\aefVaf\u0016twG \"\u0002yw�of�uwWrw'sw7efVlf�fff!\"\u0012"บล็อกของตัวละครเกาหลีที่เริ่มต้นผลักดันสตริง คุณจะสังเกตเห็นว่าตัวละครที่สามทุกตัวเป็นตัวละครที่เราต้องการ ส่วนที่เหลือเป็นซึ่งพูดพล่อยๆ นี่คือเหตุผล:

ใน Sclipting อักขระภาษาเกาหลีสองตัวเข้ารหัสสามไบต์ ดังนั้นตัวละครเกาหลีแต่ละตัวจึงเข้ารหัสได้ 12 บิตอย่างมีประสิทธิภาพ ที่จะได้รับสตริงที่เริ่มต้นด้วยDเป็นครั้งแรก 8 บิตจะต้องมี0x44; ส่วนที่เหลือไม่สำคัญ แต่เนื่องจากเราต้องทำซ้ำตัวละครทุกตัวบิตที่ 12 ถึง 20 ก็จะเป็น0x44เช่นกัน ดังนั้นเราจึงจะมีค่าของแบบฟอร์ม0x44n44nสำหรับบางn0x44 0xn4 0x4nซึ่งสลายตัวลงไปในสามไบต์

สำหรับoซึ่งเป็นที่เราได้รับไบต์0x6F0x6F 0xn6 0xFn

ตั้งแต่ฉันขี้เกียจผมเริ่มโดยการเข้ารหัส"DDDooo nnnooottt (etc.)"แล้วเปลี่ยนทุกตัวละครอื่น ๆ ที่มีก่อนหน้านี้ซึ่งเป็นเหตุผลที่ผมได้รับ0x444444= "DDD"สำหรับDและ0x6F66F6= สำหรับ"of�" oเกิดขึ้นเพราะการ0xF6เข้ารหัส UTF-8 นั้นไม่ถูกต้อง

ตอนนี้กลับไปที่โปรแกรม ส่วนที่เหลือของโปรแกรมดำเนินการดังนี้:

껢껢 - ดันสตริง ".\"�"

鎵鎵 - ลบอักขระตัวสุดท้ายสองครั้งทิ้งเราไว้ "."

❶❶ - สองรายการที่ซ้ำกัน สแต็คตอนนี้:[".", ".", "."]

合合 - ต่อกันสองครั้ง สแต็คตอนนี้:["..."]

ตอนนี้สิ่งที่ฉันต้องการจะทำต่อไปคือใช้"..."เป็นนิพจน์ทั่วไปเพื่อให้ฉันสามารถจับคู่อักขระสามตัวจากสตริงเดิมในแต่ละครั้งโดยใช้โครงสร้างลูป替 ... 終 อย่างไรก็ตามเนื่องจากการเรียนการสอนทุกคนจะซ้ำฉันจำเป็นต้องมีสองเช่นลูปแสดงออกปกติซ้อนอยู่ภายในแต่ละอื่น ๆ และถ้า underruns สแต็คที่ฉันได้รับข้อผิดพลาด runtime ดังนั้น,

虛虛 - กดสตริงว่างสองครั้ง

และจากนั้นก็เริ่มลูป ด้วยวิธีนี้ลูปนอกจะวนซ้ำเพียงครั้งเดียวเพราะมันจับคู่นิพจน์ปกติ""กับสตริง""ซึ่งให้ผลการจับคู่เดี่ยว การวนรอบด้านในจะทำงานหนึ่งครั้งสำหรับการแข่งขันทุกครั้ง"..."กับสายใหญ่ เนื้อความของลูปคือ:

標標 - กดสองเครื่องหมายลงบนสแต็ก สแต็คตอนนี้:[mark mark]

現現 - พุชคู่ของการแข่งขัน regex ปัจจุบัน สแต็คตอนนี้:[mark mark "DDD" "DDD"]

併併 - ต่อกันจนถึงเครื่องหมายแรก สแต็คตอนนี้:["DDDDDD"]

一一 - ใช้อักขระตัวแรกของสตริงนั้นแล้ว (ซ้ำซ้อน) อักขระแรกของสตริงนั้น สแต็คตอนนี้มีตัวละครที่เราต้องการ

ลูปด้านในจะสิ้นสุดที่นี่ดังนั้นทุกการจับคู่ของนิพจน์ทั่วไปจะถูกแทนที่ด้วยอักขระตัวแรกของการจับคู่นั้น สิ่งนี้ทำให้สตริงที่ต้องการในกอง

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


3
อืม ... ทำไมคุณไม่ใช้รูปแบบรหัสที่นี่ มันเป็นตัวอักษรจีนหรือไม่?
Erik the Outgolfer

@EriktheOutgolfer ฉันสงสัยในสิ่งเดียวกัน (และพวกเขาเป็นตัวละครเกาหลีไม่ใช่จีน)
Kevin Cruijssen

@KevinCruijssen ฉันคิดว่ามีตัวอักษรจีนอยู่ในนั้นด้วย ในความเป็นจริง spec บอกว่ามันใช้อังกูลสำหรับข้อมูลและภาษาจีนสำหรับคำแนะนำ
Erik the Outgolfer

@EriktheOutgolfer อ่าใช่แล้ว ฉันควรจะมี RTFM .. :)
เควิน Cruijssen

12

เขาวงกต 528 ไบต์

66))__vv          ..33::00&&__vv          ..44__99||__vv          ..33::00&&__vv            ..99))__vv            ..99))__vv      ..44__88$$__vv          ..22__99++__vv          ..22__99$$__vv            ..22__99))$$__vv      ..33__77$$__vv            ..33__vv

      ..44__99||__^^          ..11__99++__^^          ..44__88$$__^^          ..44((__88$$__^^      ..11))__99++__^^      ..99((__^^          ..33::00&&__^^          ..44__99||__^^          ..44((__88$$__^^            ..99))__^^          ..11__99$$((__^^    ..@@

xx

ขึ้นบรรทัดใหม่สองครั้งเจ็บ แต่อย่างน้อยก็พิสูจน์ได้ว่ามันเป็นไปได้!

อักขระแต่ละตัวจะถูกพิมพ์ทีละตัวโดยเริ่มจากจุดรหัสแล้วพิมพ์อักขระตัวเดียว จุดรหัสจะเกิดขึ้นโดย:

D 68  66))
o 111 44__99||
  32  33::00&&
n 110 11__99++
t 116 44__88$$
r 114 44((__88$$
e 101 99))
p 112 11))__99++
a 97  99((
y 121 22__99++
u 117 22__99$$
s 115 22__99))$$
l 108 33__77$$
f 102 11__99$$((
! 33  33

ที่ไหน

)(        Increment/decrement by 1 respectively
&|$       Bitwise AND/OR/XOR respectively
+         Add
:         Duplicate
_         Push zero
0-9       Pop n and push n*10+<digit>

พฤติกรรมที่ผิดปกติของตัวเลขของเขาวงกตนั้นถูกเอาเปรียบ33::00&&ซึ่งเป็นเรื่องจริง

[33] -> [33 33] -> [33 33 33] -> [33 33 330] -> [33 33 3300] -> [33 32] -> [32]
     :          :             0              0               &          &

ถ่านแต่ละตัวจะถูกพิมพ์ด้วยกลไก

__vv

  ..

xx

xxอยู่เฉพาะแผ่นตารางเพื่อให้มันเป็น 5 สูง แรก__ผลักดันสอง zeroes vแล้วเราตีผู้ประกอบการหมุนตาราง เราปรากฏศูนย์และหมุน:

__ v
  v
   .
  .
xx

และอีกครั้ง:

__ v

  v.

xx.

จากนั้นเราจะเลื่อนไปทางขวา.ในแถวที่สามดังนั้นการดำเนินการคำสั่งพิมพ์เพียงครั้งเดียว


ฉันรักเคล็ดลับที่คุณใช้ในการเรียกใช้งานคำสั่งพิมพ์เพียงครั้งเดียว มันฉลาดมาก
Timwi

11

CJam - 176 136 ไบต์

66))HH77++GG00++BB88++HH77++EE88++GG00++DD88++99))CC88++99))AA77++EE88++GG00++BB99++HH77++KK77++DD88++JJ77++99))AA88++II66++33]]{{cc}}//

ขอบคุณ Sp3000 สำหรับการแบ่งขนาดโปรแกรมของฉันด้วยสอง :-)

คำอธิบาย

  • รหัสHH77++,, GG00++... คำนวณรหัส ascii ของตัวละครด้วยการเพิ่มตัวเลข (ตัวอย่างเช่น: `HH77 ++ 'กด 17, 17 และ 77 บนสแต็กจากนั้นเพิ่ม 3 หมายเลขเหล่านี้)
  • ส่วนของรหัสที่ส่วนท้าย]]{{cc}}//วนซ้ำผ่านรหัส ASCII และแปลงเป็นอักขระ

ลองที่นี่


1
คุณสร้างสิ่งนี้ด้วยโปรแกรมหรือไม่? อย่างน้อยที่สุดจุดจบสามารถเป็นได้33ccแต่ฉันแน่ใจว่ามีวิธีที่ดีกว่าสำหรับคนอื่น ๆ
Sp3000

@ Sp3000 ใช่เพียงแค่เรียกใช้โปรแกรมที่ลองใช้ชุดค่าผสมต่างๆกับ ++ ฉันไม่ได้ลองผู้ให้บริการรายอื่น ...
Arnaud

3
หมายเหตุอีกประการหนึ่ง: แทนที่จะccทำทุกที่ให้ทำ]]{{cc}}//ตอนท้าย
Sp3000

11

การปรับเปลี่ยนสมองด้วยตนเอง *** , 72 ไบต์

โปรดทราบว่า\x00หมายถึงNULไบต์ฐานสิบหกตัวอักษร(เซลล์ว่าง) ซอร์สโค้ดถูกวางไว้บนเทปด้านซ้ายของเซลล์เริ่มต้น

!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD\0\0<<<<<<++[[<<]]<<[[..<<]]

คำอธิบาย

!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD  The string on the tape for easy printing
\x00\x00                                        A separator to make printing shorter
<<<<<<++                                        Change first '.' to '0' (comment)
[[<<]]<<                                        Move to separator, then left to string
[[0.<<]]                                        Print string

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


เอาต์พุตนี้จะDDoo nnoott rreeppeeaatt yyoouurrsseellff!!(ช่องว่างสองครั้ง) หรือไม่ ฉันเห็นสอง.วิ
Erik the Outgolfer

@EriktheGolfer ถึงเวลาที่คุณจะอ่านคำตอบของฉัน Change first '.' to '0'. ฉันเปลี่ยนคำอธิบายเพื่อแสดง (อีกครั้ง) ว่ารายการแรก.เปลี่ยนเป็นศูนย์
mbomb007

7

Jelly , 66 ไบต์ (ไม่ใช่การแข่งขัน)

““DDoo  nn““oott  rreepp““eeaatt  yyoouurrss““eellff!!””ṛṛḷḷWWQQ€€

ลองออนไลน์!

factoid

โปรแกรมยังคงใช้งานได้หากคุณลบอักขระทุกวินาที

ลองออนไลน์!

มันทำงานอย่างไร

““DDoo  nn““oott  rreepp““eeaatt  yyoouurrss““eellff!!”

ส่งคืนอาร์เรย์ของสตริง อักษรเริ่มต้นด้วย, ลงท้ายด้วย, และสตริงจะถูกคั่นด้วยภายในโดย ผลที่ได้คือ

["", "DDoo  nn", "", "oott  rreepp", "", "eeaatt  yyoouurrss", "", "eellff!!"]

อาร์กิวเมนต์ของลิงก์และค่าส่งคืนถูกตั้งค่าเป็นอาร์เรย์ของสตริงจากนั้นส่วนที่เหลือของรหัสที่มาจะถูกดำเนินการ

<literal>”ṛṛḷḷWWQQ€€  Argument/return value: A (string array)

         ”ṛ           Yield the character 'ṛ'.
           ṛ          Select the right argument of 'ṛ' and A: A.
            ḷ         Select the left argument of A and A: A.
              W       Wrap; yield [A].
             ḷ        Select the left argument of A and [A]: A.
               W      Wrap; yield [A].
                Q     Unique; deduplicate [A]. Yields [A].
                 Q€€  Unique each each; for each string s in A, deduplicate s.

ทำไมไม่ใช่การแข่งขัน?
justhalf

1
เพราะเจลลี่ถูกสร้างขึ้นในเดือนธันวาคม 2558 ดังนั้นโพสต์วันที่ท้าทายนี้โดยสามเดือน
เดนนิส

อ๊ะไม่ทราบว่านี่เป็นความท้าทายเก่า
justhalf

5

Gammaplex , 66 ไบต์

\\

XX""!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD""XXXXrrRREE

Gammaplex เป็นภาษา 2D ที่ใช้ตำแหน่งของบรรทัดใหม่แรกเป็นความยาวบรรทัดและละเว้นบรรทัดใหม่อื่น ๆ ทั้งหมด


5

MSM , 270 160 bytes

!!'',,ff'',,ll'',,ee'',,ss'',,rr'',,uu'',,oo'',,yy'',,  '',,tt'',,aa'',,ee'',,pp'',,ee'',,rr'',,  '',,tt'',,oo'',,nn'',,  '',,oo'',,DD'',,......................

โปรแกรม MSM แรกของฉัน!

เอาต์พุตสตริงใน MSM ทำได้โดยการกดอักขระแต่ละตัวลงบนสแต็กและรวมเข้าไปในสตริงเดี่ยวผ่าน.เช่น

!olleH.....

จำนวน.คือหนึ่งน้อยกว่าจำนวนอักขระ สำหรับDo not repeat yourself!เราต้องการ 22 .วิ โชคดีที่นี่เป็นเลขคู่เราจึงมี 11 คู่

......................

การวางตัวอักษรไว้ด้านหน้ามันต้องใช้ความพยายามมากกว่านี้ รูปแบบ

cc'',,

cไม่หลอกลวงสำหรับตัวละครแต่ละตัว มันประเมินดังนี้

cc'',,            push c (remember: commands are taken from the left and operate on the right)
c'',,c            push c
'',,cc            quote ' and push
,,cc'             pop
,cc               pop
c                 voilà!

เราจำเป็นต้องมี 23 รูปแบบดังกล่าวเริ่มต้นด้วย!!'',,และลงท้ายด้วยการตามคำสั่งที่DD'',, 22 ร่วม.


5

Befunge 98, 70 66 bytes

ลองออนไลน์!

หลังจากคำตอบที่ไม่ถูกต้องของฉันนี่เป็นคำตอบที่ดีกว่าที่เหมาะกับความท้าทาย!

2200**xx""!!fflleessrruuooyy  ttaaeeppeerr  ttoonn  ooDD��""kk,,@@

(ขอบคุณ Martin Ender สำหรับการแนะนำการใช้��อักขระ 0x17 แทน88ff++)

คำอธิบาย:

2200          Push 2, 2, 0, and 0 onto the stack
*             Multiply 0 and 0, yielding 0
*             Multiply 2 and 0, yielding 0
              The stack is now [2, 0]
x             Pop a vector off the stack and set the instruction pointer delta to that
              The instruction pointer is now skipping over every other character, since the delta is (2, 0)
"!f ... oD�" Push the string onto the stack, with the number 23 (number of characters in the string) at the top
k,            Pop characters off the stack and print them, 23 times
@             End the program

คุณสามารถบันทึกสี่ไบต์ได้โดยใช้อักขระที่ไม่สามารถพิมพ์ได้ (จุดรหัส 23) ภายในสตริงแทน8f+: tio.run/nexus/…
Martin Ender

4

DC , 348 346 342 306 290 278 ไบต์

ไฟล์dnr6.short.dc(โดยไม่ขึ้นบรรทัดใหม่):

AAzz--22222222vvPPAAAAAAAAvvPP88vvFFFFFFFFvv00++AAzz--PP11vvFFFFFFFFvv00++AAAAAAvvPP11vvEEEEEEEEvv00++OOOO//44999999vv++PP77II++OOOO//44999999vv++PPAAAAAAvv88vvFFFFFFFFvv00++PPAAzz--BBPP11vvFFFFFFFFvv00++77OOOO++++PPOOOO//44999999vv++66vvFFFFFFFFvv00++PP99zz++OO88++PPAAAAvv33PP

วิ่ง:

$ dc < dnr6.short.dc 
Do not repeat yourself!



2

ไขว้กันเหมือนไม่ได้แข่งขัน 62 ไบต์

2200**UU""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!""oo;;

ลองออนไลน์!

คำอธิบายในส่วน:

2200**
2200    the stack looks like [2 2 0 0]
    *   [2 2 0*0]
     *  [2 2*0*0]
        [2 0]

Uกำหนดทิศทางตัวชี้ไป(2, 0)ที่นั่นคือย้าย2หน่วย x และ0y-units ดังนั้นมันจะข้ามตัวละครอื่น ๆ ทุกตัวเริ่มต้นด้วยUการข้ามไปต่อไป จากนั้นทุกตัวละครอื่น ๆ จะถูกบันทึกและเทียบเท่ากับ:

"Do not repeat yourself!"o;

ซึ่งเป็นโปรแกรมเอาต์พุตแบบง่าย

อื่น ๆ

นี่คือการแข่งขันสำหรับรางวัล JavaScript ของ WallyWest:

ฉันสามารถพิสูจน์ได้ว่าในขณะที่ตัวเลขสามารถสร้างได้ภายใต้ข้อ จำกัด นี้สตริงไม่สามารถ เนื่องจากไม่สามารถใช้ตัวอักษรได้เนื่องจากตำแหน่งของอักขระการสร้างตัวอักษรใด ๆ จะสร้างสตริงว่าง:

""
''
``

จากนั้นสามารถใช้ตัวดำเนินการบางอย่างเท่านั้น ตัวดำเนินการ "จับคู่" เพียงอย่างเดียวที่ใช้คือ:

++ -- << >> ** ~~ || && !! ==

และไม่มีสิ่งใดที่สามารถส่งหมายเลข / อื่น ๆ ไปยังสตริงได้ ดังนั้นจึงไม่สามารถส่งออกสตริงได้


เงินรางวัลจะจบลงใน 5 วัน @ConorOBrien หวังว่าคุณจะไม่รังเกียจที่จะรอ! แต่เงินรางวัลเป็นของคุณ
WallyWest

2

อลิซ 74 ไบต์

aa00tt,,JJ""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!//@@""ooYY;;tt


ลองออนไลน์!

คำอธิบาย

การจับครั้งแรกคือเราต้องสามารถใส่สายอักขระได้ดังนั้นเราจึงต้องการข้ามเฉพาะสายแรก"เท่านั้น เราทำสิ่งนี้โดยการกระโดดเข้าสู่"เซลล์แรกเพราะจากนั้น IP จะย้ายเซลล์หนึ่งก่อนที่จะดูเซลล์ปัจจุบันอีกครั้งดังนั้นมันจึงเป็นเซลล์ที่สอง"ซึ่งเข้าสู่โหมดสตริง แต่เพื่อให้สามารถกระโดดไปที่นั่นเราต้อง10, 0อยู่ด้านบนสุดของสแต็คตามลำดับ (ที่สองด้านบน) สิ่งนี้ทำได้ด้วยaa00tt,,:

                          Stack:
aa   Push two 10s.        [... 10 10]
00   Push two 0s.         [... 10 10 0 0]
tt   Decrement twice.     [... 10 10 0 -2]
,    Rotate(-2).          [... 0 10 10]
,    Rotate(10).          [... 0 10 0]

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

ทีนี้เราสามารถJบั๊กข้อมูลแรก"โดยใช้อาร์กิวเมนต์สองตัวนี้ ที่สองเข้าสู่โหมดสตริงและบันทึกทุกที่" DDoo nnoott...เมื่อได้รับความนิยม/IP จะถูกเปลี่ยนเส้นทางไปทางตะวันออกเฉียงใต้และเราจะเข้าสู่โหมด Ordinal สำหรับตอนนี้อยู่บน IP ตีกลับขึ้นและลงทั่วทั้งสามสาย (สองซึ่งเป็นที่ว่างเปล่า) "ดังนั้นจึงบันทึกครั้งแรกที่สามช่องว่างเพิ่มเติมเกี่ยวกับสายที่สองและสามและจากนั้นเราออกจากโหมดสตริงเมื่อมันฮิต เนื่องจากเราอยู่ในโหมด Ordinal ในขณะนี้ตัวละครที่ถูกบันทึกทั้งหมดจะถูกผลักเป็นสตริงเดียวไปยังสแต็ค (แม้ว่าเราจะบันทึกส่วนใหญ่ในโหมด Cardinal) ดังนั้นเราจึงจบลงด้วยสตริงนี้ (สังเกตช่องว่างต่อท้าย) :

DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!   

ตอนนี้ IP ช่วยให้ใหญ่ขึ้นและลงซึ่งหมายความว่ามันรันคำสั่งอย่างใดอย่างหนึ่งของทุกคู่อื่น ๆ เช่นและY tจากนั้น IP จะเข้าสู่จุดสิ้นสุดของกริดในบรรทัดที่สองและเริ่มตีกลับด้านหลังของกริด นอกจากนี้ยังสวิทช์ที่คู่ของตัวละคร IP ฮิตบรรทัดแรกดังนั้นเมื่อจะกลับมาได้ในขณะนี้ดำเนินการ;, และo @ดังนั้นการละเว้นช่องว่างทั้งหมดและการเปลี่ยนเส้นทาง IP โดยนัยรหัสที่เรียกใช้อยู่Yt;o@ในโหมด Ordinal

Yเป็นคำสั่ง "เครื่องรูด" ซึ่งแยกสตริงเป็นตัวอักษรในตำแหน่งสลับ เนื่องจากตัวละครแต่ละตัวถูกทำซ้ำนั่นเป็นเพียงแค่ให้เราสองชุดของสตริงที่เรากำลังจะถึงแม้ว่าสำเนาแรกมีช่องว่างต่อท้ายที่สองและที่สองมีพื้นที่ต่อท้ายหนึ่ง tแยกพื้นที่ต่อท้ายออกและ;ทิ้งไป ในที่สุดoพิมพ์สตริงและ@ยุติโปรแกรม


2

05AB1E , 100 58 52 ไบต์

-6 ไบต์ขอบคุณ Kevin Cruijssen

„„€€··™™……€€––  ……¹¹‚‚  ……––‚‚))εε##θθáá}}»»……!!θθJJ

ลองออนไลน์!

„„€€·              # dictionary string "g do"
     ·             # double (no effect on strings)
      ™            # title case: "G Do"
       ™           # title case again (no effect)
……€€––             # dictionary string "tools not–"
                   # spaces necessary so "–…" isn't parsed as a dictionary word
……¹¹‚‚             # dictionary string "team repeat‚"
                   # spaces necessary again
……––‚‚             # dictionary string "j yourself‚"
)                  # wrap the entire stack in an array
 )                 # and again: [["G Do", "tools not–", "team repeat‚", "j yourself‚"]]
  ε        }       # for each:
   ε      }        #  for each:
    #              #   split on spaces: ["tools", "not–"]
     #             #   and again: [["tools", "not–"]]
      θ            #   get the last element: ["tools", "not–"]
       θ           #   and again: "not–"
        á          #   keep only letters: "not"
         á         #   and again (no effect)
            »      # join the list by newlines, joining sublists by spaces:
                   # "Do not repeat yourself"
             »     # join the stack by newlines, joining lists by spaces (no effect)
……!!               # literal string "…!!"
    θ              # get the last character: "!"
     θ             # and again (no effect)
      J            # join the stack without separators: "Do not repeat yourself!"
       J           # and again (no effect)
                   # implicit output

กฎ Idempotency


1
คำตอบที่ดีฉันประทับใจที่คุณสามารถบีบสตริงพจนานุกรมแบบนี้ได้! เป็นที่น่าเสียดายที่áไม่ได้ vectorizes บนสตริงภายในมิฉะนั้นมันสามารถใช้หลังจาก)).. ลบทั้งหมดáและใช้εεáá}}หลังจาก))ทำงานเป็นทางเลือก แต่น่าเสียดายที่มันไม่ได้บันทึกไบต์ใด ๆ (แต่บางทีคุณสามารถหาแรงบันดาลใจจากมันได้หรือไม่ ) .. และ„„!!แทนที่จะ……!!ทำงานด้วยเช่นกันเนื่องจาก!builtin ออกจากสายเหมือนกันอย่างเห็นได้ชัด อ่าฉันพยายามแล้ว xD
Kevin Cruijssen

1
@KevinCruijssen ฉันพยายาม refactor เหล่านั้นซ้ำแล้วซ้ำอีก##θθááในขณะที่และด้วยเหตุผลบางอย่างที่ฉันไม่ได้พิจารณาεε}}... ฉันพยายาม€€ที่ไม่ทำงาน ... นี่คือคำตอบที่สั้นที่สุดขอบคุณ!
Grimy

1

Stax , 70 ไบต์

GG11hh::zzaapp..}}..""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!""

เรียกใช้และแก้ไขปัญหาได้ที่ staxlang.xyz!

Stax โชคดีมากที่มี builtin ::สำหรับทุก ๆ ทั้งหมดที่ฉันต้องเป็นผลักดันสตริงสองเท่าผลักดัน 2 ::และวิ่ง ง่ายใช่มั้ย

ไม่ถูกต้อง.

การกดสายนั้นเป็นเรื่องยุ่งยาก เครื่องหมายคำพูดแรกสามารถเพิ่มเป็นสองเท่าได้..""ซึ่งมีความยาว 2 ตัวอักษร."ตามด้วยเครื่องหมายคำพูดที่มีความหมาย ปัญหาคือฉันไม่เห็นวิธีที่จะยุติสตริง (ซึ่งเป็นสิ่งที่จำเป็นหรืออื่น ๆ รุ่นสองเท่าจะถูกพิมพ์) โดยไม่ต้องเริ่มใหม่

จุดสิ้นสุดของโปรแกรมยุติตัวอักษรของสตริง ถ้าฉันสามารถใส่ตัวอักษรสองเท่านี้ได้บางทีอาจจะมีวิธีแก้ปัญหาที่ดี ในการข้ามไปที่ใดที่หนึ่งจากจุดสิ้นสุดของโปรแกรมอย่างไรก็ตามG}อย่างน้อยฉันก็ต้องดูดังนี้:

GG [deduplicate] }}""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!""

นี่มันไม่มีอะไรเลย ไม่ได้เริ่มต้นบล็อกดังนั้นจะไม่ข้ามไปที่สองG }อีกครั้งฉันต้องเพิกเฉยตัวละครตัวหนึ่ง: ..}}. การดำเนินการข้ามไปจากที่หนึ่งGไปยังอีกที่สอง}ไปยังจุดสิ้นสุดกระโดดกลับไปที่สองGและจากที่นั่นไปที่สอง}และต่อไปอีกครั้งไปยังจุดสิ้นสุดอีกครั้งก่อนที่จะกลับมาทำงานที่จุดเริ่มต้นของ[deduplicate]ส่วน

การทำสำเนาเป็นเรื่องง่าย 11hhผลักสิบเอ็ดและแบ่งครึ่งสองครั้งปัดเศษลงทั้งสองครั้งและยอมสอง::แล้วจะได้ผลลัพธ์ที่เราต้องการ

GG11hh::..}}..""DDoo  nnoott  rreeppeeaatt  yyoouurrsseellff!!""

เอ่อโอ้. มันไม่พิมพ์อะไรเลย มีสองปัญหาที่นี่: แรกนั่น..}หมายความว่าสตริง.}จะอยู่บนกองซ้อนในตอนท้ายของโปรแกรมและที่สองตอนนี้การส่งออกโดยนัยของ Stax ถูกปิดใช้งาน!

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

เราจะต้องอย่างใดอย่างหนึ่งppหรือPPและในกรณีนี้ไม่สนใจคนแรกที่ผ่านการเป็นที่ยอมรับไม่เป็นมันจะพิมพ์สตริง..pp .pนั่นหมายความว่าเราต้องการเอาต์พุตที่ต้องการเพียงอย่างเดียวบนสแต็กหรือในสองอันดับแรกพร้อมกับสตริงว่าง หลังนี้ทำได้โดยการกดสองสตริงว่าง ( zz) และหมุนสามรายการแรกสองครั้ง ( aa) ก่อนทำการพิมพ์

เมื่อเสร็จแล้วเรามีสแต็กสี่สายสูง ที่ห้า.}จะถูกผลักก่อนที่โปรแกรมจะออกไปอย่างสง่างาม ณ จุดนี้การขาดผลผลิตโดยปริยายกลายเป็นพรและการสาปแช่งเพราะตอนนี้ไม่มีอะไรพิเศษจะถูกพิมพ์!

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