Fueue , 423 ไบต์
Fueue เป็น esolang แบบอิงคิวซึ่งโปรแกรมที่รันอยู่คือคิว
)$$4255%%1(~):[)$$24%%0:<[~:)~)]~[$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]](H-):~:[)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:](106328966328112328136317639696111819119696281563139628116326221310190661962811611211962861109696289611619628116111612896281115421063633063961111116163963011632811111819159628151213262722151522061361613096119619190661966311961128966130281807072220060611612811961019070723232022060611
ลองออนไลน์!
มันทำงานอย่างไร
คำอธิบายนี้อาจจะใช่หรือไม่ใช่ว่าจะพ้นมือ ในทางกลับกันผมไม่ทราบวิธีที่จะอธิบายมันมากสั้นในทางที่ฉันหวังว่าผู้คนสามารถทำตาม
แผ่นโกง Fueue
ดูบทความ esolang wikiสำหรับรายละเอียดรวมถึงฟีเจอร์บางอย่างที่ไม่ได้ใช้ในโปรแกรมนี้
ไวยากรณ์การติดตามการดำเนินการ
ช่องว่างเป็นทางเลือกใน Fueue ยกเว้นระหว่างตัวเลข ในการติดตามการดำเนินการต่อไปนี้จะถูกใช้เพื่อแนะนำโครงสร้างโปรแกรมโดยเฉพาะ:
- เมื่อฟังก์ชั่นดำเนินการมันและข้อโต้แย้งของมันจะถูกตั้งค่าออกจากองค์ประกอบโดยรอบที่มีช่องว่าง หากมีข้อโต้แย้งบางอย่างที่ซับซ้อนอาจมีช่องว่างระหว่างพวกเขาเช่นกัน
- ร่องรอยการประมวลผลจำนวนมากถูกแบ่งออกเป็น "ดีเลย์ช้า" ทางด้านซ้ายแยกจากส่วนหนึ่งไปทางขวาซึ่งทำการจัดการข้อมูลที่สำคัญ ดูหัวข้อถัดไป
วงเล็บปีกกา{}
(ไม่ใช้ใน Fueue) ใช้ในการติดตามเพื่อแสดงผลลัพธ์จำนวนเต็มของนิพจน์ทางคณิตศาสตร์ ซึ่งรวมถึงตัวเลขติดลบเนื่องจาก Fueue มีเพียงตัวอักษรที่ไม่เป็นลบเท่านั้น - -
เป็นฟังก์ชันปฏิเสธ
ชื่อ metavariable ต่างๆและ...
ใช้เพื่อแสดงถึงค่าและตัวย่อ
กลยุทธ์ล่าช้า
รอบการดำเนินการรอบคิวโดยสังหรณ์ใจดัดแปลงบางส่วนของสิ่งที่ผ่าน ผลลัพธ์ของฟังก์ชั่นไม่สามารถดำเนินการได้อีกรอบจนกระทั่งรอบต่อไป ส่วนต่าง ๆ ของโปรแกรมพัฒนาอย่างมีประสิทธิภาพพร้อมกันตราบใดที่พวกเขาไม่โต้ตอบ
เป็นผลให้รหัสจำนวนมากทุ่มเทให้กับการซิงโครไนซ์โดยเฉพาะอย่างยิ่งการหน่วงเวลาการทำงานของส่วนต่าง ๆ ของโปรแกรมจนกระทั่งถึงเวลาที่เหมาะสม มีตัวเลือกมากมายสำหรับการเล่นกอล์ฟนี้ซึ่งมีแนวโน้มที่จะเปลี่ยนชิ้นส่วนเหล่านั้นให้เป็น blobs ที่อ่านไม่ได้ซึ่งสามารถเข้าใจได้โดยการติดตามวงจรการดำเนินการตามรอบ
กลยุทธ์เหล่านี้จะไม่ถูกกล่าวถึงเป็นรายบุคคลในด้านล่าง:
)[A]
หน่วงA
เวลาสำหรับรอบ (อาจเป็นวิธีที่ง่ายที่สุดและอ่านง่ายที่สุด)
~ef
สลับองค์ประกอบe
และf
การดำเนินการที่ล่าช้า (อาจเป็นอย่างน้อยที่อ่านได้ แต่มักจะสั้นที่สุดสำหรับความล่าช้าเล็กน้อย)
$1e
e
ความล่าช้าในองค์ประกอบเดียว
-
และ%
มีประโยชน์สำหรับการหน่วงเวลาตัวเลข (อันหลังสำหรับ0
และ1
.)
- เมื่อหน่วงเวลาองค์ประกอบที่เท่ากันหลายอย่างในแถว
:
หรือ$
สามารถใช้เพื่อสร้างพวกเขาจากหนึ่งเดียว
(n
ล้อมรอบn
ในวงเล็บซึ่งอาจถูกลบออกในภายหลังตามความสะดวก สิ่งนี้มีความสำคัญอย่างยิ่งสำหรับการคำนวณตัวเลขเนื่องจากตัวเลขไม่สามารถคัดลอกได้โดยไม่ใส่ในบล็อก
โครงสร้างโดยรวม
คำอธิบายที่เหลือแบ่งออกเป็นเจ็ดส่วนแต่ละส่วนของโปรแกรมที่รันอยู่ รอบที่ใหญ่กว่าซึ่งส่วนใหญ่ทำซ้ำตัวเองจะถูกเรียกว่า "การทำซ้ำ" เพื่อแยกพวกเขาออกจาก "รอบ" ของการส่งผ่านครั้งเดียวผ่านคิวทั้งหมด
นี่คือวิธีที่โปรแกรมเริ่มต้นถูกแบ่งระหว่างพวกเขา:
A: )$$4255%%1(~
B: ):[)$$24%%0:<[~:)~)]~[$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]
C:
D: (H-
E:
F:
G: ):~:[)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:](106328966328112328136317639696111819119696281563139628116326221310190661962811611211962861109696289611619628116111612896281115421063633063961111116163963011632811111819159628151213262722151522061361613096119619190661966311961128966130281807072220060611612811961019070723232022060611
ตัวเลขขนาดใหญ่ที่ส่วนท้ายของโปรแกรมเข้ารหัสส่วนที่เหลือในทางกลับกันเป็นตัวเลขสองหลักต่อตัวอักษรโดยมี 30 ลบออกจากแต่ละค่า ASCII (เช่นเช่น10
เข้ารหัส a (
.)
ในระดับที่สูงขึ้นคุณสามารถนึกถึงข้อมูลในโปรแกรมนี้ (เริ่มต้นด้วย bignum) เป็นการไหลจากขวาไปซ้าย แต่ควบคุมการไหลจากซ้ายไปขวา อย่างไรก็ตามในระดับต่ำกว่า Fueue ทำให้ยุ่งเหยิงความแตกต่างระหว่างรหัสและข้อมูลตลอดเวลา
- ส่วน G ถอดรหัส bignum เป็นตัวเลข ASCII (เช่นตัวเลข
0
เป็นจำนวนเต็ม48
) โดยแยกเลขนัยสำคัญน้อยที่สุดก่อน มันผลิตหนึ่งหลักทุก ๆ 15 รอบ
- ส่วน F ประกอบด้วยค่า ASCII หลักที่ผลิต (ภายในแต่ละบล็อก) จนกระทั่งส่วน E สามารถใช้งานได้
- ส่วน E จัดการกับตัวเลขที่ผลิตได้ครั้งละสองคู่โดยจับคู่กับบล็อกของแบบฟอร์ม
[x[y]]
และพิมพ์อักขระที่เข้ารหัสของแต่ละคู่
- ส่วน D ประกอบด้วยบล็อกซ้อนกันลึกค่อยๆสร้างขึ้นจาก
[x[y]]
บล็อกในลักษณะที่เมื่อมันมีตัวเลขทั้งหมดมันสามารถเรียกใช้เพื่อพิมพ์ทั้งหมดของพวกเขาแล้วหยุดโปรแกรมทั้งหมด
- ส่วน C จัดการการก่อสร้างของส่วน D และสร้างส่วน E อีกครั้ง
- ส่วน B จะสร้างส่วน C ใหม่เช่นเดียวกับตัวเองทุกๆ 30 รอบ
- ส่วน A นับถอยหลังจนถึงรอบการทำซ้ำครั้งสุดท้ายของส่วนอื่น ๆ จากนั้นจะยกเลิกส่วน B และเรียกใช้ส่วน D
หมวดก
ส่วน A จัดการกำหนดการสิ้นสุดของโปรแกรม ใช้เวลา 4258 รอบในการลดลงเป็นฟังก์ชั่นสลับเดียว~
ซึ่งจะทำการปรับไปยังส่วน B ที่หยุดลูปหลักและเริ่มการทำงานส่วน D แทน
)$ $4255% %1 (~
)$%%%...%% %0 [~]
)$%%%...% %1 [~]
⋮
)$ %0 [~]
) $1[~]
)[~]
~
$
ฟังก์ชั่นสร้าง 4255 ฉบับต่อไป%
ในขณะที่(
ห่อ~
ในวงเล็บ
- แต่ละรอบสุดท้าย
%
จะถูกนำมาใช้เพื่อสลับหมายเลขต่อไปนี้ระหว่างและ0
1
- เมื่อหมดแล้ว
%
s จะ$1
สร้าง 1 สำเนาของ[~]
(NOP ที่มีประสิทธิภาพ) และในรอบต่อไปจะเป็นการ)
ลบวงเล็บ
มาตรา B
มาตรา B จัดการการสร้างใหม่เช่นเดียวกับการวนซ้ำใหม่ของส่วน C ทุก ๆ 30 รอบ
) : [)$$24%%0:<[~:)~)]~[$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]
) [)$$24%%0:<[~:)~)]~[$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]] [BkB]
)$ $24% %0 :< [~:)~)] ~ [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<] [BkB]
)$ %...%%% %1 < < [~:)~)] [BkB] [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]
)$ %...%% %0 < [~:)~)[BkB]] [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]
)$ %...% %1 [~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]
⋮
) $1 [~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]
) [~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]] (1)
~:) ~)[BkB] [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]
) : [BkB] ) [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<] (2)
) [BkB] [BkB] $11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<
:
ซ้ำบล็อกขนาดใหญ่ต่อไปนี้ (สำเนาย่อว่า[BkB]
) แล้ว)
เอาวงเล็บจากสำเนาแรก
$$24%%0
ตั้งค่าการนับถอยหลังคล้ายกับที่อยู่ในส่วน A
- ในขณะที่สิ่งนี้นับถอยหลัง
:<
เปลี่ยนเป็น<<
และ~
สลับสองบล็อกโดยวางโค้ดสำหรับส่วน C ใหม่ล่าสุด
- ทั้งสอง
<
ฟังก์ชั่นบรรจุสองบล็อกสุดท้ายเข้าไปในบล็อกแรก - นี่คือการทำซ้ำในการทำซ้ำปกติ แต่จะช่วยให้~
จากส่วน A เพื่อทำงานในตอนท้าย
- (1) เมื่อการนับถอยหลังเสร็จสิ้นการ
)
ลบวงเล็บเหลี่ยมด้านนอก ถัดไป~:)
จะเปลี่ยนเป็น):
และ~)
สลับ a )
ไปยังจุดเริ่มต้นของรหัสส่วน C
- (2) ตอน B ตอนนี้กลับมาที่วัฏจักรเริ่มต้นในขณะที่ a
)
กำลังจะลบวงเล็บเพื่อเริ่มการวนซ้ำใหม่ของส่วน C
ในการทำซ้ำขั้นสุดท้าย~
ส่วนจาก A จะปรากฏที่จุด (1) ด้านบน:
~ ) [~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]] (1)
[~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]] )
การ~
สลับ)
ข้ามบล็อกและไปยังส่วน C ป้องกันไม่ให้ส่วน B กลับมาทำงานอีกครั้ง
หมวด C
ส่วน C จัดการการผสานคู่อักขระใหม่เข้ากับบล็อกของส่วน D และสร้างการวนซ้ำใหม่ของส่วน E
ด้านล่างแสดงการวนซ้ำทั่วไปด้วยx
และy
แสดงถึงรหัส ASCII ของตัวเลข ในการวนซ้ำครั้งแรกองค์ประกอบ "D" และ "E" ที่เข้ามาจะเป็นค่าเริ่มต้น[H]
และ-
แทนเนื่องจากไม่มีส่วนก่อนหน้า E ถูกเรียกใช้เพื่อสร้างคู่อักขระหลักใด ๆ
C D E
$11~ ) ~<[[+$4--498+*-:~-10)):])<~] [)))~] < [)))~[...]] [x[y]]
~~~ ~~~ ~~~ ~~) [[+$4--498+*-:~-10)):])<~] < [)))~] [)))~[...][x[y]]]
~~~ ~~~ ) ~ [[+$4--498+*-:~-10)):])<~] [)))~[)))~[...][x[y]]]]
~~~ ~ ) [)))~[....]] [[+$4--498+*-:~-10)):])<~]
~~[)))~[....]] )[[+$4--498+*-:~-10)):])<~]
[)))~[....]] ~[+$4--498+*-:~-10)):])<~
- นี่ใช้วิธีการซิงโครไนซ์ที่แตกต่างซึ่งฉันค้นพบสำหรับคำตอบนี้ เมื่อคุณมีฟังก์ชั่นการสลับหลายครั้ง
~
ในหนึ่งแถวแถวนั้นจะลดลงเหลือประมาณ 2/3 ในแต่ละรอบ (เพราะหนึ่งครั้งจะ~
สลับสองครั้งหลังจากนั้น) แต่บางครั้งก็มีส่วนที่เหลือ~
ซึ่งทำให้เกิดความเสียหายอย่างระมัดระวัง
$11~
ผลิตเช่นแถว ถัดไป~
สลับ a <
ข้ามบล็อกต่อไปนี้ อีกประการหนึ่ง<
ที่สิ้นสุดผนวกหลักคู่บล็อกใหม่ (ตัวเลข x และ y เป็นรหัส ASCII) ในส่วน D บล็อก
- รอบถัดไป
~
แถวมี~~
ที่เหลือซึ่ง swaps กว่าดังต่อไปนี้~
)
อีก<
ส่วนจะผนวกส่วน D เข้ากับ[)))~]
บล็อก
- ถัดไปผู้ที่สลับ
~
ตัวจะสลับบล็อกต่อไปนี้ด้วยรหัส E ส่วนใหม่ทั่วทั้งบล็อกส่วน D จากนั้นสิ่งที่เหลืออยู่ใหม่จะทำการ~
สลับ)
ไปมาและท้ายที่สุด~~
ใน~
แถวสุดท้ายจะสลับหนึ่งในนั้นข้ามไปยังส่วน E เช่นเดียวกับที่)
ได้ลบวงเล็บ
ในการทำซ้ำขั้นสุดท้ายส่วน A ~
ได้สลับ)
ส่วนข้ามส่วน B และเป็นส่วน C อย่างไรก็ตามส่วน C นั้นมีอายุสั้นมากจนมันหายไปแล้วและ)
จบลงที่จุดเริ่มต้นของส่วน D
มาตรา D
ส่วน D จัดการการพิมพ์ตัวเลขขนาดใหญ่สุดท้ายและหยุดโปรแกรม ในระหว่างการรันโปรแกรมส่วนใหญ่มันเป็นบล็อกเฉื่อยที่ส่วน B-G ร่วมมือในการสร้าง
(H -
[H]-
⋮
[)))~[H-]] After one iteration of section C
⋮
[)))~[)))~[H-][49[49]]]] Second iteration, after E has also run
⋮
) [)))~[...]] [49[48]] Final printing starts as ) is swapped in
))) ~[...][49[48]]
)) )[49[48]] [...]
)) 49 [48][...] Print first 1
) )[48] [...]
) 48 [...] Print 0
)[...] Recurse to inner block
...
⋮
)[H-] Innermost block reached
H - Program halts
- ในรอบแรกของโปรแกรม
(
แรปฟังก์ชัน halting H
ในวงเล็บเหลี่ยม -
ต่อไปนี้ก็จะถูกนำมาใช้เป็นองค์ประกอบหุ่นสำหรับซ้ำแรกแทนที่จะเป็นคู่หลัก
- ตัวเลขจริงคู่แรกที่รวมกันนั้น
[49[49]]
สอดคล้องกับรอบสุดท้าย11
ในตัวเลข
- สุดท้ายคู่หลัก
[49[48]]
(ตรงกับ10
จุดเริ่มต้นของตัวเลขนั้น) จะไม่ได้จัดตั้งขึ้นจริงลงในบล็อก แต่นี้จะทำให้ความแตกต่างที่ไม่มี)[A[B]]
และเทียบเท่าทั้งสองกลายเป็น)[A][B]
A[B]
หลังจากการทำซ้ำครั้งสุดท้ายการ)
สลับไปทางขวาจากส่วน B มาถึงและบล็อกส่วน D ถูก deblocked )))~
ที่จุดเริ่มต้นของบล็อกย่อยแต่ละทำให้แน่ใจว่าทุกส่วนจะดำเนินการในลำดับที่ถูกต้อง ในที่สุดบล็อกด้านในสุดมีโปรแกรมH
หยุด
มาตรา E
ส่วน E จัดการกับการรวมกันของตัวเลข ASCII คู่ที่ผลิตโดยส่วน G และทั้งสองพิมพ์อักขระที่เข้ารหัสที่สอดคล้องกันและส่งบล็อกที่มีคู่รวมกันไปทางซ้ายเพื่อส่วน C และ D
อีกครั้งด้านล่างแสดงการทำซ้ำโดยทั่วไปด้วยx
และy
เป็นตัวแทนของรหัส ASCII ของตัวเลข
E F
~ [+$4--498+*-:~-10)):] ) < ~ [y] [x]
) [+$4--498+*-:~-10)):] < [x] [y]
+ $4- - 498 +*- :~ -10 ) ) : [x[y]]
+--- -{-498} +*- ~~{-10} ) ) [x[y]] [x[y]]
+-- - 498 +* -{-10} ~ ) x [y] [x[y]]
+- -{-498} + * 10 x )[y] [x[y]]
+ - 498 + {10*x} y [x[y]]
+ {-498} {10*x+y} [x[y]]
{10*x+y-498} [x[y]]
[x[y]]
- บล็อกหลักที่เข้ามาจะถูกสับเปลี่ยนจากนั้นบล็อก y จะถูกผนวกเข้ากับบล็อก x และบล็อกทั้งคู่จะถูกคัดลอก หนึ่งสำเนาจะถูกปล่อยไว้จนถึงจุดสิ้นสุดสำหรับส่วน C และ D
- สำเนาอื่น ๆ จะถูก deblocked อีกครั้งจากนั้นลำดับฟังก์ชั่นทางคณิตศาสตร์จะถูกนำไปใช้ในการคำนวณ
10*x+y-498
ค่า ASCII ของอักขระที่เข้ารหัส 498 = 10*48+48-30
เป็นการ48
ยกเลิกการเข้ารหัส ASCII ของx
และy
ในขณะที่30
เลื่อนการเข้ารหัสจาก00–99
ไป30–129
เป็นซึ่งรวมถึง ASCII ที่พิมพ์ได้ทั้งหมด
- หมายเลขผลลัพธ์จะถูกปล่อยให้ดำเนินการซึ่งพิมพ์อักขระของมัน
หมวด F
ส่วน F ประกอบด้วยบล็อกเฉื่อยที่มีรหัส ASCII ของตัวเลข สำหรับการรันโปรแกรมส่วนใหญ่จะมีสองอย่างที่นี่เนื่องจากส่วน E จะใช้ความเร็วเท่ากันกับที่ G สร้างไว้ อย่างไรก็ตามในขั้นตอนสุดท้ายของการพิมพ์0
ตัวเลขบางส่วนที่ซ้ำซ้อนจะถูกรวบรวมไว้ที่นี่
[y] [x] ...
มาตรา G
ส่วน G จัดการแยกจำนวนมากในตอนท้ายของโปรแกรมตัวเลขที่สำคัญน้อยที่สุดก่อนและส่งบล็อกที่มีรหัส ASCII ของพวกเขาไปทางซ้ายไปยังส่วนอื่น ๆ
เนื่องจากไม่มีการตรวจสอบการหยุดพักจริง ๆ แล้วมันจะยังคงผลิต0
ตัวเลขต่อไปเมื่อตัวเลขได้ลดลงเหลือ 0 จนกระทั่งส่วน D หยุดโปรแกรมทั้งหมดด้วยH
ฟังก์ชัน
[BkG]
ตัวย่อของบล็อกโค้ดเริ่มต้นขนาดใหญ่ซึ่งใช้สำหรับการเรพลิเคตตัวเองเพื่อเริ่มต้นการทำซ้ำใหม่
การเริ่มต้นในรอบแรก:
) :~ : [)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:] ( 106328966328112328136317639696111819119696281563139628116326221310190661962811611211962861109696289611619628116111612896281115421063633063961111116163963011632811111819159628151213262722151522061361613096119619190661966311961128966130281807072220060611612811961019070723232022060611
) ~ ~ [)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:] [BkG] [10...11]
) [)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:] ~ [BkG] [10...11]
) [):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):] ~ : [10...11] [BkG]
โดยทั่วไปการวนซ้ำN
หมายถึงจำนวนที่จะแบ่ง:
) [):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):] ~ : [N] [BkG]
) :~ [)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+ :5 ) : [N] : [BkG]
) ~ ~ [)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/] +5 5 ) [N] [N] [BkG] [BkG]
) [)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/] ~ 10 N [N] [BkG] [BkG]
) ~:~ ~ ( [:~)*[):~[$1(+48]):~+]-:~~)10)~~] / N 10 [N] [BkG] [BkG]
) ~ : [:~)*[):~[$1(+48]):~+]-:~~)10)~~] ( {N/10} [N] [BkG] [BkG]
) [:~)*[):~[$1(+48]):~+]-:~~)10)~~] : [{N/10}] [N] [BkG] [BkG]
:~ )*[):~[$1(+48]):~+]- :~ ~)10 ) ~ ~ [{N/10}] [{N/10}] [N] [BkG] [BkG]
~~) *[):~[$1(+48]):~+]- ~~10 ) ) [{N/10}] ~ [{N/10}] [N] [BkG] [BkG]
) ~ * [):~[$1(+48]):~+] -10 ~ ) {N/10} [N] [{N/10}] [BkG] [BkG]
) [):~[$1(+48]):~+] * {-10} {N/10} ) [N] [{N/10}] [BkG] [BkG]
) :~ [$1(+48]) :~ + {-10*(N/10)} N [{N/10}] [BkG] [BkG]
) ~ ~ [$1(+48] ) ~ ~ {N%10} [{N/10}] [BkG] [BkG]
) [$1(+48] ~ ) {N%10} ~ [{N/10}] [BkG] [BkG]
$1( + 48 {N%10} ) [BkG] [{N/10}] [BkG]
( {48+N%10} BkG [{N/10}] [BkG] New iteration starts
[{48+N%10}] ....
- ความล่าช้าของหยดที่นี่มีขนดกโดยเฉพาะ อย่างไรก็ตามเคล็ดลับการหน่วงเวลาใหม่เท่านั้นที่จะใช้
+:5
แทน--10
การหน่วงเวลา10
สองรอบ อนึ่งมีเพียงหนึ่ง10
ในโปรแกรมเท่านั้นที่ได้รับความช่วยเหลือ
[N]
และ[BkG]
บล็อกซ้ำแล้วหนึ่งชุดโดยแบ่งเป็นN
10
[{N/10}]
ซ้ำแล้วฟังก์ชั่นทางคณิตศาสตร์มากขึ้นมีการใช้ในการคำนวณรหัส ASCII ของหลักสุดท้ายของการเป็นN
48+((-10)*(N/10)+N)
บล็อกที่มีรหัส ASCII นี้เหลือไว้สำหรับส่วน F
- สำเนาอื่น ๆ ของการ
[{N/10}]
แลกเปลี่ยนระหว่าง[BkG]
บล็อกเพื่อตั้งค่าเริ่มต้นของการทำซ้ำใหม่
โบนัสควินิน (540 ไบต์)
)$$3371%%1[~!~~!)!]):[)$$20%%0[):]~)~~[)$$12%%0[<$$7%~~0):~[+----48+*-~~10))]<]<~!:~)~~[40~[:~))~:~[)~(~~/[+--48):]~10]+30])):]]][)[H]](11(06(06(21(21(25(19(07(07(19(61(96(03(96(96(03(11(03(63(11(28(61(11(06(06(20(18(07(07(18(61(11(28(63(96(11(96(96(61(11(06(06(19(20(07(07(18(61(30(06(06(25(07(96(96(18(11(28(96(61(13(15(15(15(15(22(26(13(12(15(96(96(19(18(11(11(63(30(63(30(96(03(28(96(11(96(96(61(22(18(96(61(28(96(11(11(96(28(96(61(11(96(10(96(96(17(61(13(15(15(22(26(11(28(63(96(19(18(63(13(21(18(63(11(11(28(63(63(63(61(11(61(42(63(63
ลองออนไลน์!
เนื่องจากฉันไม่แน่ใจว่าวิธีใดจะสั้นที่สุดฉันลองเข้ารหัสตัวอักษรเป็นตัวเลขสองหลักคั่นด้วย(
s รหัสหลักสั้นลงเล็กน้อย แต่การแสดงข้อมูลที่ใหญ่กว่า 50% ทำขึ้นเพื่อมัน ไม่เหมือนตีกอล์ฟเหมือนกับที่ฉันหยุดเมื่อฉันรู้ว่ามันจะไม่ชนะ มันมีข้อดีอย่างหนึ่ง: มันไม่จำเป็นต้องมีการใช้งานด้วยการสนับสนุน bignum
โครงสร้างโดยรวมของมันค่อนข้างคล้ายกับโครงสร้างหลัก ส่วน G หายไปเนื่องจากการแสดงข้อมูลเติมในส่วน F โดยตรง อย่างไรก็ตามส่วน E ต้องทำการคำนวณ divmod ที่คล้ายกันเพื่อสร้างตัวเลขของตัวเลขสองหลักใหม่