สร้างภาษากอล์ฟกับฉัน


30

ผู้ใช้ PPCG จำนวนมากช่วยในการสร้างความท้าทายนี้ทั้งในการแชทและแซนด์บ็อกซ์โดยเฉพาะมาร์ตินเอนเดอร์ , AdmBorkBork , Emignaและuser202729

ชุมชนของเราพบว่าจำเป็นต้องสร้างชุดภาษาที่ออกแบบมาเฉพาะสำหรับการเล่นกอล์ฟ "ภาษาการเล่นกอล์ฟ" ในขณะที่เราเรียกพวกเขา ภาษาดังกล่าวได้พัฒนามาจากที่ยอดเยี่ยมครั้งนี้ clunky GolfScriptกับภาษาที่กระชับเงาเช่นเยลลี่และแกลบ อย่างที่เราเห็นภาษาเหล่านี้สั้นลงเรื่อย ๆ สำหรับชุดของงาน ดังนั้นในฐานะผู้เชี่ยวชาญที่ชัดเจนเกี่ยวกับภาษากอล์ฟเราควรออกแบบภาษาร่วมกันเพื่อเอาชนะภาษาอื่น ๆ ทุกภาษาที่กล้าแข่งขัน แนะนำ Bugle!

แตร: จากตัวย่อ BuGoL: Bu ILT ไป lfing L anguage

ความท้าทายนี้จะทำงานอย่างไร

ในกรณีที่คุณไม่ได้รับสิ่งที่ฉันพูดถึงในการแนะนำความท้าทายนี้เป็นความท้าทายที่เราแต่ละคนมีส่วนร่วมกับล่ามภาษากอล์ฟใหม่ปรับปรุงความสามารถในการแข่งขันบน PPCG ด้วยคำตอบแต่ละข้อ

ฉันจะโพสต์คำตอบแรกประกอบด้วยพื้นฐานของ spec / ล่ามภาษาและคำตอบอื่น ๆ ทั้งหมดจะดำเนินการต่อจากนั้น การส่งใหม่จะให้สิ่งต่อไปนี้:

  • การเปลี่ยนแปลงข้อมูลจำเพาะของภาษา
  • ล่ามที่ทันสมัยและตรงกับสิ่งที่วางไว้ในการเปลี่ยนแปลง
  • คะแนนที่อัปเดตของภาษา (รายละเอียดเพิ่มเติมเล็กน้อย)

คุณสามารถเปลี่ยนข้อมูลจำเพาะได้หนึ่งในสามวิธี:

  • คุณอาจเพิ่มคำสั่งเดียว
  • คุณสามารถเพิ่มคำสั่งใหม่สองคำสั่ง
  • คุณสามารถแก้ไขพฤติกรรมของคำสั่งที่มีอยู่ได้

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

คำสั่งเพิ่ม (s) อาจทำอะไรที่คุณต้องการ ข้อกำหนดเพียงอย่างเดียวคือ:

  • มันไม่ได้สร้างผลลัพธ์ที่น่ารังเกียจ
  • มันไม่เหมือนกับคำสั่งอื่น
  • ไม่ได้ป้องกันความท้าทายตัวอย่างหนึ่งจากการเสร็จสมบูรณ์

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

คะแนนของภาษา

คุณอาจสังเกตเห็นว่าคุณต้องรวมคะแนนภาษาในการส่งใหม่ทั้งหมด คะแนนของมันคือสิ่งที่ป้องกันไม่ให้เกิดความท้าทายนี้ตลอดไปและมีการกำหนดไว้ดังนี้:

คะแนนปัจจุบันคือผลรวมของจำนวนไบต์ที่ใช้สำหรับภาษาเพื่อทำงานที่ต่ำกว่า 20 รายการให้สมบูรณ์

สำหรับแต่ละงานที่มาตรฐาน I / O กฎใช้เช่นเดียวกับช่องโหว่มาตรฐาน

