โปรแกรมวลีที่คุณชื่นชอบ


28

เลือกคำพูดหรือวลีที่ว่า 5 Programming puzzles and code golf!คำยาวเช่น

เขียนโปรแกรมที่เมื่อผนวกเข้ากับตัวเองnครั้งแรกเอาท์พุท1 + nคำพูดของวลีของคุณในการสั่งซื้อ

ตัวอย่างเช่นหากรหัสโปรแกรมMYPROGของคุณและวลีของคุณกำลังProgramming puzzles and code golf!ทำงานอยู่ ...

  • MYPROG ควรส่งออก Programming
  • MYPROGMYPROG ควรส่งออก Programming puzzles
  • MYPROGMYPROGMYPROG ควรส่งออก Programming puzzles and
  • MYPROGMYPROGMYPROGMYPROG ควรส่งออก Programming puzzles and code
  • MYPROGMYPROGMYPROGMYPROGMYPROG ควรส่งออก Programming puzzles and code golf!

การต่อท้ายมากกว่า 4 ครั้งไม่ได้ถูกกำหนดโปรแกรมของคุณอาจทำอะไรก็ได้

กฎระเบียบ

  • วลีของคุณต้องเป็นภาษาอังกฤษที่มีความหมายทางไวยากรณ์ เป็นการดีที่ควรจะใช้ตัวพิมพ์ใหญ่และเครื่องหมายวรรคตอนอย่างเหมาะสม
  • วลีของคุณอาจจะยาว ๆ แต่เอนโทรปีของตนตามที่คำนวณได้จากhttp://www.shannonentropy.netmark.pl/ , อาจจะไม่น้อยกว่า 3.5
    (วางในวลีของคุณกดปุ่มคำนวณและค้นหาH (X)ล่าสุด)
  • วลีของคุณมีได้เฉพาะอักขระ ASCII ที่พิมพ์ได้ (ฐานสิบหกถึง 20 สำหรับ 7E) รหัสของคุณสามารถมี ASCII และแท็บและการขึ้นบรรทัดใหม่ที่พิมพ์ได้เท่านั้น
  • วลีของคุณต้องมีเอกลักษณ์ 5 ประการคำที่คำและ 4 ช่องว่าง ช่องว่างทั้งหมดไม่นับเป็นส่วนของคำ ช่องว่างเป็นขอบเขตของคำ พวกเขาอาจไม่นำหรือตาม; ควรจะมีหนึ่งหลังจากทั้งหมด แต่คำสุดท้าย
  • ผลลัพธ์ควรมีช่องว่างระหว่างคำด้วยเช่นกัน เอาต์พุตในแต่ละขั้นตอนต่อท้ายอาจมีช่องว่างต่อท้าย แต่ไม่นำหน้าช่องว่าง
  • ส่งออกไปยัง stdout ไม่มีอินพุต

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

คะแนนของคุณคือความยาวเป็นไบต์ของโปรแกรมที่ไม่ได้ต่อท้ายเริ่มต้นของคุณ (เช่นMYPROGคะแนน 6)

เช่นนี้เป็นรหัสกอล์ฟคะแนนต่ำสุดชนะ


21
aww ข้อกำหนดเกี่ยวกับเอนโทรปีและความเป็นเอกลักษณ์ทำให้ความคิดของฉันเกี่ยวกับ "ควาย" เป็นรายการ
SPARR

4
ฉันกำลังจะสนุกอย่างมากใน Piet จนกระทั่ง "โค้ดของคุณมีเฉพาะ ASCII ที่พิมพ์ได้และแท็บและบรรทัดใหม่" :(
Sp3000

3
@ Sp3000 เรายินดีที่จะตอบคำถามกิตติมศักดิ์ ฉันชอบที่จะเห็นวิธีแก้ปัญหาของปิเอท :)
งานอดิเรกของ Calvin

นี่เป็นสถานการณ์เดียวที่ความบริสุทธิ์ของ Haskell เป็นปัญหาอย่างแน่นอน ...
Rhymoid

ไวยากรณ์ภาษาอังกฤษมีความหมายมากเกินไปไม่ชัดเจนว่าอะไรคือ "ไวยากรณ์ภาษาอังกฤษที่มีความหมาย" เนื่องจากการตีความที่แตกต่างกันของไวยากรณ์และมีความหมาย
MilkyWay90

