рдХрд┐рд╕реА рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдерд╛: "рдХреБрдЫ рдордирдорд╛рдиреА рд▓реИрдЯрд┐рди рдкрддреНрд░ рд▓реЗ рд▓реЛ, рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рдЬрдореНрдореВ рдЬреЛрдбрд╝реЛ, рдФрд░ рдЖрдк рдПрдХ рдФрд░ рдЬрд╛рд╡рд╛ рддрдХрдиреАрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред" рдпрд╣ рд▓реЗрдЦ JBFD рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЬрд╛рд╡рд╛ рдмреНрд░реЗрдирдлреИрдХ рдбрд┐рдХрдореНрдкрд╛рдЗрд▓рд░ред рддрдХрдиреАрдХ рдЕрднреА рднреА рдХрд╛рдлреА рдпреБрд╡рд╛ (3 рдШрдВрдЯреЗ рдХреА рддрд╛рдХрдд) рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдЦреНрддреА рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВред
рдбрд┐рдХрдореНрдкрд╛рдЗрд▓рд░ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рдВрдпреЛрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдЖред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдмреНрд░реЗрдирдлреЗрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдмреЗрд░рд╛ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИред рдЗрд╕ рдЕрджреНрднреБрдд рднрд╛рд╖рд╛ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рдХрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдмреАрдПрдл рдХреЛрдб рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдЙрдкрдХрд░рдг рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдмреАрдПрдл рд╕реЗ рдХреЛрдб рдХреЛ рдЕрдкрдиреА "рдореВрд▓" рднрд╛рд╖рд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реВрдХреНрд╖реНрдо рдмрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдХрд╛ рдкреВрд░рд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВ, рдХреЛрдб рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ, рдЕрдиреБрдХреВрд▓рди рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ рд╕рдм рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдЬреЗрдмреАрдПрдлрдбреА рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП,
рдбрд┐рдХрдореНрдкрд╛рдЗрд▓рд░ рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдпрд╣рд╛рдБ рд╣реИ -
JBFD.java ред рдХреЛрдб JDK рд╕рдВрд╕реНрдХрд░рдг 1.5 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред
JBFD.java рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:
рдЙрдкрдпреЛрдЧ: рдЬрд╛рд╡рд╛ JBFD << рдлрд╝рд╛рдЗрд▓ рдирд╛рдо >> << рд╡рд┐рдХрд▓реНрдк >>
рд╡рд┐рдХрд▓реНрдк:
-p - рд╕рд┐рд░реНрдл рдкреНрд░рд┐рдВрдЯ рдХреНрд▓реАрди рдЕрдк рд╕реЛрд░реНрд╕ рдХреЛрдб
-P рд╡рд┐рдХрд▓реНрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд▓рд╛рдЗрди рдлреАрдб рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реЛред рд╕рддреНрдпрд╛рдкрди рдХреЗ рджреМрд░рд╛рди, рдЕрднреА рддрдХ рдХреЗрд╡рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдпрд╛ рдЧрд╛рдпрдм рдЕрдХреНрд╖рд░ ']' рдФрд░ '[' рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд ']' рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рдирдВрдмрд░ рдФрд░ рд╡рд░реНрдг рднреА рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ echo.bf рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
, + [-ред, +)
'Java JBFD echo.bf' рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, echo.bf.java рдлрд╝рд╛рдЗрд▓ рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:
class Program { static class FuckedByte { char value; FuckedByte(int value) { this.value = (char) value; } char get() { return value; } void inc(int i) { value += i; value %= 256; } void dec(int i) { value -= i; value %= 256; if (value < 0) value += 256; } static FuckedByte read() { try { return new FuckedByte(System.in.read()); } catch (Exception e) { throw new RuntimeException("Error reading from System.in"); } } void write() { System.out.print(value); } } public static void main(String[] args) { FuckedByte fb0 = new FuckedByte(0); fb0 = FuckedByte.read(); fb0.inc(1); while (fb0.get() != 0) { fb0.dec(1); fb0.write(); fb0 = FuckedByte.read(); fb0.inc(1); } } }
рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдХреА рд╕рд╛рдордЧреНрд░реА - рдпрд╣ рдмреНрд░реЗрдирдлрдХ, рдмрд╛рдХреА рд╕рдм рдХреЗ рд╕рд╛рде рд╡рд┐рдШрдЯрд┐рдд рдХреЛрдб рд╣реИ - рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдм рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдбреЗрдмрд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреА рдХрд▓реНрдкрдирд╛ рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдЧреВрдВрдЬ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЕрдм рддрдХ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐, рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛ рдЖрджрд┐ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбрд┐рдХрдореНрдкрд╛рдЗрд▓рд░ рдХреЛрдб рдЬрд▓реНрджрдмрд╛рдЬреА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд┐рд░ рднреА, рдЕрдм рдореИрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА рдФрд░ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред
рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБред