>>>>,[[<]<<+>>>[>],]<[<]<+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>[<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
ลองออนไลน์!
ปลอดภัยในรสชาติของ BF ที่ไม่ปิดบังเซลล์ด้วย256
ไม่รองรับไบต์ว่าง
ลบลูกศรขวาเริ่มต้นหากรสชาติสนับสนุนหน่วยความจำเชิงลบสำหรับการบันทึก 4 ไบต์
คำอธิบาย
โปรแกรมแบ่งออกเป็น 3 ขั้นตอน:
Stage 1: >>>>,[[<]<<+>>>[>],]<[<]
Stage 2: <+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>
Stage 3: [<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
ด่าน 1
ในขั้นตอนนี้เราใส่ตัวละครทั้งหมดลงบนเทปในขณะที่ยังคงนับจำนวนตัวละคร
นี่คือเทปสำหรับอินพุตabcdefghi
หลังจากเทปนี้:
000 009 000 000 095 096 097 098 099 100 101 102 103
^
009
คือนับ
สำหรับตัวละครแต่ละตัวเราจะย้ายศูนย์แรกทางซ้าย[<]
แล้วเพิ่มอีกหนึ่งตัวเพื่อนับ<<+>>>
จากนั้นย้ายไปที่ศูนย์ขวาสุด[>]
เพื่อเตรียมพร้อมสำหรับตัวละครถัดไป
ด่าน 2
สเตจนี้ทำสแควร์รูทของความยาวที่เก็บไว้ในเซลล์ที่สอง
มันจะทำการลบ1, 3, 5, 7, ...
ไปเรื่อย ๆ จนกว่าจำนวนจะถึงศูนย์ในขณะที่ยังคงตรวจสอบจำนวนการทำซ้ำ
1 + 3 + 5 + ...
มันทำงานได้เนื่องจากหมายเลขตารางสามารถแสดงเป็น
ด่าน 3
n
แสดงว่ารากที่สองของความยาวที่พบข้างต้น
สเตจนี้ส่งออกn
อักขระในแต่ละครั้งจากนั้นออกบรรทัดใหม่จนกระทั่งเทปถูกเคลียร์