งานที่ 20:

  1. "สวัสดีชาวโลก!" - เอาท์พุทสตริงHello, World!
  2. 1, 2, Fizz, 4, Buzz - เอาท์พุทจำนวนเต็มแต่ละค่าจาก 1 ถึง 100 (รวม) ในบรรทัดแยกโดยมีทวีคูณของ 3 ถูกแทนที่ด้วยFizzทวีคูณของ 5 ถูกแทนที่ด้วยBuzzและทวีคูณของทั้งสองด้วยFizzBuzz
  3. สร้างหมายเลข 2014 โดยไม่ใช้ตัวเลขใด ๆ ในซอร์สโค้ดของคุณ - เอาต์พุตหมายเลข2014โดยไม่ใช้อักขระใด ๆ0123456789ในซอร์สโค้ดโดยไม่ต้องเข้าถึงตัวแปรภายนอกหรือเมล็ดสุ่ม
  4. ปกปิด Hello World - ออกสตริงHello, World!โดยไม่ต้องใช้ตัวอักษรใด ๆ อย่างน้อยสองชุดต่อไปนี้: hlwd, eor01และ27(กรณีตาย)
  5. ร้องเพลงสุขสันต์วันเกิดให้เป็นภาษาโปรแกรมที่คุณโปรดปราน - ในภาษาที่คุณเลือกเอาท์พุทต่อไปนี้:

    Happy Birthday to You
    Happy Birthday to You
    Happy Birthday Dear [the name of your favourite programming language]
    Happy Birthday to You
    
  6. เราไม่ใช่คนแปลกหน้าในการตีกอล์ฟคุณรู้กฏแล้วฉันก็เลยเอาเพลงทั้งหมดของ "Never Gonna Give You Up"

  7. แสดงสัญญาณ - ให้ตัวเลขพิมพ์-1ถ้ามันเป็นลบ0ถ้าเป็น0หรือ1ถ้ามันเป็นบวก
  8. Collatz Conjecture (OEIS A006577) - เริ่มต้นจากจำนวนเต็มหารด้วย 2 ถ้ามันเป็นเลขคู่หรือคูณด้วย 3 และเพิ่ม 1 ถ้ามันแปลกและทำซ้ำกระบวนการจนกว่าคุณจะถึง 1 ผลลัพธ์ควรเป็นจำนวนซ้ำ พาคุณไปให้ถึง 1
  9. Array of Challenges # 1: Alternating Arrays - กำหนดอาร์เรย์จำนวนเต็มตรวจสอบว่ารายการที่มีการทำดัชนีทั้งหมดมีค่าเท่ากันหรือไม่และรายการที่มีการทำดัชนีคี่ทั้งหมดเท่ากันและส่งออกค่าจริงหรือเท็จ
  10. ฉันเป็นอาร์เรย์ที่ไม่มีนัยสำคัญหรือไม่? - ให้อาร์เรย์ของจำนวนเต็มตรวจสอบว่าความแตกต่างที่แน่นอนระหว่างองค์ประกอบที่ต่อเนื่องทั้งหมดมีขนาดเล็กกว่าหรือเท่ากับ 1 และส่งออกค่าความจริงหรือเท็จ
  11. ตัวเลขนี้เป็นจำนวนเฉพาะหรือไม่ - รับจำนวนเต็มบวกเขียนโปรแกรมเต็มรูปแบบเพื่อตรวจสอบว่ามันเป็นนายกและส่งออกค่าความจริงหรือเท็จ
  12. ฉันเป็น Palindrome คุณเป็น - รับสตริงให้ตรวจสอบว่ามันเป็น palindrome ในขณะที่โปรแกรม / ฟังก์ชั่นของคุณเป็น palindrome ด้วยและส่งออกสองค่าที่แตกต่างและสอดคล้องกันตาม
  13. รวมตัวเลขตามมาตรฐานใน - ใช้ชุดตัวเลขจาก STDIN และส่งออกผลรวมของพวกเขา
  14. ค้นหาแฟคทอเรียล - รับจำนวนเต็มnออกผลลัพธ์ของจำนวนเต็มทั้งหมดระหว่าง1และnรวม
  15. รหัสที่สั้นที่สุดในการสร้างผลลัพธ์แบบไม่มีที่สิ้นสุด - หากไม่มีอินพุตใด ๆ จะสร้างผลลัพธ์แบบไม่สิ้นสุดซึ่งตามหลักการแล้วจะไม่หยุดการส่งออก
  16. Bake a slice of Pi - เอาท์พุทข้อความตรงนี้:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|
  1. ค้นหาจำนวนที่น้อยที่สุดที่ไม่ได้หาร N - ด้วยจำนวนเต็มบวก N ให้ออกจำนวนเต็มบวกที่เล็กที่สุดที่ไม่ได้หาร N
  2. นี่มันแปลกหรือเปล่า? - รับจำนวนเต็ม N ส่งออกพาริตีของมันเป็นค่าความจริง / เท็จ
  3. เอาต์พุตที่มีความยาวเท่ากันกับรหัส - เขียนรหัสที่สั้นที่สุดที่เอาท์พุทมีความยาวเท่ากับรหัสซึ่งผลลัพธ์ไม่เหมือนกับรหัส
  4. ตีกอล์ฟให้คุณอย่างดีเยี่ยม! - เขียนควินินสั้นที่สุดในภาษาของคุณ

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

วิธีรับคุกกี้

ฉันมีรายการความท้าทาย 5 รายการที่ไม่ได้บังคับให้ต้องลองและไม่มีผลต่อคะแนนของคุณ แต่เป็นเพียงความท้าทายเพิ่มเติมเพื่อทดสอบว่า Bugle นั้นมีความสามารถเพียงพอหรือไม่ อย่าลังเลที่จะรวมวิธีแก้ปัญหาเหล่านี้ไว้ในคำตอบของคุณ:

  1. สร้างล่าม Self
  2. สร้าง quine ที่มีความสามารถในการรับน้ำหนัก
  3. Covfefify สตริง
  4. Hyperprogramming: N + N, N × N, N ^ N ทั้งหมดในที่เดียว
  5. "KNOT" หรือ "ไม่"?

ไม่รวมคำอธิบายเนื่องจากไม่จำเป็นสำหรับทุกคนที่จะสามารถแข่งขันได้

วิธีที่จะชนะ

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

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

การจัดรูปแบบ

เพื่อให้การค้นหาข้อมูลง่ายขึ้นในคำตอบของคุณโปรดจัดรูปแบบดังต่อไปนี้:

# [N]. [Score]

[New command + description]

[Interpreter/link to interpreter]

[Link to programs]

[N]หมายเลขคำตอบของคุณอยู่ที่ใด(1 สำหรับหมายเลขแรกหมายเลข 2 หมายเลขสองสำหรับหมายเลข ฯลฯ )

กฎระเบียบ

  • คุณต้องรอ 3 ชั่วโมงระหว่างการตอบคำถาม
  • คุณไม่สามารถโพสต์สองครั้งติดต่อกันเว้นแต่จะไม่มีการโพสต์คำตอบเป็นเวลา 10 วัน (240 ชั่วโมงที่แน่นอน)
  • คุณไม่สามารถลบคำสั่งก่อนหน้า
  • ล่ามของคุณไม่ต้องตีกอล์ฟและจำนวนไบต์นั้นไม่เกี่ยวข้องอย่างสมบูรณ์ที่นี่
  • หากมีคนแนะนำสนามกอล์ฟให้กับรายการต่างๆในขณะที่คำตอบล่าสุดคุณต้องแก้ไขในสนามกอล์ฟและอัพเดทคะแนนของคุณ
    • คุณอาจทำเช่นนี้เมื่อคำตอบของคุณอยู่ตรงกลางของโซ่ตราบใดที่คะแนนของคุณไม่ต่ำกว่าคำตอบในภายหลัง
  • โปรดอย่าตอบคำถามท้าทาย PPCG ที่มีอยู่โดยใช้ภาษานี้อย่างน้อยก็จนกว่าความท้าทายจะจบลง
  • ล่ามเขียนขึ้นใน Python 3 และควรทำเช่นนั้นตลอดห่วงโซ่ทั้งหมด ห้ามเปลี่ยนภาษา
  • อีกครั้งเพื่อให้ถูกต้องการส่งใหม่จะต้องมีการส่งกอล์ฟสำหรับปัญหาอย่างน้อย2ของปัญหาโดยอย่างน้อย1ไบต์สำหรับแต่ละ

มาเริ่มกันเลย!



1
อาจถามเช่นกัน: ใครก็ตามที่ต้องการอธิบาย downvote? ฉันให้ความสำคัญกับข้อเสนอแนะใด ๆ และทั้งหมดที่คุณต้องการให้
caird coinheringaahing

2
@Kaldo เราไม่แน่ใจ quine จะต้องมีอย่างน้อยสองไบต์ แต่หากโปรแกรมว่างเปล่าจะแสดงผลลัพธ์Hello, World!เป็น 19 ไบต์ แต่ถ้าพฤติกรรมของการเปลี่ยนแปลงโปรแกรมที่ว่างเปล่าขึ้นอยู่กับการป้อนข้อมูลก็อาจจะไม่สามารถที่จะลดลง
Caird coinheringaahing

1
@ WeijunZhou "โปรดงดการตอบรับความท้าทาย PPCG ใด ๆ ที่มีอยู่โดยใช้ภาษานี้อย่างน้อยก็จนกว่าความท้าทายจะจบ"
caird coinheringaahing

1
@LyricLy อนุญาตให้สร้างไวยากรณ์ (เช่นforลูป) และสนับสนุนให้เพิ่ม
caird coinheringaahing

คำตอบ:


3

3. คะแนน: 2938 2583 2532 (-51)

ล่ามใหม่ที่นี่

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

โซลูชั่น

1. "สวัสดีโลก!" - 17 ไบต์ (-3)

#"Hello, World!"a

5. ร้องเพลงสุขสันต์วันเกิดให้กับภาษาโปรแกรมที่คุณโปรดปราน - 95 ไบต์ (-3)

#"Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear Bugle
Happy Birthday to You"a

6. เราไม่มีคนแปลกหน้าในการตีกอล์ฟคุณรู้กฎดังนั้นฉัน - 1884 ไบต์ (-3)

#"We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

We've known each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it
And if you ask me how I'm feeling
Don't tell me you're too blind to see

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

(Ooh, give you up)
(Ooh, give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)

We've know each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it

I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you"a

16. อบชิ้น Pi - 149 ไบต์ (-3)

#"()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|"a

20. คุณเล่นกอล์ฟเพื่อความดี! - 23 ไบต์ (-39)

$"R34RdR36Ra"R34RdR36Ra

เพิ่มคุณสมบัติภาษา

  • a

    • ทั้งหมด: พิมพ์ทั้งรุ่นเป็นข้อความเช่น#"Hello, World!"aภาพพิมพ์Hello, World!
  • d

    • Stack / Deque: กดสแต็คที่ด้านบนของตัวเอง

8

2. คะแนน: 2938 2583

ล่ามการแก้ไขเป็นที่นี่ใน TIO

สตริงตัวอักษรเป็นส่วนที่ชัดเจนที่สุดในภาษาส่วนใหญ่เพื่อต่อสู้กับท้าทายที่

โซลูชั่น

1. "สวัสดีโลก!" - 20 ไบต์ (-28)

#"Hello, World!"[o>]

ท้าทายที่ใด ๆสามารถทำให้เสร็จได้โดยใช้โครงสร้าง#"<string>"[o>]ที่ส่งออกสตริงที่กำหนดจนกว่าจะถึง 0 หลังจากถึงสตริง