คำตอบ:


6

CJam - 24

"TheguywasnotI"Lm3<]S*:L

ลองที่http://cjam.aditsu.net/

คำอธิบาย:

Lmลบตัวอักษรที่มีอยู่ใน L (ตอนแรก "") จาก "TheguywasnotI"
3<ใช้ตัวอักษร 3 ตัวแรก
]รวบรวมเนื้อหาของสแต็คในอาร์เรย์
S*เข้าร่วมอาร์เรย์โดยใช้พื้นที่เป็นตัวคั่น
:Lกำหนดสตริงผลลัพธ์ให้ L (เช่นกัน )

รุ่นเก่า (28 ไบต์):

"He is but a dog."S/W):W=]S*

คำอธิบาย:

S/แยกตามการ
W):Wเพิ่มขึ้นของพื้นที่W (เริ่มแรก W = -1)
=ได้รับคำ W'th
]รวบรวมเนื้อหาของสแต็คในอาร์เรย์
S*เข้าร่วมอาร์เรย์โดยใช้พื้นที่เป็นตัวคั่น


ภาษานี้น่าสนใจจริงๆ เหมือนที่พวกเขาพูดว่า "คุณเรียนรู้เกี่ยวกับภาษาใหม่ทุกวัน" ... หรืออะไรทำนองนั้น การทำงานที่ดี!
Brobin

ยอมรับสิ่งนี้แทนคำตอบสั้น ๆของ Dennis อย่างเท่าเทียมกันเพราะนี่ถูกโพสต์ก่อน
งานอดิเรกของ Calvin

28

Piet (คำตอบกิตติมศักดิ์)

enter image description here

งูพุ่งลงมาทางขวาวิ่งผ่านสีน้ำเงินแล้วกลับเข้ามาทางสีเขียวอีกครั้ง พิมพ์"ผลไม้แมลงวันเหมือนกล้วย"

ฉันใช้PietCreatorเพื่อทำสิ่งนี้ แต่คุณสามารถลองได้ที่นี่ที่นี่โปรแกรม Remaking Piet เป็นความเจ็บปวดดังนั้นฉันจึงเริ่มต้นที่ 35x35 และดำเนินการต่อในลักษณะนั้นหมายความว่าฉันใช้โคเดอร์มากกว่าที่ฉันต้องการ

รุ่นขนาดจริง

enter image description here enter image description here enter image description here enter image description here enter image description here


11

> <> (42)

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

!v'?od gub yna nac tahW;'00p!
<<|ov!
voo <

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

คำอธิบายแบบเต็ม:

นี่เป็นอีกหนึ่งโปรแกรมที่สนุกกว่าที่ฉันเขียนเพราะนี่เป็นโปรแกรมแรกที่ใช้การสะท้อน บรรทัดแรกคือเนื้อของโปรแกรม

!vไม่มีตัวเลือกเนื่องจาก!ทำให้คำสั่งถัดไปถูกข้าม

'?od gub yna nac tahW;' เก็บวลีแบบเต็มบนสแต็ก (เป็นแบบย้อนกลับเนื่องจากตัวอักษรแต่ละตัวถูกผลักลงบนสแต็กตามลำดับที่เขียนดังนั้นจึงต้องสลับกลับเพื่อให้เด้งออกมาอย่างสวยงาม)

00pเป็นที่ซึ่งเวทมนตร์ที่แท้จริงเริ่มเกิดขึ้น ;หมายเหตุว่ามันไม่ได้เป็นเพียงแค่การจัดเก็บวลีก็ยังเก็บไว้ 00pแทรกตัวอักษรด้านบนลงบนสแต็คในโปรแกรมที่ตำแหน่ง (0, 0) ;ดังนั้นตอนนี้ตัวอักษรตัวแรกของโปรแกรมคือ

จุดสิ้นสุด!จะข้ามเซมิโคลอนนั้นและเลื่อนเคอร์เซอร์ไปvที่ซึ่งนำการไหลของโปรแกรมลง

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

ในตอนท้ายเคอร์เซอร์จะชี้ไปที่ด้านล่างซ้ายของโปรแกรมและย้อนกลับไปที่ด้านบนซ้ายซึ่ง;แทรกไว้ก่อนหน้านี้ซึ่งจะสิ้นสุดโปรแกรม


