рдкрд╛рдпрдерди рдореЗрдВ Befunge рд╕рдВрдХрд▓рдХ

4 рд╡реЗрдВ рд╡рд░реНрд╖ рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП "рдлрдВрдбрд╛рдореЗрдВрдЯрд▓ рдСрдл рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕" рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдЧреВрдврд╝ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ред рдпрд╣рд╛рдБ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рд╣реИ ред Befunge рднрд╛рд╖рд╛ (рдХреНрд░рд┐рд╕ рдкреНрд░реЗрд╕, 1993) рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧреА, рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рддреАрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ:

  1. рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрд╖реЗрддреНрд░ рдПрдХ рджреЛ рдЖрдпрд╛рдореА рдЯреЛрд░рд╕ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдКрдкрд░реА (рдирд┐рдЪрд▓реЗ) рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд╛рдПрдВ (рджрд╛рдПрдВ) рд╕реНрддрдВрдн рдХреЗ рд╕рд╛рде рдмрдВрдж рдкреНрд░рддреАрдХ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИред рдХрдорд╛рдВрдб рдкреЙрдЗрдВрдЯрд░ рдлрд╝реАрд▓реНрдб рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддрд╛ рд╣реИ (рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб x, y рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд░реНрдг рд╣реИ), рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рдЖрдВрджреЛрд▓рди рд╕рднреА 4 рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдмрд┐рдВрджреБ 0,0 рд╕реЗ рджрд╛рдИрдВ рдУрд░), рдФрд░ рдЬрдм рдЖрдк "рдлрд╝реАрд▓реНрдб" рд╕реЗ рдкрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд╕реВрдЪрдХ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
  2. рднрд╛рд╖рд╛ рдореЗрдВ рджреЛ рдХрдорд╛рдВрдб (рдкреА, рдЬреА) рд╣реИрдВ рдЬреЛ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕реНрд╡рдпрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди "рд╕реНрд╡-рдкреБрдирд░реНрд▓реЗрдЦрди" рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдЕрдВрдд рдореЗрдВ рдХреЛрдб рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо "123pgpg ## @" рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо "рдПрдмреАрд╕реА @ 1 @ 2 @ 3.14" (рд╕рд╣реА рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ) рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ред
  3. рдХреНрд░рд┐рд╕ рдкреНрд░реЗрд╕реА рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡рд╣ рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдЬреЛ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рдЬрдЯрд┐рд▓ рд╣реЛред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдРрд╕рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИ, рдЬреЛ рдХрдореНрдкрд╛рдЗрд▓рд░ рдлрд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реА рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕реЗ C рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ... рднрд╛рд╖рд╛ рд╕реЗ рдкрд╛рдпрдерди рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рджрдХ рдмрдирд╛рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЬреЛ рдЕрднреА рднреА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рдХред


1993 рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрд╖реЗрддреНрд░ рдореЗрдВ 80 рд╡рд░реНрдгреЛрдВ рдХреА 25 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВред рднрд╛рд╖рд╛ рдореЗрдВ 36 рдЯреАрдореЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ ASCII рддрд╛рд▓рд┐рдХрд╛ рдЪрд░рд┐рддреНрд░ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рджреЗрдЦреЗрдВ , рдореИрдВ рд╡рд╣рд╛рдВ рд╕реЗ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджреВрдВрдЧрд╛:

рдЖрдЬреНрдЮрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ (9):

> рджрд╛рдИрдВ рдУрд░
рд▓реЗ рдЬрд╛рдПрдВ <рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдмрд╛рдИрдВ рдУрд░
рд▓реЗ рдЬрд╛рдПрдВ
v рд▓реЗ рдЬрд╛рдПрдВ рдиреАрдЪреЗ
рд▓реЗ рдЬрд╛рдПрдБ _ рдпрджрд┐ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ 0 рд╣реИ, рддреЛ рджрд╛рдПрдВ рдмрд╛рдПрдВ, рдЕрдиреНрдпрдерд╛ рдмрд╛рдПрдВред
| рдпрджрд┐ рд╕реНрдЯреИрдХ 0 рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдиреАрдЪреЗ рдЬрд╛рдПрдВ, рдЕрдиреНрдпрдерд╛ рдКрдкрд░ред
? рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджрд┐рд╢рд╛
рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝реЗрдВ # рдЕрдЧрд▓рд╛ рд╕реЗрд▓ рдЫреЛрдбрд╝реЗрдВ ("рд╕реНрдкреНрд░рд┐рдВрдЧрдмреЛрд░реНрдб")
@ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЕрдВрдд

рд╕реНрдЯреИрдХ рд╣реЗрд░рдлреЗрд░ рдХрдорд╛рдВрдб (3)

:: рд╕реНрдЯреИрдХ рдкрд░ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд░рдЦреЗрдВред
\ _ рд╕реНрд╡реИрдк рд╡рд░реНрдЯреЗрдХреНрд╕ рдФрд░ рд╡рд░реНрдЯреЗрдХреНрд╕
$ рдбрд┐рд▓реАрдЯ рдХрд░реЗрдВ рд╡рд░реНрдЯрд┐рдХрд▓

рдХреЛрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб (2) рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ:
p "PUT": рд╕реЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдЗрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рд░рдЦреЗ рдЧрдП рд╡рд░реНрдгреЛрдВ рдХреЗ ASCII рдХреЛрдб
рдХреЛ рд╕реНрдЯреИрдХ g рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ "ET ": рд╕реЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реНрдЯреИрдХ рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ; рдЗрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдПрдХ рдкреНрд░рддреАрдХ рдХрд╛ ASCII рдХреЛрдб рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рд▓рдЧрд╛рддрд╛рд░ рдХрдорд╛рдВрдб (2):

0-9 рдПрдХ рдирдВрдмрд░ рдХреЛ
рд╕рд┐рдВрдмрд▓ рдореЛрдб рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯ / рдПрдВрдб рдкрд░ рд░рдЦреЗрдВ , рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХрд░рдВрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреИрд░реЗрдХреНрдЯрд░реНрд╕ рдХреЗ ASCII рдХреЛрдбреНрд╕

рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдСрдкрд░реЗрд╢рди (5):

+ред рдПрдХ рд╢реАрд░реНрд╖ рдФрд░ рдПрдХ рд╢реАрд░реНрд╖ рдХрд╛ рдЬреЛрдбрд╝ - рдПрдХ рд╢реАрд░реНрд╖ рдФрд░ рдПрдХ рд╢реАрд░реНрд╖ рдХрд╛
рдШрдЯрд╛рд╡
* рдПрдХ рд╢реАрд░реНрд╖ рдХрд╛ рдЧреБрдгрди рдФрд░ рдПрдХ рд╢реАрд░реНрд╖
/ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрди рдХрд╛
%% рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЕрд╡рд╢реЗрд╖

рд╕реНрдЯреИрдХ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб (2)

:! рдирд┐рд╖реЗрдз: рд╢реАрд░реНрд╖ рдкрд░ рд╢реВрдиреНрдп рдХреЛ 1 рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдиреЙрдирдЬреЗрд░реЛ рд╡реИрд▓реНрдпреВ рдХреЛ 0
`рддреБрд▓рдирд╛" рд╕реЗ рдЕрдзрд┐рдХ " рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ : рдпрджрд┐ рд╢реАрд░реНрд╖ рд╢реАрд░реНрд╖ рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ 1 рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ 0

I / O рдХрдорд╛рдВрдб (4):

рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд░рдЦреЗрдВред рд╕реНрдЯреИрдХ рдкрд░
~ рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреВрдЫреЗрдВ рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ рдЕрдкрдирд╛ рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдХреЛрдб рдбрд╛рд▓реЗрдВ
ред рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ
рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ, рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ ASCII рдХреЛрдб рдХреЗ рдЕрдиреБрд░реВрдк рдЪрд░рд┐рддреНрд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ

рдореИрдВрдиреЗ 1993 рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ Befunge рд╕рдВрдХрд▓рдХ (рджреБрднрд╛рд╖рд┐рдпрд╛) рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛: 1) рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рдореЗрдВ 25x80 рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╛рда рдмреНрд▓реЙрдХ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдБрдЪрд╛рдИ рдореЗрдВ рдиреНрдпреВрдирддрдо, 2) рдлрд╝реАрд▓реНрдб рдХреЛ рдЯреЛрд░рд╕ рдкрд░ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдХреВрджрдиреЗ рдХреЗ рд╕рд╛рде рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЬрд╛рдирд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЖрд▓рд╕реНрдп рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдХрд┐рд╕рд╕реЗ рдордЬрд╛рдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?), рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЕрд╕рд▓реА рдЯреЛрд░рд╕ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЦрддреНрдо рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдПрдХ рдЗрдЪреНрдЫрд╛ рд╣реЛрдЧреАред

рдХреЛрдб рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ "рдорд╛рдереЗ рдкрд░" рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЪреАрдиреА рдореЗрдВ рдХреБрдЫ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рднрд╛рдЧ 1


рдХреЛрдб рдХреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╕реЗ рдЕрдВрдд рддрдХ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреВрд░рд╛ рдкрд╛рда рд▓рд┐рдВрдХ rentry.co/ivansedov-befunge рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ , рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ GitHub рдкрд░ рд░рдЦрдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИред рд╡реИрд╕реЗ, рд╡рд╣рд╛рдБ рд▓рдЧрднрдЧ 20 Befunge рднрд╛рд╖рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдпрд╛ рддреЛ C (рдореЗрд░реА рднрд╛рд╖рд╛ рдирд╣реАрдВ) рдпрд╛ рдкрд╛рдпрдерди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдХреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ github.com/causal-agent/befungee

from sys import *
import time
import random

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ:

  1. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП sys рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ bbb.py рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг 1.bf, рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг 3.7 рд╣реА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛: python3 bbb.py 1.bf
  2. time , , 0,5-1,0 .
  3. random ┬л?┬╗ ( ), . -, Befunge - , ┬л ┬╗ (1 , 2 , 3 , 4 ). ┬л ┬╗ .

class Pointer:
    def __init__(self, x=0, y=0, vector=2, value=None):
        self.x = x
        self.y = y
        self.vector = vector
        self.value = value
        self.stack = []
        self.stack_sf = 0

    def __str__(self):
        return 'Point ({},{}) vektor:{} value:{} stack_sf:{} stack:{}'.format(self.x, self.y, self.vector, self.value, self.stack_sf, self.stack)

    def step(self):
        if self.vector == 1:
            self.x -= 1
        elif self.vector == 2:
            self.y += 1
        elif self.vector == 3:
            self.x += 1
        elif self.vector == 4:
            self.y -= 1

    def action(self):
	#   ,   

рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдореБрдЦреНрдп рд╡рд░реНрдЧ: рдкреЙрдЗрдВрдЯрд░ (рдкреЙрдЗрдВрдЯрд░) рдореЗрдВ 6 рдЧреБрдг рдФрд░ 2 рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред рдЧреБрдг: 1) x рд╕рдордиреНрд╡рдп (рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ = 0), 2) y рд╕рдордиреНрд╡рдп (рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ = 0), 3) рд╡реЗрдХреНрдЯрд░ (рдЖрдВрджреЛрд▓рди рдХреА рджрд┐рд╢рд╛, рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ = рджрд╛рдИрдВ рдУрд░ 2), 4) рдорд╛рди (рдлрд╝реАрд▓реНрдб рдорд╛рди, рдЬреЛ x, y рд╕рдордиреНрд╡рдп рдкрд░ рд╕реНрдерд┐рдд рд╣реИ) рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ = рдХреЛрдИ рдирд╣реАрдВ), рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб рд╣реИ, 5) рд╕реНрдЯреИрдХ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдЯреИрдХ, рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ = []) рдФрд░ 6) рд╕реНрдЯреИрдХ_рд╕реНрдЯ (рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЭрдВрдбрд╛, = 0)ред

рдХрдХреНрд╖рд╛ рдореЗрдВ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ: 1) рд╕реНрдЯреЗрдк () рдкреЙрдЗрдВрдЯрд░ рд╕реНрдЯреЗрдк, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрд╛рдБрдЪ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ, x рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, y рд╡реЗрдХреНрдЯрд░ рдФрд░ 2 рдореЗрдВ рджрд┐рд╢рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд░рддрд╛ рд╣реИ) () рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рджрд┐рд▓ рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдПрдХреНрд╢рди () рдХреЛрдб рджреВрдВрдЧрд╛, рддрд╛рдХрд┐ рд╡рд╣ рддрд░реНрдХ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рди рд╣реЛред

# ===============================
# =                      =
# ===============================

def open_file(name):
    data = open(name, 'r').read()
    return data

def field_print():
    for row in A:
        for elem in row:
            print(elem, end='')
        print()  

рджреЛ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп: 1) рдУрдкрди_рдлрд╛рдЗрд▓ (рдирд╛рдо) рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╛рдо рд╕реЗ рдЦреЛрд▓рддрд╛ рд╣реИ, рдЗрд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдордЧреНрд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ 2) рдлрд╝реАрд▓реНрдб_рдкреНрд░рд┐рдВрдЯ () рд╕рд░рдгреА рдП рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд░реНрдг рд╕реНрдерд┐рдд рд╣реИрдВред рд╕рд░рдгреА A рдмрдирд╛рдирд╛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

# ===========================================
# =                       =
# ===========================================

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
operators = ['+', '-', '*', '/', '%']
point = Pointer()                           #  
text = open_file(argv[1]).split("\n")       #  
n = len(text)                               # n =  
m = 0                                       # m =  

#    (   m)
for line in text:
    if len(line) > m:
        m = len(line)

#   ( n  m )
A = [' '] * n
for i in range(n):
    A[i] = [' '] * m

#    
for i in range(len(text)):
    for j in range(len(text[i])):
        A[i][j] = text[i][j]

рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред рд╕рдВрдЦреНрдпрд╛ рд╕реВрдЪреА рдореЗрдВ рд╣рдо рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ 0 рд╕реЗ 9 рддрдХ рд░рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (10 рдЕрдм рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рджреЛ рдЕрдХреНрд╖рд░)ред рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╣рдордиреЗ рдмреБрдирд┐рдпрд╛рджреА рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рд░рдЦрд╛ред рдПрдХ рдмрд┐рдВрджреБ рдмрдирд╛рдПрдВ = рдкреЙрдЗрдВрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕), рдЬрд┐рд╕реЗ рд╣рдо рд╣рд░ рд╕рдордп рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ ...

рдЪрд░ рдкрд╛рда рдореЗрдВ рд╣рдордиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд╛рда рдХреЛ "рдирдИ рдкрдВрдХреНрддрд┐" рдкреНрд░рддреАрдХ рджреНрд╡рд╛рд░рд╛ рддреЛрдбрд╝рд╛ред рдирддреАрдЬрддрди, рдкрд╛рда рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ рдХреЗ рдкрд╛рда рдХреА рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рд╕рд░рдгреА рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред N = len (рдЯреЗрдХреНрд╕реНрдЯ) рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЙрд▓рдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЗрд╕ рдорд╛рдереЗ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛: рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВ рдФрд░ рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛ рдвреВрдВрдвреЗрдВред рд╣рд╛рде n рдФрд░ m (рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕реНрддрдВрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рд╣реЛрдиреЗ рдкрд░, рдЖрдк рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд╛рдареЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рдЖрдпрдд рд╣реИ рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реИ рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рджреНрд╡рд┐-рдЖрдпрд╛рдореА рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ n m рджреНрд╡рд╛рд░рд╛ред рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рдж, рдЖрдк рдлрд╝реАрд▓реНрдб_рдкреНрд░рд┐рдВрдЯ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реБрдВрджрд░ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ рддреИрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

# ==========================================
# =                       =
# ==========================================

# field_print()

while point.value != '@':
    try:
        point.value = A[point.x][point.y]       # 1)    point
        point.action()                          # 2)  
        # print(point)                            # 3) :  
        # time.sleep(0.5)                         # 4) :  0.5 c
    except IndexError:                          #     =  
        print('     ')
        break

# field_print()
print()

рд╕рдм рдХреБрдЫ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо (рдЪрдХреНрд░) рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЖрдк рдХреНрд╖реЗрддреНрд░ (рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧреА) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪрдХреНрд░ рддрдм рддрдХ рдШреВрдорддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕реВрдЪрдХ "@" рдкреНрд░рддреАрдХ (рдПрдореНрдкрд░рд╕реЗрдВрдб, рдХреБрддреНрддрд╛, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЕрдВрдд) рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЪрдХреНрд░ рдХреЗ рдЕрдВрджрд░, рд╣рд░ рдмрд╛рд░ 4 рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ:

  1. Point.value рдЧреБрдг рдореЗрдВ, рд╡рд╣ рд╡рд░реНрдг рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмрд┐рдВрджреБ рдкрд░ рд╕рд░рдгреА A рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдмрд┐рдВрджреБ .y рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
  2. рдкреЙрдЗрдВрдЯ.рдРрдХреНрд╢рди () рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрд░рдВрдЯ (рд╕рд┐рд░реНрдл рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ
  3. рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕реВрдЪрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ (рд╕рднреА рдЧреБрдг)
  4. рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рджреЗрд░реА рдХреА рдЬрд╛рддреА рд╣реИ (0.1 рд╕реЗрдХрдВрдб - 0.5 рд╕реЗрдХрдВрдб)

рдЖрдЗрдЯрдо 3 рдФрд░ 4 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ (рд╡реЗ рднреА рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рддреНрд░реБрдЯрд┐ (рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреА рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐) рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдпрд╣ рдЖрдкрдХреЛ рджреЛ рдореБрдЦреНрдп рд╕рдВрдХрд▓рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

  1. рд╣рдо рд╕реНрдЯреИрдХ рдореЗрдВ рдмрджрд▓ рдЧрдП, рдФрд░ рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИрдВ
  2. рд╣рдо рдЧрд▓рддреА рд╕реЗ рдЪреМрдбрд╝рд╛рдИ рдпрд╛ рдКрдВрдЪрд╛рдИ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо (рд╕рд░рдгреА) рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЧрдП

рдЕрдВрддрд┐рдо рдЦрд╛рд▓реА рдкреНрд░рд┐рдВрдЯ () рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХрдВрд╕реЛрд▓ рдПрдХ рдирдИ рд▓рд╛рдЗрди рд╕реЗ рдХрд╛рдо рдХрд░реЗред

рднрд╛рдЧ 2


рдЕрдм рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рдордп рд╣реИ - рдкреЙрдЗрдВрдЯрд░ рдХреНрд▓рд╛рд╕ рдХреЗ рдкреЙрдЗрдВрдЯ.рдПрдХреНрд╢рди () рд╡рд┐рдзрд┐ рдХреА рд╕рд╛рдордЧреНрд░реАред рдиреАрдЪреЗ рд╕рдм рдХреБрдЫ рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛:

    def action(self):
	#   ,   

рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:

        if self.value == '"' and self.stack_sf == 0:                # ,  "
            self.stack_sf = 1
        elif self.value == '"' and self.stack_sf == 1:
            self.stack_sf = 0
        elif self.stack_sf == 1:                                    # "Hello"   
            self.stack.append(ord(self.value))
        elif self.value in numbers and self.stack_sf == 0:
            # 123   
            self.stack.append(int(self.value))

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб () рдмрд╣реБрдд рд╕рд╛рд░реА рд╢рд░реНрддреЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рддрд╣рдд рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ "рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдХрдорд╛рдВрдб = рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдФрд░ рд▓рд╛рдЗрди рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд╛ рдЭрдВрдбрд╛ stack_sf = 0" рд╣реИ, рддреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдзреНрд╡рдЬ рдХреЛ 1 рдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рд▓рд╛рдЗрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ред

(рдЕрдиреНрдпрдерд╛) рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдХрдорд╛рдВрдб = рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдФрд░ рдзреНрд╡рдЬ 1 рд╕реЗ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рджреВрд╕рд░реА рдмрд╛рд░ рдорд┐рд▓рд╛ рдерд╛ рдФрд░ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рд╕реНрдЯреИрдХ_рдПрд╕рдПрдл рдзреНрд╡рдЬ рдХреЛ 0 рдкрд░ рдЙрддрд╛рд░рд╛ рдЧрдпрд╛ рд╣реИ)ред рд╣рдо рд▓рд╛рдЗрди рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВред

(рдЕрдиреНрдпрдерд╛) рдпрджрд┐ рдкрд╣рд▓реЗ рджреЛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдереАрдВ рдФрд░ рдЭрдВрдбрд╛ рд╕реНрдЯреИрдХ_рдПрд╕рдПрдл = 1 рд╣реИ, рддреЛ рд╣рдо "рд▓рд╛рдЗрди рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╣реИрдВ" рдФрд░ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ рдкреНрд░рддреАрдХ рдХреЗ рдХреЛрдб рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд░рд┐рддреНрд░ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрд╕рдХрд╛ ASCII рдХреЛрдбред

(рдЕрдиреНрдпрдерд╛) рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдмреАрдЪ рд╣реИ рдФрд░ рдзреНрд╡рдЬ рд╕реНрдЯреИрдХ_рдПрд╕рдПрдл = 0 рд╣реИ, рддреЛ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдЕрдВрдХ рд╣реИ рдФрд░, рджреВрд╕рд░реА рдмрд╛рдд, рд╣рдо рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг = рдЕрдВрдХ рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд░реНрдг рдХреЛрдб рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╡рд░реНрдг рдЬреЛрдбрд╝реЗрдВред рдлрд┐рд░ рднреА рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рдирдВрдмрд░ 1 рд╣реИ, рдФрд░ рдЙрд╕рдХрд╛ рдПрдХ рдХреЛрдб рд╣реИ = 49ред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рд╣рдо рд▓рд╛рдЗрди рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реНрдЯреИрдХ рдореЗрдВ 49 рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб 1 рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рднреА рд╢рд░реНрддреЗрдВ рдПрд▓рд┐рдл рд╣реЛрдВрдЧреА (рдЕрдиреНрдпрдерд╛, рдпрджрд┐ ...), рддреЛ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдмрд╕ рд▓рд┐рдЦреВрдВрдЧрд╛ "рдЕрдЧрд░"ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рджреЛрд╣рд░реА рд╣реИрдВ, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдХреЗ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ рдФрд░ рдЗрд╕ рддрдереНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ рд╣реИрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрджрд░, рд╕рднреА рд╡рд░реНрдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ)ред рдЖрдк рдпрд╣ рд╕рдм рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЛ рдЗрд╕ рдорд╛рдереЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

        elif self.value in operators and self.stack_sf == 0:
            b = self.stack.pop()
            a = self.stack.pop()
            if self.value == '+':
                res = a + b                                         # a+b  
            elif self.value == '-':
                res = a - b                                         # a-b  
            elif self.value == '*':
                res = a * b                                         # a*b  
            elif self.value == '/':
                if b == 0:
                    res = 0
                else:
                    res = a // b                                    # a//b  
            elif self.value == '%':
                res = a % b                                         # a%b  
            self.stack.append(res)

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ (рдФрд░ рд╕реНрдЯреИрдХ_рдПрд╕рдПрдл = 0) рдХреЗ рдмреАрдЪ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдСрдкрд░реЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдП рд╣реИрдВред рд╡реЗ рд╕рднреА рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реИрдВ: 1) рдирдВрдмрд░ рдмреА рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╕рд╛рде), 2) рдПрдХ рдП рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╕рд╛рде), 3) рд░реЗрд╕ = рдП рдФрд░ рдмреА, 4 рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдореВрд▓реНрдп) рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 0 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЙрддреНрддрд░ 0 рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рднрд╛рд╖рд╛ рдХрд╛ рд▓реЗрдЦрдХ 0 рдпрд╛ 1 рдХреА рдкрд╕рдВрдж рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

        elif self.value == '!' and self.stack_sf == 0:
            a = self.stack.pop()
            if a == 0:
                a = 1
            else:
                a = 0
            # 0->1, 1->0
            self.stack.append(a)

        elif self.value == '`' and self.stack_sf == 0:
            a = self.stack.pop()        # 
            b = self.stack.pop()        # 
            if b > a:
                res = 1
            else:
                res = 0
            # b>a -> 1|0
            self.stack.append(res)

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг "!" рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд┐рд░ (рд╡рд░реНрдЯреЗрдХреНрд╕) рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпрд╣ 0 рдерд╛ - рдпрд╣ 1 рд╣реЛ рдЬрд╛рдПрдЧрд╛, 0 рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рдерд╛ - рдпрд╣ 1 рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг "┬╗ "(рдПрдкреЛрд╕реНрдЯреНрд░реЛрдл) рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ рдФрд░ рд░реАрдврд╝ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ : 1) рдпрджрд┐ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╡рд░реНрдЯрд┐рдХрд▓ рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ 1, 2) рдпрджрд┐ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕реЗ рдХрдо (рдпрд╛ рдмрд░рд╛рдмрд░) рд╣реИ, рддреЛ 0 рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рдЯрд╛рдП рдЧрдП, рдирд╣реАрдВ) рдирдХрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

        elif self.value == '?' and self.stack_sf == 0:
            # ? ( )
            a = random.randint(1, 4)
            self.vector = a

        elif self.value == ':' and self.stack_sf == 0:              #  
            last = self.stack.pop()
            self.stack.append(last)
            self.stack.append(last)

        elif self.value == '\\' and self.stack_sf == 0:             # ab => ba
            a = self.stack.pop()
            b = self.stack.pop()
            self.stack.append(a)
            self.stack.append(b)

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ "?" рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджрд┐рд╢рд╛ рдЪреБрдирдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо random.randint (1, 4) рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрдЦреНрдпрд╛ 1,2,3,4 рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдпрд╛ рдорд╛рди point.vector рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг ":" рд╣реИ, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдкреНрд░рддрд┐ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕реЗ рдкрдврд╝реЗрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рджреЛ рдмрд╛рд░ рд╕реНрдЯреИрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ "\\" (рдмреИрдХрд╕реНрд▓реИрд╢) рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ рдФрд░ рдЙрдк-рд╢реАрд░реНрд╖ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рджреЛ рдирдВрдмрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреИрдХ рдкрд░ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред

        elif self.value == '#' and self.stack_sf == 0:              #  ""
            self.step()

        elif self.value == ',' and self.stack_sf == 0:              # =65=A
            value = self.stack.pop()
            print(chr(value), end='')

        elif self.value == '.' and self.stack_sf == 0:              # Print 
            a = self.stack.pop()
            print(a, end='')