2. 1, 2, Fizz, 4, Buzz - 419 64 ไบต์ (-1332)

$1[1+1s:3s%{}"zziF"oooos;0s]:5s%{}"zzuB"oooos;0s]s{:O}]10o:100-]

ขอบคุณ @ user202729 สำหรับการตีกอล์ฟที่ยอดเยี่ยมในครั้งนี้

3. สร้างจำนวน 2014 โดยไม่มีตัวเลขใด ๆ ในซอร์สโค้ดของคุณ - 9 ไบต์ (-4)

#"ĒĎ"[O>]

ใช้สองตัวอักษร 20 และ 14 ใน Bugle codepoints

4. Hello World ที่สับสน - 19 ไบต์ (-153)

#"Ifmmp!Xpsme"[-o>]

ตรงกับกฎ # 1 (ไม่ใช่HLWDhlwd) และ # 3 (ไม่ใช่27)

5. ร้องเพลงสุขสันต์วันเกิดให้เป็นภาษาที่คุณโปรดปราน - 98 ไบต์ (-230)

#"Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear Bugle
Happy Birthday to You"[o>]

6. เราไม่มีคนแปลกหน้าในการตีกอล์ฟคุณรู้กฎและดังนั้นฉัน - 1887 ไบต์ (-5006)

#"We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

We've known each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it
And if you ask me how I'm feeling
Don't tell me you're too blind to see

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

(Ooh, give you up)
(Ooh, give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)

We've know each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it

I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you"[o>]

16. อบ Pi หนึ่งชิ้น - 149 ไบต์ (-290)

#"()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
 \::\433832|
  \::\79502|
   \::\8841|
    \::\971|
     \::\69|
      \::\3|
       \__\|"[o>]

20. คุณเล่นกอล์ฟเพื่อความดี! - 62 ไบต์ (-12)

#"[>]<o-o+[<]>[o>]<-o;<[<]>[o>]#"[>]<o-o+[<]>[o>]<-o;<[<]>[o>]

เพิ่มคุณสมบัติภาษา

  • "...": ตัวอักษรสตริง
    • Stack / Deque: กดปุ่ม Codle ของแต่ละถ่านไปที่ด้านบน / ด้านหน้าของ stack / deque
    • เทป / กริด: เขียนจุดรวมตัว Bugle ของอักขระแต่ละตัวลงบนเทป / กริดทางด้านขวาเริ่มต้นจากเซลล์ปัจจุบัน ห้ามเลื่อนเคอร์เซอร์
    • \n จัดการเหมือนตัวอักษรอื่น ๆ
    • ไม่มีอักขระที่หลบหนีในตอนนี้ดังนั้นคุณจึงไม่สามารถเขียน"(34) ไปยังหน่วยความจำโดยใช้คำสั่งนี้ อย่างน้อยก็ในตอนนี้เนื่องจากของทั้งหมดที่กล่าวถึงในที่นี้ไม่ได้มี"อยู่ในผลลัพธ์

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


มีการเพิ่มเติมหลายอย่างที่ฉันหวังว่าทุกคนทำได้มากกว่าแค่เพิ่มบิวอินสำหรับความท้าทายเฉพาะ +1
caird coinheringaahing

@ user202729 มันอาจเป็นฉันที่แนะนำข้อผิดพลาด; ขอบคุณสำหรับการแก้ไขและโซลูชั่น FizzBuzz
Bubbler

3

1. คะแนน: 9638

ล่ามฐานสามารถพบได้ที่นี่และส่งที่นี่ มันค่อนข้างยาวดังนั้นฉันจึงรวมมันไว้ใน GitHub แทนที่จะโพสต์ส่วนใหญ่

โซลูชั่น

โซลูชันทั้งหมดเหล่านี้เป็นโปรแกรม Unicode ที่รันด้วย-uแฟล็กบรรทัดคำสั่ง แต่คะแนนจะนับว่าถูกเข้ารหัสด้วยหน้ารหัสของ Bugle

1. "สวัสดีโลก!" - 48 ไบต์

$72o101o108o108o111o44o32o87o111o114o108o100o33o

เพียงกดแล้วเอาท์พุทรหัสอักขระของอักขระแต่ละตัวในสตริง

2. 1, 2, Fizz, 4, Buzz - 1396 ไบต์