นาทีที่ผ่านมานี่เป็นเทคนิคที่ไม่ถูกต้อง แต่ฉันเพิ่งเปลี่ยนสเป็คเพื่อให้บรรทัดใหม่ (และแท็บ) ได้รับอนุญาตในรหัส (ซึ่งเป็นสิ่งที่ฉันต้องการในตอนแรก)
งานอดิเรกของ Calvin

โอ้แย่มากที่พลาดไปเลยที่นำไปใช้กับแหล่งที่มาไม่ใช่แค่วลี ฉันดีใจที่เป็นความตั้งใจ>> โปรแกรมขึ้นอยู่กับการขึ้นบรรทัดใหม่อย่างเป็นธรรม
Mike Precup

หากคุณต้องการตีกอล์ฟลงเล็กน้อยคุณสามารถใช้วลีที่มี 11 ตัวอักษรและไม่มีอักขระซ้ำเช่น"It is by a rope."วลีของคุณจะซ้ำอักขระดังนั้นมันจึงมีเอนโทรปีต่ำกว่าที่ควร
isaacg

ปัญหาคือว่าแต่ละเอาต์พุตจะต้องมีความยาวเท่ากันเพื่อพิมพ์อย่างสวยงามเนื่องจาก> <> ไม่สามารถตรวจจับช่องว่างได้อย่างง่ายดาย ฉันไม่สามารถหาตัวที่สั้นกว่านี้ได้
Mike Precup

2
@isaacg โดยส่วนตัวแล้วฉันชอบวลีของไมค์;)
งานอดิเรกของ Calvin

10

Python 66

i='i'in dir()and i+1;print("Tfpcfhaialetgny"[i::5],end=" ."[i>3]);

เอนโทรปี: 3.61635

ouput:

The fat pig can fly.

ขอบคุณ @JasonS และ @grc สำหรับคำแนะนำในการย่อส่วนการตรวจจับตัวแปรให้สั้นลง

อัปเดต:ดูคำตอบของ JasonSสำหรับเคล็ดลับการทะเลาะวิวาทที่ชั่วร้ายซึ่งทำให้ข้อความนี้ลดลงเหลือ 55 ไบต์ :)


i=locals().get('i',-1)+1;คือ -5 ไบต์
Jason S

เอาชนะฉันไป! i='i'in dir()and i+1ฉันกำลังจะไปใช้ แก้ไข: กฎมีการเปลี่ยนแปลง
grc

นั่นก็คือ -4
Jason S

60 bytes กับ Python 2:i='i'in dir()and i+1;print"Tfpcfhaialetgny"[i::5]+" ."[i>3],
nyuszika7h

9

Python 3, 55 (โบนัส 67)

# 55 bytes, H(X)=3.72, Based on bitpwner's 66. "Mix dog and cat fur."
i=0;print("Mdacfionauxgdtr"[i::5],end=" ."[i>3]);i+=1;i

# 67 bytes, H(X)=4.28. "Thanks for supporting Python development."
q=b"qx!%%0077C";a,b,*q=q;print((str(credits)*2)[49:][a:b],end='');q

# 60 bytes, H(X) = 3.51. "Fix the bed old pal"
s="Fixthebedoldpal";a,b,c,*s=s;print(a+b+c,end='. '[s>[]]);s

คุณหมายถึงมันล้อมรอบ?

