พิสูจน์แล้วว่าเหมาะสมที่สุด!
((([()][()][()])))
ลองออนไลน์!
คำอธิบาย
Brain-Flak, Brain-Flueue, Miniflak และFλak
([()][()][()]) Push -3
( ) Copy
( ) Copy
ภาพพิมพ์นี้:
-3
-3
-3
(มีบรรทัดใหม่ต่อท้าย)
Brain-Flak Classic
Brain-Flak Classic เป็นเวอร์ชั่นดั้งเดิมของ Brain-Flak และมีความแตกต่างที่สำคัญบางอย่างจาก Brain-Flak ที่ทันสมัย ใน BFC [...]
พิมพ์เนื้อหาของมันมากกว่าที่จะปฏิเสธมัน
[()] Print 1
[()] Print 1
[()] Print 1
( ) Push 3
( ) Push 3
( ) Push 3
ในตอนท้ายของการดำเนินการเนื้อหาของกอง ( 3 3 3
) จะถูกพิมพ์
ภาพพิมพ์นี้:
1
1
1
3
3
3
(มีบรรทัดใหม่ต่อท้าย)
Flakcats
Flakcats นั้นค่อนข้างแตกต่างจาก Flakcats อีก 4 อันและฉันประหลาดใจที่มันใช้งานได้ใน Flakcats ตัวดำเนินการสามตัวที่นี่เกือบจะเหมือนกับตัวที่ใช้กับ Brain-Flak
ความแตกต่างที่สำคัญในโปรแกรมนี้โดยเฉพาะระหว่าง Flakcats คือตัว(...)
ดำเนินการซึ่งใน Flakcats เทียบเท่ากับ([{}]...)
ใน Brain-Flak อย่างไรก็ตามสิ่งนี้ไม่ได้สร้างความแตกต่างให้กับเราเพราะมันเลือกเลขศูนย์และดำเนินการในลักษณะเดียวกับที่ Brain-Flak ทำ
นี่คือโปรแกรมที่รวบรวมเป็น Brian-Flak:
([{}]([{}]([{}][()][()][()])))
ภาพพิมพ์นี้:
-3
-3
-3
(มีบรรทัดใหม่ต่อท้าย)
หลักฐานการเพิ่มประสิทธิภาพในBrain-Flakและ Miniflak
นี่ไม่ใช่ข้อพิสูจน์ที่เป็นทางการ แต่เป็นข้อพิสูจน์ที่ไม่เป็นทางการที่จะต้องมีการขยายเพื่อให้มีความเข้มงวดมากขึ้น
เนื่องจากข้อ จำกัด ที่โปรแกรม Brain-Flak ต้องเป็นแบบสตริงที่สมดุลและความยาวของโปรแกรมต้องเป็นผลคูณของ 3 การส่งที่ถูกต้องใด ๆ จะต้องเป็นผลคูณของความยาว 6 ซึ่งหมายความว่าวิธีแก้ปัญหาใด ๆ ที่น้อยกว่า 18 จะต้องมีความยาว 12
เนื่องจากการขึ้นบรรทัดใหม่ของเอาต์พุตความสูงสุดท้ายของสแต็กต้องเป็นทวีคูณของสามหรือเราจะทำลายข้อ จำกัด ของเอาต์พุต
การส่งความยาว 12 ที่ถูกต้องใด ๆ จะต้องมีเครื่องหมายวงเล็บ 2 ประเภท (การมีน้อยกว่าจะทำให้ข้อ จำกัด เกี่ยวกับจำนวนของอักขระที่แตกต่างกันและมากกว่านั้นจะมีความหมายมากกว่า 12 อักขระ) เนื่องจากโปรแกรมสร้างเอาต์พุตมันจะต้องมีการพุช
สิ่งนี้ทำให้เราเลือกวงเล็บปีกกาอื่น ตัวเลือกคือ:
<...>/<>
สิ่งนี้ล้มเหลวเนื่องจากเราจำเป็นต้องสร้าง "คุณค่า" เพื่อสร้างหมายเลขใด ๆ นอกเหนือจากศูนย์เราต้องยอมแพ้()
เพื่อสร้างหมายเลขหนึ่งซึ่งทำให้ไม่สามารถผลักดันได้มากกว่าสองครั้ง
[...]/[]
สิ่งนี้ล้มเหลวด้วยเหตุผลเดียวกันกับความล้มเหลวครั้งสุดท้าย เครื่องมือจัดฟันแบบเหลี่ยมนั้นแย่มากในการสร้างคุณค่า []
monad สามารถสร้างมูลค่า แต่เราจำเป็นต้องผลักดันตัวเลขแรกและเราก็ไม่ได้มี parens เหลือพอที่จะผลักดันสามครั้ง
{...}/{}
อันนี้สัญญาว่าเราสามารถสร้างลูปและใช้อันใดอันหนึ่ง()
เพื่อผลักดันหลาย ๆ ครั้ง แต่ก็เป็นไปไม่ได้
เพื่อให้ลูปสิ้นสุดต้องมีศูนย์ในสแต็คในบางจุดและเพื่อให้เรามีเอาต์พุตที่ถูกต้องเราต้องมีสิ่งอื่นที่ไม่ใช่ศูนย์ในสแต็คที่ส่วนท้ายของโปรแกรม เนื่องจากเรามีค่า[]
มิได้<>
ศูนย์ในตอนท้ายของวงต้องเป็นศูนย์โดยปริยายจากด้านล่างของสแต็ค ซึ่งหมายความว่าการวนซ้ำไม่สามารถเพิ่มหมายเลขใหม่ใด ๆ ลงในสแต็กทำให้ไร้ประโยชน์
เนื่องจากไม่มีตัวเลือกวงเล็บปีกกาสามารถสร้างโปรแกรมที่มีความยาว 12 จึงไม่มี
เนื่องจาก Miniflak เป็นส่วนหนึ่งของ Brain-Flak โปรแกรม Miniflak ที่สั้นกว่าก็จะเป็นโปรแกรม Brain-Flak ที่สั้นกว่าดังนั้นจึงไม่มีอยู่
หลักฐานการเพิ่มประสิทธิภาพในสมอง -Lueue
Brain-Flueue เป็นภาษาตลกที่สร้างจาก Brain-Flak ทั้งสองเหมือนล่ามของพวกเขาเหมือนกันทุกที่ แต่สองบรรทัด ความแตกต่างระหว่างสองอย่างนี้คือ Brain-Flueue เก็บข้อมูลไว้ในคิวขณะที่ Brain-Flak จัดเก็บข้อมูลไว้ในกอง
ในการเริ่มต้นเรามีข้อ จำกัด ขนาดโปรแกรมที่สร้างขึ้นโดย Brain-Flak ดังนั้นเราจึงกำลังมองหาโปรแกรมขนาด 12 นอกจากนี้เราจะต้องมี(...)
เพื่อสร้างเอาต์พุตและคู่อื่น <>
และ[]
คู่ที่ไม่ได้ทำงานในสมอง Flueue ด้วยเหตุผลเดียวกันแน่นอนพวกเขาไม่ได้ทำงานในสมอง Flak
((())){{{}}}
ตอนนี้เรารู้ว่าโปรแกรมของเราจะต้องประกอบด้วยตัวอักษร
ผ่านวิธีการเดียวกันกับที่ใช้ในหลักฐานก่อนหน้านี้เราสามารถแสดงให้เห็นว่าต้องมีการวนซ้ำในโปรแกรมสุดท้าย
ตอนนี้ที่นี่เป็นที่ที่การพิสูจน์แตกต่างกันเนื่องจาก Brain-Flueue ทำงานข้ามคิวแทนที่จะเป็นกองโปรแกรมสามารถออกจากลูปด้วยค่าในคิว
เพื่อออกจากลูปเราจะต้องมีศูนย์ในคิว (หรือคิวที่ว่างเปล่า แต่ถ้าคิวว่างเปล่าเราได้รับปัญหาเดียวกันกับ Brain-Flak) นี่จะหมายความว่าเราจะต้องเปิดโปรแกรมของเราด้วย({})
เพื่อสร้าง ศูนย์. เราจะต้องกดภายในวงเพื่อผลักดันจำนวนรายการที่จำเป็นไปยังคิว เราจะต้องกดตัวเลขที่ไม่ใช่ศูนย์ก่อนหน้าลูปเพื่อให้เราสามารถใส่ลูปได้เลย (())
นี้จะเสียค่าใช้จ่ายเราได้ที่น้อยที่สุด ตอนนี้เราใช้ parens มากกว่าที่เรามี
ดังนั้นจึงไม่มีโปรแกรม Brain-Flueue ที่จะทำงานที่ขนาด 12 ไบต์และโปรแกรมของเราก็เหมาะสมที่สุด
วิธีแก้ปัญหาต่อไปนี้ดีที่สุดใน Flakcats และ Brain-Flak Classic
((([][][])))
คำอธิบาย
[][][] -3
((( ))) push 3 times
ทางเลือก 24 โซลูชั่น Brain-Flak
(<((<((<(())>)())>)())>)
ลองออนไลน์!
((<((<((<>)())>)())>)())
ลองออนไลน์!
((((((()()()){}){}){})))
ลองออนไลน์!