$49o10o50o10o70o105o122o122o10o52o10o66o117o122o122o10o70o105o122o122o10o55o10o56o10o70o105o122o122o10o66o117o122o122o10o49o49o10o70o105o122o122o10o49o51o10o49o52o10o70o105o122o122o66o117o122o122o10o49o54o10o49o55o10o70o105o122o122o10o49o57o10o66o117o122o122o10o70o105o122o122o10o50o50o10o50o51o10o70o105o122o122o10o66o117o122o122o10o50o54o10o70o105o122o122o10o50o56o10o50o57o10o70o105o122o122o66o117o122o122o10o51o49o10o51o50o10o70o105o122o122o10o51o52o10o66o117o122o122o10o70o105o122o122o10o51o55o10o51o56o10o70o105o122o122o10o66o117o122o122o10o52o49o10o70o105o122o122o10o52o51o10o52o52o10o70o105o122o122o66o117o122o122o10o52o54o10o52o55o10o70o105o122o122o10o52o57o10o66o117o122o122o10o70o105o122o122o10o53o50o10o53o51o10o70o105o122o122o10o66o117o122o122o10o53o54o10o70o105o122o122o10o53o56o10o53o57o10o70o105o122o122o66o117o122o122o10o54o49o10o54o50o10o70o105o122o122o10o54o52o10o66o117o122o122o10o70o105o122o122o10o54o55o10o54o56o10o70o105o122o122o10o66o117o122o122o10o55o49o10o70o105o122o122o10o55o51o10o55o52o10o70o105o122o122o66o117o122o122o10o55o54o10o55o55o10o70o105o122o122o10o55o57o10o66o117o122o122o10o70o105o122o122o10o56o50o10o56o51o10o70o105o122o122o10o66o117o122o122o10o56o54o10o70o105o122o122o10o56o56o10o56o57o10o70o105o122o122o66o117o122o122o10o57o49o10o57o50o10o70o105o122o122o10o57o52o10o66o117o122o122o10o70o105o122o122o10o57o55o10o57o56o10o70o105o122o122o10o66o117o122o122o

เทคนิคเดียวกับ Hello, World! ตัวอย่าง

3. สร้างจำนวน 2014 โดยไม่มีตัวเลขใด ๆ ในซอร์สโค้ดของคุณ - 13 ไบต์

#++O--O+O+++O

#ใช้เทป+เพิ่มเซลล์Oส่งออกเป็นจำนวนเต็มและ-ลด

4. Hello World ที่ยุ่งเหยิง - 172 ไบต์

#+++++++++[>++++++++<-]>o<++++[>+++++++<-]>+o+++++++oo+++o>++++[>+++++++++++<-]>o------------o[-]++++++++[>+++++++++++<-]>-o<<<o+++o------o--------o[-]+++[>+++++++++++<-]>o

ใช้ความคล้ายคลึงกันโดยธรรมชาติกับสมอง ตรงกับกฎ # 1 และ # 3

5. ร้องเพลงสุขสันต์วันเกิดให้กับภาษาการเขียนโปรแกรมที่คุณชื่นชอบ - 328 ไบต์

$72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o68o101o97o114o32o66o117o103o108o101o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o

ท้าทายที่ของทั้งหมดมีโครงสร้างแบบนี้อยู่ในขณะนี้

6. เราไม่ได้เป็นคนแปลกหน้าในการตีกอล์ฟคุณรู้กฎและดังนั้นฉัน - 6893 ไบต์

$87o101o39o114o101o32o110o111o32o115o116o114o97o110o103o101o114o115o32o116o111o32o108o111o118o101o10o89o111o117o32o107o110o111o119o32o116o104o101o32o114o117o108o101o115o32o97o110o100o32o115o111o32o100o111o32o73o10o65o32o102o117o108o108o32o99o111o109o109o105o116o109o101o110o116o39o115o32o119o104o97o116o32o73o39o109o32o116o104o105o110o107o105o110o103o32o111o102o10o89o111o117o32o119o111o117o108o100o110o39o116o32o103o101o116o32o116o104o105o115o32o102o114o111o109o32o97o110o121o32o111o116o104o101o114o32o103o117o121o10o73o32o106o117o115o116o32o119o97o110o110o97o32o116o101o108o108o32o121o111o117o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o71o111o116o116o97o32o109o97o107o101o32o121o111o117o32o117o110o100o101o114o115o116o97o110o100o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o87o101o39o118o101o32o107o110o111o119o110o32o101o97o99o104o32o111o116o104o101o114o32o102o111o114o32o115o111o32o108o111o110o103o10o89o111o117o114o32o104o101o97o114o116o39o115o32o98o101o101o110o32o97o99o104o105o110o103o32o98o117o116o10o89o111o117o39o114o101o32o116o111o111o32o115o104o121o32o116o111o32o115o97o121o32o105o116o10o73o110o115o105o100o101o32o119o101o32o98o111o116o104o32o107o110o111o119o32o119o104o97o116o39o115o32o98o101o101o110o32o103o111o105o110o103o32o111o110o10o87o101o32o107o110o111o119o32o116o104o101o32o103o97o109o101o32o97o110o100o32o119o101o39o114o101o32o103o111o110o110o97o32o112o108o97o121o32o105o116o10o65o110o100o32o105o102o32o121o111o117o32o97o115o107o32o109o101o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o68o111o110o39o116o32o116o101o108o108o32o109o101o32o121o111o117o39o114o101o32o116o111o111o32o98o108o105o110o100o32o116o111o32o115o101o101o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o40o79o111o104o44o32o103o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o44o32o103o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o41o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o44o32o110o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o10o40o71o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o41o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o44o32o110o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o10o40o71o105o118o101o32o121o111o117o32o117o112o41o10o32o10o87o101o39o118o101o32o107o110o111o119o32o101o97o99o104o32o111o116o104o101o114o32o102o111o114o32o115o111o32o108o111o110o103o10o89o111o117o114o32o104o101o97o114o116o39o115o32o98o101o101o110o32o97o99o104o105o110o103o32o98o117o116o10o89o111o117o39o114o101o32o116o111o111o32o115o104o121o32o116o111o32o115o97o121o32o105o116o10o73o110o115o105o100o101o32o119o101o32o98o111o116o104o32o107o110o111o119o32o119o104o97o116o39o115o32o98o101o101o110o32o103o111o105o110o103o32o111o110o10o87o101o32o107o110o111o119o32o116o104o101o32o103o97o109o101o32o97o110o100o32o119o101o39o114o101o32o103o111o110o110o97o32o112o108o97o121o32o105o116o10o32o10o73o32o106o117o115o116o32o119o97o110o110o97o32o116o101o108o108o32o121o111o117o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o71o111o116o116o97o32o109o97o107o101o32o121o111o117o32o117o110o100o101o114o115o116o97o110o100o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o