ตกลงคำอธิบายบางอย่างใน # 2 (สปอยเลอร์)

  • creditsเป็น python ในตัวที่มีข้อความที่ฉันต้องการใช้ เป็นรูปแบบพิเศษที่มีการจัดรูปแบบreprเพื่อให้คุณสามารถพิมพ์ในล่ามแบบโต้ตอบและดูผลลัพธ์ที่ดีดังนั้นฉันต้องstr()มัน ฉันใช้เวลาดูที่บิวด์อินสำหรับเรื่องนี้และ "ขอบคุณที่สนับสนุนการพัฒนาของ Python" เนื่องจากวลีดีเกินกว่าที่จะส่งผ่านได้

  • เนื่องจากมีข้อความจำนวนมากและฉันต้องการเพียง 5 คำของฉันฉันต้องการเก็บตำแหน่งเริ่มต้นและจุดสิ้นสุดของแต่ละสตริงย่อย ที่อยู่ในไบต์ที่จุดเริ่มต้น bytesวัตถุใน python3 ทำหน้าที่เหมือนอาร์เรย์ของจำนวนเต็มเมื่อคุณใช้การดำเนินการตามลำดับกับพวกเขา

  • แต่รหัสสามารถมีได้เฉพาะอักขระที่พิมพ์ได้ดังนั้นฉันจึงต้องค้นหา offset (49) ที่จะทำให้ค่าตำแหน่งทั้งหมดของฉันพิมพ์ได้เป็นอักขระ

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

  • การ[49:]แบ่งส่วนของสตริงเป็นหนึ่งไบต์ที่น้อยกว่าการเพิ่ม 49 ให้ทั้ง a และ b

  • x=<value>;dostuff and increment;xสร้างที่ใช้ในทุกสามคำตอบคือ การติดตามxไม่ได้ทำอะไรเลย แต่เมื่อรวมกับสำเนาของรหัสถัดไปมันจะกลายxx=<value>เป็นการป้องกันxเคาน์เตอร์จากการถูกเขียนทับ

  • a,b,*q=q เป็นลำดับที่สมบูรณ์แบบของ Python 3 ในการเปิดออก


+1 เคล็ดลับที่ชั่วร้าย :) ฉันสามารถอัปเดตเป็นคำตอบของฉันได้ไหม?
Vectorized

ดีฉันใช้ของกลาง
Jason S

ฉันกำลังประหลาดใจที่คำตอบที่ 2 ของคุณ เทคนิคมากมายที่บรรจุอยู่ในนั้น
Vectorized

2
คุณช่วยบอกฉันหน่อยได้ไหมว่าคำตอบที่สองทำงานอย่างไร
sajas

8

Python 2 (37)

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

i=4;print"mniIMeosQy!t"[i::5],;i-=1;i

เอาท์พุท:

My
My IQ
My IQ is
My IQ is not
My IQ is not me!

เอนโทรปีนั้นH(x)=3.5แน่นอน

ให้เครดิตกับเจสันเอสซึ่งคำตอบฉันใช้ขายส่งทั่วไป iiเคล็ดลับวิจิตรเป็นที่ยอดเยี่ยม


ดี! อุปกรณ์ประกอบฉากสำหรับการค้นหาวลีสั้น ๆ ด้วยเอนโทรปีที่ถูกต้อง ฉันยอมแพ้. นอกจากนี้ยังลืมว่า py2 printเป็นการเพิ่มช่องว่างแทนที่จะต่อท้าย
Jason S

นี่เป็นคำย่อที่น่าอัศจรรย์สำหรับคำตอบของ Python! ทำได้ดี.
isaacg

คุณสามารถลบเครื่องหมายจุลภาคที่อยู่ตรงกลางโปรแกรมของคุณเพื่อเลื่อนลงไปที่ 36 ตัวอักษร
xleviator

8

C - 65

ความคิดเห็นที่ไม่เหมาะสม :)

char*z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//

ด้วยเหตุนี้บรรทัดใหม่จึงมีความสำคัญและควรผนวกรหัสดังต่อไปนี้:

char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//...

นี่เป็นทางออกที่ดี!
MilkyWay90

4

CJam, 24 ไบต์

"LwOtmiaKoezs"W):W>5%]S*

ถ้าวิ่งห้าครั้งมันพิมพ์ลิซก็ตกลงกับผม ไม่รวมเครื่องหมายวรรคตอนขออภัย

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

"LwOtmiaKoezs"  " Push that string. ";
W):W            " Push W (initially -1), increment and save the result in W. ";
>               " Shift that many characters from the string. ";
5%              " Select every fifth character, starting with the first. ";
]S*             " Wrap the stack in an array and join its strings using spaces. ";

ความคิดดีๆแม้ว่าวลีจะค่อนข้างอ่อนแอ: p
aditsu

ฉันยอมรับสิ่งนั้น แต่ต้องเป็นxxx xxxxxxxxxxโดยไม่ต้องใช้ตัวอักษรซ้ำ นั่นเป็นเพียงประโยคที่ฉันสามารถขึ้นมาที่ทำให้อย่างน้อยความรู้สึกเล็ก ๆ น้อย ๆ ...
เดนนิส

แล้ว "Sun ตกลงกับฉันได้อย่างไร" คุณสามารถแทนที่ "Sun" ด้วยคำหรือชื่ออื่นได้
aditsu

ดีกว่านี้ขอบคุณ
เดนนิส

