Brainfuck рдкрд░ рдХреНрд░рдордмрджреНрдз рд╕рдВрдЦреНрдпрд╛рдПрдБ

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдмреНрд░реЗрдирдлрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдЫрд╛рдВрдЯрд╛ рдЬрд╛рдПред

рдЖрдк рд╕рдВрдЦреНрдпрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ (рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрдХ 255 рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ 8 рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде), рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рдж, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдЧрдгрдирд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛ рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
1. рдирдВрдмрд░ k рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
2. рд╕рд░рдгреА A рдореЗрдВ, A [k] рдХреЛ рдПрдХ рд╕реЗ рдмрдврд╝рд╛рдПрдВред
3. рдЪрд░рдг 1 рдФрд░ 2 рдХреЛ рддрдм рддрдХ рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рддрдХ рдЗрдирдкреБрдЯ рд╕рдВрдЦреНрдпрд╛ рдмрд╛рд╣рд░ рди рдирд┐рдХрд▓ рдЬрд╛рдПред
4. рд╣рдо рд╕рдВрдЦреНрдпрд╛ I, рдЬрд╣рд╛рдБ рдореИрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди рд╣реИрдВ, рдХрд╛ A [i] рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред


рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рд╣рдо рдкрд╛рддреНрд░реЛрдВ рдХреЛ рддрдм рддрдХ рдкрдврд╝реЗрдВрдЧреЗ рдЬрдм рддрдХ рд╣рдореЗрдВ рд▓рд╛рдЗрди рдлреАрдб (ascii 10) рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддрд╛ред

,----- ----- [ ----- ----- ----- ----- ----- ---     28 *     * ,----- ----- ] 


рдЕрдм рд╣рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЙрд╕ рдореВрд▓реНрдп рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдорд╛рдирд╛ рдерд╛ред

  [->+<]>       [ [->+<]    i-   i + 1 +>-  i- ,    ,   ] 


рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреЙрдЗрдВрдЯрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЪрд░рд┐рддреНрд░ рдХреЗ рдореВрд▓ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╕реЗрд▓ рдкрд░ рд╣реЛрдЧрд╛ред рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдПрдВ, рдкрд╣рд▓реА рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдЙрд╕ рдПрдХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд╣рд▓реЗ рд╕реВрдЪрдХ рдЗрдХрд╛рдЗрдпреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реЛрдЧрд╛ - рдпрд╣ рд╣рдореЗрдВ рд╢реВрдиреНрдп рд╕реЗрд▓ рдореЗрдВ рд▓реМрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдареАрдХ рд╣реИ, рдЕрдм рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рджреВрд╕рд░реЗ рдЪрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реЗрд▓ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

  >>>>> >>>>> + <<<<< <<<<< 


рдиреЛрдЯ: 10 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдЖрдХрд╕реНрдорд┐рдХ рдирд╣реАрдВ рд╣реИ, рд╕реЛрдЪреЗрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╢реВрдиреНрдп рд╕реЗрд▓ рдкрд░ рдЬрд╛рдПрдБред

  <[-<]  ,    


рддреЛ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкрд╣рд▓реЗ рддреАрди рдЪрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред

 ,---------- [ ----- ----- ----- ----- ----- --- [->+<]> [ [->+<] +>- ] >>>>> >>>>> + <<<<< <<<<< <[-<] ,----- ----- ] 


рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрд╛рджрди


рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдмрдиреА рд╣реБрдИ рд╣реИ: рдХреНрд░рдордмрджреНрдз рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред

рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдирдВрдмрд░ рдХрд╣рд╛рдВ рд╣реИрдВ?

ASCII рдХреЛрдб '0' 48 рд╣реИред
рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ 10 рдШрдЯрд╛рдпрд╛, рдлрд┐рд░ рдПрдХ рдФрд░ 28ред
рд╣рдордиреЗ рд░реАрдб рд╡реИрд▓реНрдпреВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ред
рд▓реЗрдХрд┐рди рд╕реЗрд▓ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ 10 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ред
48 - 10 - 28 + 1 + 10 = 21
рддреЛ 21 рд╡реАрдВ рд╕реЗрд▓ рдореЗрдВ рд╢реВрдиреНрдп рдХреА рд╕рдВрдЦреНрдпрд╛ рдЭреВрда рд╣реЛрдЧреА, 22 рд╡реЗрдВ рдореЗрдВ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЖрджрд┐ред

рдмреАрд╕рд╡реАрдВ рд╕реЗрд▓ рдХреЛ 48 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ (рдпрд╣ рдПрд╕рд╕реАрдЖрдИ рд╢реВрдиреНрдп рдХреЛрдб рд╣реИ)ред
рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╕реЗрд▓ рдХреЗ рдорд╛рди рдХреЛ рдХрдИ рдмрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдХреЛ рдкрд┐рдЫрд▓реЗ + 1 рдХрд╛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрдХ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

 >>>>> >>>>> >>>>> >>>>>   20  ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++    48 >[<.>-] <[->+<]>+ ,     >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-]  ,     


рдкрд░рд┐рдгрд╛рдо


рдпрд╣рд╛рдБ рдкреВрд░рд╛ рдХреЛрдб рд╣реИ
 ,---------- [ ----- ----- ----- ----- ----- --- [->+<]> [ [->+<] +>-] >>>>> >>>>> + <<<<< <<<<< <[-<] ,----- ----- ] >>>>> >>>>> >>>>> >>>>> ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ ++++++++ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] <[->+<]>+ >[<.>-] 


рдРрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рд╣рдордиреЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ред
рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рддрд╛рдХрд┐ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╡рд░реНрдг рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╛ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рди рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛, рдмрд▓реНрдХрд┐ 2 - 3-рдЕрдВрдХреАрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рднреА рд╕реЙрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдмрд╛рдж рдореЗрдВ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In135262/


All Articles