7. เอาท์พุทเครื่องหมาย - 18 ไบต์

$?:Zs0=0s-s:1s-++O

ตรวจสอบว่าการป้อนข้อมูลมากกว่าศูนย์น้อยกว่าศูนย์ (เปลี่ยนเป็นผลผลิต-1แทน1) และเท่ากับศูนย์ก่อนที่จะรับผลรวมของพวกเขา

8. การคาดคะเน Collatz (OEIS A006577) - 36 ไบต์

#$?:1-[:2s%{3×1+}2s÷]:1s-₀+₁]₀O

วิธีนี้จะทำการวนซ้ำบนสแต็ก แต่สลับไปที่เทปเพื่อเพิ่มจำนวนแต่ละการวนซ้ำ

9. อาร์เรย์ของความท้าทาย # 1: อาร์เรย์ที่สลับกัน - 35 ไบต์

#?>?>+>?[[<+<<->>>-]+<[-<<]>[>]?]<O

นี่เป็นการแก้ไขเล็กน้อยของคำตอบของMitch Schwartzต่อความท้าทายที่มีอยู่ไปโหวตว่า!

10. ฉันเป็นอาร์เรย์ที่ไม่สำคัญหรือไม่? - 46 ไบต์

$1 0-?…1[s:sr-:Z1s-2×1+×1s-Z1-L2s-×]1+Z1-O

เครดิตทั้งหมดไปที่Emignaสำหรับการทำสิ่งนี้

11. ตัวเลขนี้สำคัญหรือไม่? - 31 ไบต์

$?:1s-:[:1s-:];L1s[×L2s-]:×%O

ใช้ทฤษฎีบทของวิลสันและคำนวณ (n-1)!² % n

12. ฉันเป็น palindrome คุณเป็น - 13 ไบต์

$?:R=:O:=R:?$

ในช่วงครึ่งแรกของโปรแกรมที่ถึงOกำหนดสแต็คขึ้นเป็น[x, x]ที่xเป็นทั้งหรือTrue ดึงค่าสูงสุดและแสดงผลออกมา ส่วนที่เหลือของโปรแกรมเพียงตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดเกิดขึ้น โชคดีที่เมื่อพบจุดสิ้นสุดของไฟล์มันก็แค่กด(สตริงว่าง)FalseO?''

13. รวมตัวเลขตามมาตรฐานใน - 19 ไบต์

$?:[?:];L0s[+L1s-]O

นี้สามารถแบ่งออกเป็นสองส่วนและ?:[?:]; L0s[+L1s-]ส่วนแรกรวบรวมอินพุตทั้งหมดไปยังสแต็ก ส่วนที่สองผลักดันผลรวมขององค์ประกอบสองอันดับแรกในขณะที่ความยาวมากกว่า 1

14. ค้นหาปัจจัย - 25 ไบต์

$?:[:1s-:];L1s-Z[×L1s-]O

สิ่งนี้มีโครงสร้างที่คล้ายกับโปรแกรมผลรวม แต่แทนที่จะดันอินพุต ltiple [:1s-:];จะผลักช่วงจาก1 .. nสแต็กไปและ[×L1s-]ใช้ผลิตภัณฑ์

15. รหัสที่สั้นที่สุดในการสร้างเอาต์พุตไม่สิ้นสุด - 5 ไบต์

#+[O]

ใช้ a while loop โดยที่1อยู่ใต้ตัวชี้อย่างต่อเนื่อง ผลผลิต1ตลอดไป

16. อบชิ้น Pi - 439 bytes

$40o41o40o41o40o41o40o41o40o41o40o41o10o124o92o51o46o49o52o49o53o57o50o54o124o10o124o58o92o53o51o53o56o57o55o57o51o124o10o92o58o58o92o50o51o56o52o54o50o54o124o10o32o92o58o58o92o52o51o51o56o51o50o124o10o32o32o92o58o58o92o55o57o53o48o50o124o10o32o32o32o92o58o58o92o56o56o52o49o124o10o32o32o32o32o92o58o58o92o57o55o49o124o10o32o32o32o32o32o92o58o58o92o54o57o124o10o32o32o32o32o32o32o92o58o58o92o51o124o10o32o32o32o32o32o32o32o92o95o95o92o124o

17. ค้นหาจำนวนที่เล็กที่สุดที่ไม่ได้แบ่ง N

$?:1:[:rs%0=s1+srr:Rs]1s-O