3

Pyth , 32

p?kqZ4d@P"It is by a rope."dZ~Z1

วลี: "มันเป็นเชือก"

เอนโทรปี: 3.5

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

p หมายถึงพิมพ์ด้วยตัวคั่นที่ระบุ

อาร์กิวเมนต์แรก?kqZ4dให้ตัวคั่น วิธี?kqZ4d คือในขณะที่เป็นk if Z==4 else dk''d' 'เป็น

อาร์กิวเมนต์ที่สองค่าที่จะพิมพ์ถูกสร้างขึ้นโดยแยก ( P) บนพื้นที่ ( d) และการจัดทำดัชนีในรายการที่ ( @) Zที่

ในที่สุดZซึ่งจะเริ่มต้นโดยอัตโนมัติถึง 0 จะเพิ่มขึ้น 1 ( ~Z1)


2
ฉันไม่สามารถนึกถึงบริบทที่ช่วงนี้จะเป็นธรรมชาติใน ^^
ข้อบกพร่อง

1
@flawr "ฉันอาศัยอยู่ที่ไหนบอล?" "มันเป็นเชือก"
isaacg

3

Golfscript, 53

อันนี้สนุกมาก

{'1'-print}:puts;.'You; are; not; a; duck.'';'/\,=\1+

วลี: "คุณไม่ใช่เป็ด" (ซึ่งเป็นความจริงอย่างสมบูรณ์; เอนโทรปี 3.5110854081804286)

คำอธิบาย:

สแต็กจะเริ่มต้น''ใน "run" ครั้งแรก (เนื่องจากไม่มีการระบุ STDIN) '1's ถูกผนวกเข้ากับสิ่งนี้เพื่อแสดงว่ามีการวางโค้ดในกี่ครั้ง

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: '' ''
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (0)
                              # Stack: '' [words] 0
=                             # Stack: '' 'You'
\1+                           # Stack: 'You' '1'

ตอนนี้เกิดอะไรขึ้นกับการวิ่งครั้งที่สอง:

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: 'You' '1' '1'
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (1)
                              # Stack: 'You' '1' [words] 1
=                             # Stack: 'You' '1' ' are'
\1+                           # Stack: 'You' ' are' '11'

และอื่น ๆ

"แต่" คุณกำลังคิด "คุณจะทำให้ 1s ไม่สามารถส่งออกได้อย่างไร" อานั่นเป็นส่วนที่แฮ็คสนุก Golfscript ดำเนินการputs(ซึ่งถูกเรียกเมื่อสิ้นสุดโปรแกรม) ดังนี้:

{print n print}:puts;

ฉันเพียงแค่เปลี่ยนเป็น

{'1'-print}:puts;

เพื่อให้1s ถูกระงับจากเอาต์พุตสุดท้าย


3

J - 42 ตัวอักษร

ฉันสามารถไปหาวลีที่สั้นกว่า แต่ทำไม? มันจะไม่เป็นที่ชื่นชอบ