рдпрджрд┐ рдореМрдЬреВрджрд╛ рдкреНрд░рддреАрдХ "#" (рдкрд╛рдЙрдВрдб) рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдЧрд▓реЗ (рджрд┐рд╢рд╛ рдореЗрдВ) рдХрдорд╛рдВрдб рдкрд░ рдХреВрджрдирд╛ рд╣реЛрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЕрдВрдд рдореЗрдВ () рдПрдХ рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреВрдж рдЖрдЧреЗ self.step () рд╣реИ, рдпрд╣ рдЖрдкрдХреЛ рдЕрдЧрд▓реЗ рдХрдорд╛рдВрдб рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред "#" рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реЗрд▓реНрдлрд╕реНрдЯреЗрдк () рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдЬрдВрдк рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ "#" рдХреЗ рдмрд╛рдж рдЕрдЧрд▓рд╛ рдХрдорд╛рдВрдб "рд╕реНрдХрд┐рдк" рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг "," (рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо) рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдг рдореБрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ ASCII рдХреЛрдб рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╣реИред рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ 65 рд╣реИ, рддреЛ "рдП" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ "рд╣реИред" (рдбреЙрдЯ), рдлрд┐рд░ рдЖрдкрдХреЛ рдЙрд╕ рдирдВрдмрд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдирдВрдмрд░ рдХреА рддрд░рд╣ рд╣реА рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдпрджрд┐ 65 рдЭреВрда рд╣реИ, рддреЛ рдЖрдкрдХреЛ "65" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдВрдд = '' рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рджреМрд░рд╛рди рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рдирдИ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рди рд╣реЛред

        elif self.value == '_' and self.stack_sf == 0:              #  "_"
            test = self.stack.pop()
            if test == 0:
                #  = 0, (2)
                self.vector = 2
            else:
                #  !=0, (4)
                self.vector = 4

        elif self.value == '|' and self.stack_sf == 0:              #  "|"
            test = self.stack.pop()
            if test == 0:
                self.vector = 3
            else:
                self.vector = 1

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг "_" (рдЕрдВрдбрд░рд╕реНрдХреЛрд░) рд╣реИ, рддреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪреЗрдВред рд╣рдо рдЬрд╛рдВрдЪ (рдкрд░реАрдХреНрд╖рдг) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ = 0 рд╣реИ, рддреЛ рд╣рдо рджрд╛рдИрдВ рдУрд░ (рд╡реЗрдХреНрдЯрд░ = 2, рдпрджрд┐ рдпрд╣! = 0 рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдмрд╛рдИрдВ рдУрд░ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ (рд╡реЗрдХреНрдЯрд░ = 4)ред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг = "|" (рд╡рд░реНрдЯрд┐рдХрд▓ рдмрд╛рд░), рддреЛ рдЖрдкрдХреЛ рд╡рд░реНрдЯрд┐рдХрд▓ рдЪреЗрдХ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рдо рд╕рдВрдЦреНрдпрд╛ (рдкрд░реАрдХреНрд╖рдг) рдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ = 0 рд╣реИ, рддреЛ рд╣рдо рдиреАрдЪреЗ (рд╡реЗрдХреНрдЯрд░ = 3) рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо рдКрдкрд░ (рд╡реЗрдХреНрдЯрд░ = 1) рдмрдврд╝рддреЗ рд╣реИрдВред

        elif self.value == '$' and self.stack_sf == 0:              #  
            self.stack.pop()

        elif self.value == '~' and self.stack_sf == 0:              # Input: A => 65
            val = input(' : ')
            self.stack.append(ord(val[0]))

        elif self.value == '&' and self.stack_sf == 0:              # Input: 65 => 65
            val = int(input(' : '))
            self.stack.append((val))

        elif self.value == 'p' and self.stack_sf == 0:              # x, y, symcode
            x = self.stack.pop()                                    # A(x,y) = symcode
            y = self.stack.pop()
            symcode = self.stack.pop()
            A[x][y] = chr(symcode)

        # x, y, value=A(x,y)
        elif self.value == 'g' and self.stack_sf == 0:
            x = self.stack.pop()                                    # ord(value) => 
            y = self.stack.pop()
            value = A[x][y]
            self.stack.append(ord(value))

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ = "$", рддреЛ рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд░рд▓ рдкреЙрдк рдмрдирд╛рдУ ()ред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг = "~" (рдЯрд┐рд▓реНрдб) рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдПрдХ рдЪрд░рд┐рддреНрд░ рдкреВрдЫрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ рдЕрдкрдирд╛ ASCII рдХреЛрдб рдбрд╛рд▓рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдП" (рдЕрдВрдЧреНрд░реЗрдЬреА) рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ 65 рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╡реИрд▓ рдбрд╛рд▓реЗрдВрдЧреЗ [0], рдЕрдиреНрдпрдерд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдПрдкреНрдкрд▓" рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг = "&" (рдПрдореНрдкрд░рд╕реЗрдВрдб) рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдирдВрдмрд░ рдорд╛рдВрдЧрддреЗ рд╣реИрдВ рдФрд░ рдирдВрдмрд░ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдиреЗ 65 рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛, рдЖрдкрдХреЛ рдвреЗрд░ рдкрд░ 65 рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдм рджреЛ рд╕рдмрд╕реЗ рдХрдард┐рди рдЯреАрдореЗрдВред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг = "p", рддреЛ рдЖрдкрдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рд╕реЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рд╡рд░реНрдг рдХреЗ ASCII рдХреЛрдб рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рд╡рд░реНрдг рдХреЛ рдлрд╝реАрд▓реНрдб A рдкрд░ рдЗрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ 1.2.65 рд╕реНрдЯреИрдХ рдкрд░ рдерд╛ рдФрд░ рд╣рдореЗрдВ рдорд┐рд▓рд╛ (1.2) рдФрд░ 65, рд╣рдореЗрдВ рд╕реЗрд▓ (1.2) рдореЗрдВ рдкреНрд░рддреАрдХ "рдП" рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ: рд╣рдореЗрдВ рддреАрди рдирдВрдмрд░ рдорд┐рд▓реЗ, рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдПрдХ рдкреНрд░рддреАрдХ рд░рдЦрд╛ред

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг = "g", рддреЛ рд╕реЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реЗрд▓ рдХреЛ рдлрд╝реАрд▓реНрдб рдкрд░ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪрд░рд┐рддреНрд░ рдХреЛ рд╡рд╣рд╛рдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ ASCII рдХреЛрдб рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП, рдкреНрд░рддреАрдХ "рдмреА" рд╕реЗрд▓ (2,3) рдореЗрдВ рдореИрджрд╛рди рдкрд░ рдкрдбрд╝рд╛ рдерд╛, рддреЛ рд╡рд░реНрддрдорд╛рди рдЯреАрдо рдХреЛ "рдЬреА" рдорд┐рд▓рд╛ рдФрд░ рд╣рдореЗрдВ рд╕реНрдЯреИрдХ рд╕реЗ 2,3 рдорд┐рд▓рд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (2,3) рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рд╕реЗ рдкреНрд░рддреАрдХ "рдмреА" рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рдВрдЦреНрдпрд╛ 66 (рдкреНрд░рддреАрдХ рдХреЛрдб рдмреА) рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ 66 рдбрд╛рд▓рддреЗ рд╣реИрдВред

        elif self.value == '>' and self.stack_sf == 0:              # >
            self.vector = 2
        elif self.value == '<' and self.stack_sf == 0:              # <
            self.vector = 4
        elif self.value == '^' and self.stack_sf == 0:              # ^
            self.vector = 1
        elif self.value == 'v' and self.stack_sf == 0:              # v
            self.vector = 3
        self.step()                                                 #  

рдЦреИрд░, рдФрд░ рдХреЛрдб рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпрд╛рдБ: рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реВрдЪрдХ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдЧрдардиред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рд╣рдо рдкреНрд░рддреАрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рджрд┐рд╢рд╛ (рд╡реЗрдХреНрдЯрд░) рдмрджрд▓рддреЗ рд╣реИрдВред рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ () рдлрд╝рдВрдХреНрд╢рди рд╕реЗрд▓реНрдл.рд╕реНрдЯреЗрдк () рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рд░рдЦрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░реНрд░рд╡рд╛рдИ () рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рдЕрдЧрд▓реЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдХрджрдо рджреЛрдиреЛрдВ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рд╕рдВрдХрд▓рдХ рдХреЛ рд▓рд┐рдЦрдирд╛ рдПрдХ рдЦреБрд╢реА рдереАред рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдб рдХреЛ рдлреЗрдВрдХрдиреЗ рдкрд░ рдХрд┐рддрдирд╛ рдЖрдирдВрдж рдЖрдпрд╛, рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╕рд╣реА рдврдВрдЧ рд╕реЗ!) рдФрд░ рдЖрдк рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ! рд╕рд╛рдЗрдЯ befungius.aurlien.net рдиреЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдорджрдж рдХреА , рдЬрд┐рд╕ рдкрд░ рд▓реЗрдЦрдХ рдиреЗ Befunge рдСрдирд▓рд╛рдЗрди рджреБрднрд╛рд╖рд┐рдпрд╛ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ) рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред рдпрд╣рд╛рдВ рдХреБрдЫ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ www.youtube.com/watch?v=oCPT3L33848 рд╕реЗ рдЙрдирдХрд╛ рд╡реАрдбрд┐рдпреЛ рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЖрдк Befunge рдкрд░ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдЯреЛрд░рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдлрд╝реАрд▓реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддред рджреБрдирд┐рдпрд╛ рдХреА рд╡рд┐рднрд┐рдиреНрди рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рд╣реИред рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реНрд╡рдпрдВ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдордиреНрд╡рдп рдП [0] [1]) рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╛ рддреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЗрд╕ рд╕рдордиреНрд╡рдп рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рд▓реЗрдВ рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рдмрд╛рдж рдкреВрд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдП рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЪрдордХрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд▓рд╛ рдЧрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛрдб рдЬрд┐рд╕реЗ рдЬреЛрдбрд╝рд╛ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯрд╛рдЗрдкреЛ рд╕рдВрднрд╡ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИред рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╖рд┐рджреНрдз рдирд╣реАрдВ рд╣реИред рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рдФрд░ рдЕрдЪреНрдЫрд╛ рдХреЛрдбред

рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛!

0"!dlrow olleH">:#,_@

Bazz

0> 1+:3%v
>^  v%5:_:5% v
,v.:_v     v0_0"zzub"v
"v         #
     >0"zzub"v
"   v"fizz"<         <
^<         $<>:#,_v
    >      #^^#   <

рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐

62*1+v>01p001>+v>\:02p\:02gv
     0       ^             <
     .         :p
     "         .1
        v 0," "<0
     "  >1g12-+:|
     ,          @
     >^

рдЧрд┐рдирддреА

>91+:9`v
p   v  _v
    >$0 v
^ 01+*68<

рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛, рдореИрджрд╛рди рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдирд╛

0>:00p58*`#@_0>:01p78vv$$<
@^+1g00,+55_v# !`\+*9<>4v$
@v30p20"?~^"< ^+1g10,+*8<$
@>p0\>\::*::882**02g*0v >^
`*:*" d":+*:-*"[Z"+g3 < |<
v-*"[Z"+g30*g20**288\--\<#
>2**5#>8*:*/00g"P"*58*:*v^
v*288 p20/**288:+*"[Z"+-<:
>*%03 p58*:*/01g"3"* v>::^
   \_^#!:-1\+-*2*:*85<^

рд▓рд┐рдВрдХ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА:

  1. рдкреВрд░реНрдг рдХреЛрдб
  2. рдСрдирд▓рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг
  3. рд╡рд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣реИ
  4. рдкреНрд░рд▓реЗрдЦрди (рдЕрдВрдЧреНрд░реЗрдЬреА)
  5. рд╡рд┐рдХреА рд▓реЗрдЦ (рдЕрдВрдЧреНрд░реЗрдЬреА)

All Articles