0ส่วนนี้ใช้การพิจารณาคดียุติเมื่อผลของโมดูโลที่ไม่เท่ากับ

18. นี่เป็นคู่หรือคี่ - 5 ไบต์

$2?%O

โมดูโล่แบบง่ายโดย 2

19. เอาท์พุทที่มีความยาวเท่ากับรหัส - 16 ไบต์

$16:[32+:o33s-:]

ส่งออกอักขระ ASCII ที่พิมพ์ได้ 16 ตัวแรกในสิ่งที่ตรงกันข้าม: 0/.-,+*)('&%$#"!

20. คุณเล่นกอล์ฟเพื่อความดี!

$1[93, 76, 111, 91, 49, 59, 104, 48, 79, 49, 111, 54, 51, 0]
36o1O0h;1[oL]

เครดิตไปที่user202729สำหรับการทำสิ่งนี้


ข้อกำหนดภาษา

การเรียกร้อง

bugle.pyขณะนี้ใช้ชุดของธงแล้วชื่อไฟล์ / รหัสที่จะดำเนินการ ณ ตอนนี้ยังมีแฟล็กบรรทัดคำสั่ง 4 รายการ:

  • -f/ --fileระบุรหัสที่จะอ่านจากไฟล์
  • -c/ --cmd/ --cmdlineระบุรหัสที่ให้มาผ่านทางบรรทัดคำสั่ง

    -cและ-fไม่สามารถใช้ในการโทรเดียวกัน

  • -u/ --unicodeบอกให้ล่ามในการอ่านรหัสด้วยการเข้ารหัส Unicode ค่าเริ่มต้นคือการใช้การเข้ารหัสของ Bugle ด้านล่าง

  • -l/ --lengthoutputs ความยาวของไฟล์ในหน่วยไบต์ถึง STDERR หลังจากการดำเนินการ

การโทรต่อไปนี้ถูกใช้เพื่อทดสอบการส่งด้านบน

$ python bugle.py -f -u [file]

รหัสหน้า

Bugle ใช้ตัวอักษร 512 ตัวในหน้ารหัส ห้ามใช้0xFFอักขระสำหรับคำสั่งเนื่องจากใช้เพื่อระบุว่าค่าฐานสิบหกถัดไปในเพื่อสร้างดัชนีในครึ่งหลังของหน้ารหัส ตัวละครที่ใช้คือ:

ÀÁÂÄÆÃÅĀĄ\t\nĆČÇĎÐ
ÈÉÊËĒĖĚĘÌÍÎÏĪĮĹĽ
 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~¶
ŁŃŇÑŊÒÓÔÖŒÕØŌŔŘŚ
ŠŤŦÙÚÛÜŮŪŴÝŶŸŹŽŻ
àáâäæãåāąćčçďðèé
êëēėěęìíîïīįĺľłń
ňñŋòóôöœøōõŕřßśš
ťŧùúûüůūŵýŷÿźžż◊
ΑΆΒΓΔΕΈΖΗΉΘΙΊΚΛΜ
ΝΞΟΌΠΡΣΤΥΎΦΧΨΩΏ
αάβγδεέζηήθιίΐκλ
μνξοόπσςτυύΰφχψω
ώǴḰḾṔẂǵḱḿṕẃḂḞĠḢṀ
ȮṖṠṪẊḃḟġḣṁȯṗṡṫẋ§
ĂĞĬŎŬĴăğĭŏŭĵªº‹›
ƁƇƊƑƓƘⱮƝƤƬƲȤɓƈɗƒ
ɠɦƙɱɲƥʠɼʂƭʋȥ©®ıȷ
ЉЊЕРТЗУИОПШАСДФГ
ХЈКЛЧЋЅЏЦВБНМЂЖљ
њертзуиопшасдфгх
јклчћѕџцвбнмђжÞþ
†∂∆≈≠√∈∉∌∋∩∪¬∧∨⊕
¤₽¥£¢€₩‰¿¡⁇⁈‼⁉‽⸘
…°•”“„’‘≤«·»≥ᴇ∞¦
×⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾
÷₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎

หรือเห็นมันในรูปแบบตาราง โปรดทราบว่า\tและ\nแสดงแท็บและบรรทัดใหม่ตามลำดับ นอกจากนี้โปรดทราบว่าบรรทัดที่ 16 ลงท้ายด้วยอักขระที่ไม่สามารถพิมพ์ได้: และอาจไม่ปรากฏในเบราว์เซอร์ทั้งหมด

หน่วยความจำ

ล่ามในปัจจุบันมีหน่วยความจำ 5 รุ่นในตัว หน่วยความจำแต่ละรุ่นต้องใช้อักขระเพื่อบอกให้ล่ามเพื่อเริ่มใช้โมเดลนั้น:

  • สแต็ค ( $): สแต็กมาตรฐานซึ่งรองรับค่าที่ถูกผลัก, เด้ง ฯลฯ
  • Infinite tape ( #): เทป, à la brainfuck, ซึ่งตอนแรกเป็นเพียง0s
  • Infinite grid ( G): กริด 2d, อนันต์ทั้งสองทิศทาง, ประกอบด้วย0s เท่านั้น
  • Deque ( D): dequeตามที่collectionsโมดูลดำเนินการ
  • สมัครสมาชิก ( S): ค่าเดียวซึ่งสามารถใช้ในการจัดเก็บหนึ่งค่า

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

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

  • เทป ( À): ใช้สองค่า - ขนาด ( int) และการตัด ( bool)
  • เทป ( Á): ใช้หนึ่งค่า - ขนาด (int ) ห่อที่ส่วนท้ายของเทป
  • เทป ( Â): ใช้หนึ่งค่า - ขนาด ( int) ไม่ได้ห่อตอนท้าย
  • ตาราง ( Ǵ): รับ 4 ค่า - ขนาด x ( int), ขนาด y ( int), x wrap ( bool) และ y wrap ( bool)

ประเภทหน่วยความจำที่ใช้สามารถเปลี่ยนแปลงได้ในระหว่างโปรแกรมโดยการใช้งาน₀₁₂₃₄₅₆₇₈₉ซึ่งเข้าถึงnประเภทหน่วยความจำที่ใช้ดัชนี 0 ( เป็นชนิดแรกคือชนิดที่สองเป็นต้น) แต่ปัจจุบันไม่สามารถสลับค่าระหว่างหน่วยความจำประเภทต่าง ๆ ได้

การแตกแขนง

จนถึงขณะนี้ Bugle มีคำสั่งการแยกสองคำสั่งทั้งสองสิ้นสุดด้วย]อักขระ:

  • ในขณะที่ ([ ): สไตล์ brainfuck ในขณะที่ลูป ป๊อปอัพค่าเหล่านี้จากกอง / deque หากมีการใช้งานหรือเข้าถึงเซลล์ภายใต้ตัวชี้ในเทป / ตาราง

    ตัวอย่าง: #?[-O]นับจากอินพุตลงถึง0

  • หาก / else ( {และ}) การดำเนินการเดียวในขณะที่ลูป หาก popped }ค่าเป็นเท็จแล้วถ้าประโยคจะข้ามไปที่ข้ออื่นแยกจากกันโดย พวกเขาทำงานในลักษณะเดียวกันกับในขณะที่ลูปเกี่ยวกับการเข้าถึงหน่วยความจำ

    ตัวอย่าง: {0}1]เป็นเกทแบบ NOT แบบลอจิคัล