(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '

สิ่งนี้ใช้ได้ผลเนื่องจากความเป็นคู่ของ J / monad J: คำกริยาทุกคำสามารถเรียกได้ว่าเป็น monad โดยมีอาร์กิวเมนต์หนึ่งอยู่ทางขวา - หรือเป็น dyad - มีอาร์กิวเมนต์อยู่ทางซ้ายและอีกขวา

พิจารณาเซสชันต่อไปนี้ด้วย J REPL:

   'You multiplied 6 by 9. '
You multiplied 6 by 9.
   'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
You multiplied 6 by 9. You multiplied 6 by 9.
   ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '   NB. break into words
+---+----------+-+--+--+---+----------+-+--+--+
|You|multiplied|6|by|9.|You|multiplied|6|by|9.|
+---+----------+-+--+--+---+----------+-+--+--+
   (#\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '             NB. count off
1 2 3 4 5 6 7 8 9 10
   (6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '         NB. mod 6
1 2 3 4 5 0 1 2 3 4
   (1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
1 0 0 0 0 0 1 0 0 0
   (#~ 1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '  NB. select
+---+----------+
|You|multiplied|
+---+----------+
   (#~ 1 = 6 | #\)&.;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. ' NB. undo ;:
You multiplied

นั่น,คือถือว่าเป็น dyad เพราะมันอยู่ระหว่างสองข้อโต้แย้งและ(#~1=6|#\)&.;:เป็น monad เพราะมันไม่มีอาร์กิวเมนต์ที่เหลือ ดังนั้นถ้าเรามีคำกริยาที่สามารถทำหน้าที่เหมือน,เมื่อ dyadic และ(#~1=6|#\)&.;:เมื่อ monadic เราจะถูกตั้งค่า

:ขณะที่คุณอาจจะเดาได้แล้วร่วมดังกล่าวมีอยู่และดูเหมือนว่า Monadic f :gเทียบเท่าfและเทียบเท่าgเมื่อ dyadic วิธีนี้จะช่วยแก้ปัญหา

ตัวอย่างที่คุณสามารถลองด้วยตัวเองได้ที่tryj.tk :

   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by 9.

และใช่ธรรมชาติของการผกผันของ;:มันทำให้ไม่มีช่องว่างต่อท้าย

ใช้It is by a rope.เป็นวลีให้ 35 (#~1=6|#\)&.;: :,'It is by a rope.'ถ่าน: เราไม่ต้องการช่องว่างต่อท้ายเหมือนที่เราทำเพื่อประโยคของฉันสำหรับ;:เหตุผลที่เป็นพื้นฐาน


3

BBC Basic, 40

รวมหนึ่งบรรทัดใหม่ จะเป็น 30 หากคำหลักนั้นถือเป็นโทเค็นแทน ASCII

ฉันจับแฟนของฉันนอนกับคนส่งนมดังนั้นฉันทิ้งเธอและฉันกำลังนอนกับน้องสาวของเธอออกมาจากการแก้แค้น As my ex do I!(ห้าคำ "ตัวอักษรสองตัวที่มีตัวอักษรที่ไม่ซ้ำกัน") ไม่เพียงพอสำหรับเอนโทรปีดังนั้นฉันจึงเพิ่มรอยยิ้มออกมาในตอนท้ายเพื่อทำให้เอนโทรปี 3.5 ท้ายที่สุดแล้วในความเป็นจริงฉันมีชีวิตที่ค่อนข้างปกติ

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

ทำซ้ำโปรแกรม 5 ครั้งที่เราได้รับ

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

ดำเนินการเฉพาะ 5 READงบและข้อมูล 5 รายการแรกเท่านั้นที่อ่านจากDATAคำสั่งแรก ข้อมูลส่วนที่เหลือซ้ำซ้อน เอาท์พุท:

  (once)
  As 
  (5 times)
  As my ex do I:-P 

2

ทับทิม, 50

puts'The fat pig can fly.'[0..File.size($0)/12-1]#

วิธีนี้ใช้ความยาวของตัวเองเพื่อกำหนดจำนวนคำที่จะพิมพ์ ซ้ำมันจะถูกละเว้นโดยสิ้นสุดในตัวแสดงความคิดเห็น, #. วลีที่ยืมมาจากbitpwner : มันสะดวกมากที่จะมีวลีสั้น ๆ ที่มีจำนวนตัวอักษรเท่ากันในแต่ละคำ

เนื่องจากแต่ละคำ + ตอนจบมี 4 ตัวอักษรสูตรจะเป็นเช่นสำหรับโปรแกรมความยาว 56 ตัว: (File.size($0)/56)*4 - 1แต่ฉันสามารถแบ่งเวลาก่อนหน้าได้56/4 = 14ดังนั้นจึงFile.size($0)/14 - 1ประหยัดอักขระได้ไม่กี่ตัว 50ไม่ใช่หลายตัว4แต่12ใกล้พอสำหรับช่วงที่ต้องการ


2

ชิป 165 + 3 = 168 ไบต์

+3 สำหรับธง -w

| ,z `Z`Z  `Z
| |ZZZ>Z>ZZZ>ZZZZ
>((((((((((((((((
|)-)))-)-)))-))))g
|)d)xx-x-)xx-))x)e
||b+))-x-x))-x)xc
|`v))xa(-x(x-((^d
|*`.))d| b | b
|Z~<b( |~Zf|
>~T| | |   |

"ฉันชนะชุดสีแดง" (3.5) (จริง ๆ แล้วฉันยังไม่ได้รับสิ่งใด) (... ยัง)

สังเกตการขึ้นบรรทัดใหม่ดังนั้นสำเนาที่ต่อกันจะปรากฏด้านล่างรหัสที่มีอยู่

ลองออนไลน์! (ต้นฉบับ)
ลองออนไลน์! (ต้นฉบับรวมทั้งสี่ชุด)

นี่เป็นความยุ่งเหยิงเล็กน้อย ปรากฎว่าบิตที่ยากที่สุดคือเงื่อนไขการยกเลิก (การทำซ้ำครั้งแรกของฉันพิมพ์คำ (s) ตามด้วยกระแสที่ไม่มีที่สิ้นสุดของ null ไบต์ ... )

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

วลีแรก:
12 อักขระที่ไม่ซ้ำกัน + 4 ช่องว่าง = เอนโทรปี 3.5 รายการ

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

หากมีสองชุดทั้งคู่จะพิมพ์คำแรกพร้อมกัน (ไบต์เป็น OR หรือรวมกันดังนั้นจึงเป็นเรื่องปกติ) ดังนั้นสำเนาที่สองเท่านั้นที่จะพิมพ์คำที่สอง

หากสำเนาทั้งห้ามีอยู่ทั้งหมดจะพิมพ์คำแรก ฯลฯ และสำเนาที่ห้าจะพิมพ์คำสุดท้ายด้วยตัวเอง

วงจรการยกเลิกจะยุติโปรแกรมทันทีที่สำเนาทั้งหมดไม่ได้ทำการพิมพ์



1

Perl, 37

print qw(My IQ is not me!)[$i++].' ';

คล้ายกับสิ่งที่ comperendinous มี แต่ใช้ประโยชน์จาก qw ของ perl เพื่อประหยัดอักขระอีกสองสามตัว


1

ความยาวข้อความRebmu + 27

เราจะไปกับ "IQ ของฉันไม่ใช่ฉัน!" นั่นจะเป็น 43 แต่ฉันสนับสนุนข้อความนี้:

uV?'s[S[{The}{rebellion}{against}{software}{complexity.}]]proTKsPROsp

Rebol เทียบเท่า / Red:

unless value? 's [
    s: [{The}{rebellion}{against}{software}{complexity.}]
]

print/only take s
print/only space

Rebol มีเงื่อนไขพื้นฐาน 3 ข้อคือ IF, EITHER และ UNLESS UNLESS เทียบเท่ากับ IF NOT แต่สามารถชัดเจนมากขึ้น: "ทำสิ่งต่อไปนี้เสมอเว้นแต่ว่าเงื่อนไขนี้จะเกิดขึ้นจริง"

ในกรณีนี้เงื่อนไขคือการที่เราทดสอบคือการดูว่าสัญลักษณ์ S ได้รับค่าในบริบทปัจจุบัน เราต้องใช้เครื่องหมายคำพูดบนมันเพราะการพยายามใช้ S ที่ไม่มีเครื่องหมายในนิพจน์เงื่อนไขจะประเมินมันและอาจทำให้เกิดข้อผิดพลาด ( value?ไม่อ้างอิงพารามิเตอร์โดยปริยายเพราะคุณอาจต้องการให้สัญลักษณ์ที่คุณกำลังตรวจสอบอยู่ในตัวแปรเช่นsym: 'sนั้นif value? sym [...]จะตรวจสอบว่า S ถูกกำหนดไม่ใช่ SYM)

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

(หมายเหตุ: PRINT / ONLY เป็นวิธีการเปลี่ยนที่แนะนำสำหรับการพูด PRIN ซึ่งกำลังพิจารณาใน Rebol 3 และ Red ขณะนี้การเปลี่ยนทดแทนกำลังถูกทดสอบใน Rebmu)


1

AHK , 44 ไบต์

i++
Send % SubStr("He is an OK ex",i*3-2,3)

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


0

Javascript (53)

I took the text from aditsu as I'm not doing anything fancy with the text, so that the words chosen are somewhat irrelevant for the solution (except for byte count).

var i=i|0;alert("He 0is 0but 0a 0dog".split(0)[i++]);

Does alert count in this case? Edit: Reading the rules it probably doesn't as I'm not joining the strings with spaces. I'll add spaces to make it fair.

Also note that the expensive var is actually relevant in this case.


Can anyone explain why var i|=0; does NOT work here???
flawr

@flawr You can't do |= or similar with var. Without var, you get a ReferenceError: i is not defined. var i=i|0 expands to var i=undefined|0, and undefined|0 is apparently 0.
nyuszika7h

This works because of hoisting. var i=i|0 is equivalent to var i;i=i|0. That's why you don't get the reference error. The reason it will be set to 0 the first time is what @nyuszika7h said.
Ingo Bürk

1
But this will alert the words separately.
proud haskeller

0

Perl, 43 56

print substr'Mine was not Red 5!',4*$i++,4;

I accept that I can't win this one. My original attempt explains why:

@a=('This',' code',' is',' too',' long.');print$a[$i++];


0

Javascript, 138

g=this;clearTimeout(g.t);g.i|=0;i++;g.t=setTimeout(
    function(){console.log(["I'll","sleep","when","I'm","dead."].slice(0,i).join(' '))},0);

(the additional newline is added for readability only)

Prints I'll sleep when I'm dead. Uses a timer to make sure the output is only printed once


0

Pure Bash, 51 bytes

a=(All you need is Love!)
printf "${i:+ }${a[i++]}"

H(X) = 3.59447

This could be golfed down a bit more by poaching one of the shorter phrases, but I'm happy to stick with Descartes' Lennon's most famous quote. (Sorry @Descartes, but all words need to be unique).

Output:

$ ./phrase.sh 
All$ cat phrase.sh phrase.sh phrase.sh > phrase3.sh
$ chmod +x phrase3.sh 
$ ./phrase3.sh 
All you need$ 
$ cat phrase.sh phrase.sh phrase.sh phrase.sh phrase.sh > phrase.sh
$ chmod +x phrase5.sh 
$ ./phrase5.sh 
All you need is Love!$ 

Takes care to insert spaces between words, but no leading or trailing spaces.

Relies on the fact that in bash, undefined variables, when expanded as strings have the value "", but when expanded arithmetically have the value 0.


The 5 words are required to be unique...
trichoplax

Since your code seems versatile enough to deal with any 5 word phrase, I'm sure you can think of one that has the required entropy of 3.5 (too many double letters in this one...).
trichoplax

@githubphagocyte I was hoping you'd give me the benifit of rounding ;-) Ok, I've fixed it with an extra ! now - seems to do the trick.
Digital Trauma

0

PHP 89 78 char

Its a little verbose, and most definitely won't win, but it was fun anyway. Here's what I came up with

Phrase:

code golf is pretty fun

Entropy = 3.82791

Code:

<?
$i=(isset($i)?$i+1:0);
$w=["code","golf","is","really","fun"];
echo $w[$i].";

Golfed:

<?$i=(isset($i)?$i+1:0);$w=["code","golf","is","really","fun"];echo $w[$i].

0

Python3 - 122 bytes

Open the pod bay doors [HAL]

I guess I'll earn some nerd cred with this one. If only the question would allow one more word...

What my program does is takes the filename (p.py is the base) and checks how many times the base name is iterated. It then takes slices from a string n times. n being the number of ps in the filename.

import sys,re
for i in range(len(re.findall(re.compile('p'),sys.argv[0]))):print('Otpbdphoaoeedyon   r    s'[i::5],end='')

~ $ python p.py
Open

~ $ python pp.py
Open the

~ $ python ppp.py
Open the pod

~ $ python pppp.py
Open the pod bay

~ $ python ppppp.py
Open the pod bay doors

The benefit of the regex is that the program can be called whatever you like and it will still work (providing you change the basename in the code): my original program was called golfed.py.


0

05AB1E, 21 bytes (Noncompeting)

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?

Try it online!

Uses:

This works for literally anything. 
H(x) = 4.02086

Explanation

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?
“€Œ‰‹€‡Øš‹É.“ª        # Pushes "This works for literally anything."
              #       # Split on spaces
               ¾è     # get element at index of counter_variable (default 0)
                 ¼    # Increment the counter_variable
                  ?   # Print the selected element
                   ð? # Prints a space

Didn't see this, posted near the same with “€í€Ü€…‚¿‹·“ hehe
Magic Octopus Urn


0

SmileBASIC, 54 bytes

DATA"Does"," anybody"," have"," a"," key?
READ W$?W$;

I would've prefered "The sand can be eaten." but that fails the entropy test somehow. Of course I could've picked a shorter phrase but that's boring.

The READ keyword reads a value from DATA and stores it in a variable. Using READ again will get the next item, and so on.


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