ฟังก์ชันในตัว

จำนวนตัวเลขถูกตีความว่าเป็นจำนวนเต็มและเพียงแค่ส่ง / เขียนไปยังโมเดลหน่วยความจำปัจจุบันตามที่เป็นอยู่

เห็นได้ชัดว่าฉันได้ติดตั้ง Bugle ด้วยฟังก์ชั่นพื้นฐานบางอย่างที่ฉันทำได้เพื่อให้ผู้อื่นเพิ่มมากขึ้นเมื่อความคืบหน้าของโซ่ คำสั่งฐานมีดังนี้:

  • +

    • Stack / Deque: เพิ่มค่าสองอันดับแรก
    • เทป / กริด: เพิ่มเซลล์ปัจจุบัน
  • -

    • Stack / Deque: ลบค่าสองอันดับแรก
    • เทป / กริด: ลดเซลล์ปัจจุบัน
  • %

    • Stack / Deque: Modulo ค่าสองอันดับแรก
  • :

    • Stack / Deque: ทำซ้ำค่าสูงสุด
  • ;

    • Stack / Deque: แสดงค่าสูงสุด
    • เทป / กริด: Zero เซลล์ปัจจุบัน
  • <

    • เทป / ตาราง: เลื่อนไปทางซ้ายหนึ่งเซลล์
  • =

    • สแต็ค: ค่าสองอันดับแรกเท่ากันหรือไม่
    • ตาราง: เลื่อนลงหนึ่งเซลล์
  • >

    • เทป / ตาราง: เลื่อนไปทางขวาหนึ่งเซลล์
  • ?

    • Stack / Deque: ประเมินบรรทัดอินพุต
    • เทป / ตาราง: ใช้อักขระของอินพุต
  • L

    • Stack / Deque: กดความยาวของ stack / deque
  • O

    • ทั้งหมด: ส่งออกค่าปัจจุบัน
  • R

    • สแต็ค: กลับองค์ประกอบด้านบนถ้าเป็นไปได้มิฉะนั้นกลับสแต็ค
  • Z

    • สแต็ค: องค์ประกอบยอดนิยมเป็นบวกหรือไม่
  • ^

    • กริด: เลื่อนขึ้นหนึ่งเซลล์
  • h

    • ทั้งหมด: พิมพ์รุ่นหน่วยความจำเต็ม
  • o

    • ทั้งหมด: พิมพ์ค่าปัจจุบันเป็นอักขระ
  • r

    • สแต็ค: หมุนค่า 3 อันดับแรก
    • Deque: หมุนnครั้งdeque โดยที่nเป็นค่าสูงสุด
  • s

    • Stack / Deque: สลับสองค่าสูงสุด
    • สแต็ค: แบ่งค่าสูงสุด
  • ×

    • สแต็ค: คูณสองค่าสูงสุด
    • ตาราง: เขียนค่าตัวชี้ไปยังเซลล์ปัจจุบัน
  • ÷

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