рдлреНрд░реЗрд╢рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрд╕рддрдд рдЧрдгрд┐рдд: рд╢рд┐рдХреНрд╖рдХ рдЕрдиреБрднрд╡

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



рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди



рдЗрд╕ рд╕реЗрдореЗрд╕реНрдЯрд░, рдореИрдВрдиреЗ рдХреБрдЫ рд╣рдж рддрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХреА: рдореИрдВ рд╣рд╛рдпрд░ рд╕реНрдХреВрд▓ рдСрдл рдЗрдХреЛрдиреЙрдорд┐рдХреНрд╕ рдХреЗ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рд╢рд╛рдЦрд╛ рдореЗрдВ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрд╕рддрдд рдЧрдгрд┐рдд рд╕рд┐рдЦрд╛рддрд╛ рд╣реВрдВ; рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрдврд╝рд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЪреМрдереЗ-рдкрд╛рдВрдЪрд╡реЗрдВ рд╡рд░реНрд╖ рд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рдЫрд╛рддреНрд░ рдирд╣реАрдВ рдереЗред рдпрд╣рд╛рдВ рдЖрдк рдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдзреВрд░рд╛ (рдкрд╛рдареНрдпрдХреНрд░рдо рдЕрднреА рднреА рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

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

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

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╛рддреНрд░ рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реЛрдорд╡рд░реНрдХ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореИрдВ рдЗрд╕реЗ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬрдм рдореИрдВ рдПрдХ рдЫрд╛рддреНрд░ рдерд╛ рдпрд╛ рдмрд╛рдж рдХреЗ рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрднрд╡ рдореЗрдВ - рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдПрдХ рдиреНрдпреВрдирддрдо рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред

рдЗрдирдХреЛ .tex рдФрд░ рдмрдврд╝рд╛рд╡рд╛ :: рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕



рдмреБрдирд┐рдпрд╛рджреА рддрдХрдиреАрдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдЖрдкрдХреЛ рдПрдХ рд▓рд╛рдЯреЗрдХрд╕-рд░рд┐рдХреНрдд рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╛рддреНрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрдВред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рд╕реА ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд░реВрдВрдЧрд╛ред C ++ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдмрдврд╝рд╛рд╡рд╛ рд╣реИ :: рдкреНрд░рд╛рд░реВрдк : рдмрд╕ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдмрдирд╛рдПрдВ рдЬреИрд╕реЗ% 1%,% 2%, рдФрд░ рдлрд┐рд░ рдЖрдк рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмрдврд╝рд╛рд╡рд╛ :: рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдм рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

рддреЛ, рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, "рдЕрдореВрд░реНрдд LaTeX рджрд╕реНрддрд╛рд╡реЗрдЬрд╝" рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ:

рдереЛрдбрд╝рд╛ рд╕рд╛ рдЯреЗрдХреНрд╕
\documentclass[a4paper]{article} \usepackage[utf8]{inputenc} \usepackage{amsthm,amsmath,amsfonts, amssymb} \usepackage[english,russian]{babel} \usepackage{concrete} \usepackage{enumerate} \usepackage{euler} \usepackage{fullpage} \pagestyle{empty} \selectlanguage{russian} \begin{document} \selectlanguage{russian} %1% \end{document} 


рдлрд┐рд░ рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ - рд╣рдо рдЗрд╕реЗ% 1% рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВ рдПрдХ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВред рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ: рджрд┐рдП рдЧрдП рдмреВрд▓рд┐рдпрди рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕реЗ рдХрдИ рдЕрдиреНрдп рд░реВрдкреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░реЗрдВред

рдереЛрдбрд╝рд╛ рд╕рд╛ рдЯреЗрдХреНрд╕
   \hfill %1%  $2013$ \hfill  %2% \section*{ } \begin{enumerate} \item     $$ \varphi = %3%: $$ \begin{enumerate}[(i)] \item   ; \item  $\varphi$        ; \item  $\varphi$    ; \item $[\ast]$  $\varphi$     $x\mid y = \lnot(x\land y)$. \end{enumerate} \pagebreak 


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

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рд╕реВрддреНрд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдмрдВрдбрд▓реЛрдВ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреЛрдбреНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧреА; рд╣рдорд╛рд░реЗ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рд╣реА рдХрдо рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕реЗрдЯ рдмреАрдЬрдЧрдгрд┐рдд (рдпреВрдирд┐рдпрдиреЛрдВ, рдЪреМрд░рд╛рд╣реЛрдВ рдФрд░ рд╕рдордорд┐рдд рдЕрдВрддрд░) рдХреЗ рд╕реВрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдерд╛, рдФрд░ рдореИрдВ рд╕реВрддреНрд░ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИ:

C ++ рдХреЛрдб
 class Globals { public: size_t TypesNo; size_t VarType; vector<string> TypesLatex; vector<size_t> TypesArity; boost::random::uniform_int_distribution<> RandomNodeType; boost::random::uniform_int_distribution<> RandomNodeNoVar; boost::random::uniform_int_distribution<> RandomNodeBinary; size_t VarsNo; vector<string> VarNames; boost::random::uniform_int_distribution<> RandomVarType; size_t current_varnum; Globals(size_t types_num, vector<string> types_latex, vector<size_t> types_arity, size_t var_num, vector<string> var_names) : TypesNo(types_num), VarType(types_num - 1), TypesLatex(types_latex), TypesArity(types_arity), RandomNodeType(0, types_num - 1), RandomNodeNoVar(0, types_num - 2), RandomNodeBinary(0, types_num - 3), VarsNo(var_num), VarNames(var_names), RandomVarType(0, var_num - 1), current_varnum(var_num - 1) {} size_t get_next_var() { current_varnum++; if (current_varnum == VarsNo) current_varnum = 0; return current_varnum; } }; Globals GBoolean(7, { "\\land", "\\lor", "\\rightarrow", "\\oplus", "\\equiv", "\\lnot", "\\var" }, { 2, 2, 2, 2, 2, 1, 0 }, 4, { "x", "y", "z", "t" }); 


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

рд╕реЗрдЯ рдмреАрдЬрдЧрдгрд┐рдд рдХреЗ рд╕реВрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ (рдпрд╣ рд╕рд┐рд░реНрдл рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреАрдПрд╕рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЧреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛):

C ++ рдХреЛрдб
 Globals GSet(5, { "\\cap", "\\cup", "\\triangle", "\\overline", "\\var" }, { 2, 2, 2, 1, 0 }, 3, { "A", "B", "C" }); 


рдЕрдм рдПрдХ рдлреЙрд░реНрдореВрд▓рд╛ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред рдмреБрд▓рд┐рдпрди рдлрд╛рд░реНрдореВрд▓рд╛ рдПрдХ рдкреЗрдбрд╝ рд╣реИ рдЬрд┐рд╕рдХреА рдкрддреНрддрд┐рдпрд╛рдВ рдЪрд░ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдиреЛрдб рдЖрдВрддрд░рд┐рдХ рдХреЛрдиреЗ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдХрд┐рд╕реА рджреА рдЧрдИ рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕реВрддреНрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдиреЛрдб рдХреЛ рд╢реАрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдмрд╛рдЗрдирд░реА рд▓рд┐рдВрдХ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдиреЛрдб рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВрдЧреЗ g-> TypesNoред рдпрджрд┐ рдиреЛрдб рдПрдХ рдкрддреНрддреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд▓рд╛, рддреЛ рдЗрд╕реЗ рдПрдХ рдЪрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рддрд╛рдХрд┐ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╕рднреА рдЪрд░ рдЧрд┐рд░ рдЬрд╛рдПрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ - рд╕реВрддреНрд░, рдмрд┐рд▓реНрдХреБрд▓, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ)ред

C ++ рдХреЛрдб
 class BNode { public: Globals *glob; size_t type; size_t varnum; BNode * left; BNode * right; BNode(Globals *g, size_t t, bool must_be_leaf = false, bool must_not_be_leaf = false, bool must_be_binary = false) : glob(g), type(t), left(NULL), right(NULL) { if (t == g->TypesNo) { // this means we want a random node type = must_be_leaf ? g->VarType : (must_be_binary ? g->RandomNodeBinary(gen) : (must_not_be_leaf ? g->RandomNodeNoVar(gen) : g->RandomNodeType(gen) )); } varnum = (type == g->VarType) ? g->get_next_var() : 0; } ~BNode() { if (left != NULL) delete left; if (right != NULL) delete right; } }; 


рдЕрдм рд╣рдо BNode рд╡рд░реНрдЧ рдореЗрдВ рднрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕реВрддреНрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓рд╛рдЯреЗрдХреНрд╕ рдореЗрдВ рдЫрдкрд╛ рд╣реИ:

C ++ рдХреЛрдб
  string TypeString() const { if (type == glob->VarType) return glob->VarNames[varnum]; return glob->TypesLatex[type]; } string ToString() const { if (glob->TypesArity[type] == 0) return TypeString(); if (glob->TypesArity[type] == 1) return TypeString() + "{" + left->ToString() + "}"; return "(" + left->ToString() + " " + TypeString() + " " + right->ToString() + ")"; } 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдЪрд░ рдХреЗ рджрд┐рдП рдЧрдП рд╕реЗрдЯ рдкрд░ рд╕реВрддреНрд░ рдХреЗ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

C ++ рдХреЛрдб
  bool get_truth_value(const vector<bool> & vals) { switch(type) { case 0: return left->get_truth_value(vals) && right->get_truth_value(vals); break; case 1: return left->get_truth_value(vals) || right->get_truth_value(vals); break; case 2: return (!left->get_truth_value(vals)) || right->get_truth_value(vals); break; case 3: return left->get_truth_value(vals) != right->get_truth_value(vals); break; case 4: return left->get_truth_value(vals) == right->get_truth_value(vals); break; case 5: return !left->get_truth_value(vals); break; case 6: return vals[varnum]; break; default: return false; break; } } 


рдЕрдм рдХреЗ рд▓рд┐рдП рд╣рдо рдмреЛрдбреЛрдб рдХреНрд▓рд╛рд╕ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ (рд╣рдо рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВрдЧреЗ); рдЕрдм рд╣рдо рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реВрддреНрд░ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрддреНрд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ (рдиреНрдпреВрдирддрдо рдЧрд╣рд░рд╛рдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ must_not_be_leaf рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛):

C ++ рдХреЛрдб
 BNode *generate_tree(Globals & g, size_t min_depth, size_t max_depth, bool must_be_binary = false) { if (max_depth == 0) return NULL; BNode *node = new BNode(&g, g.TypesNo, max_depth == 1, min_depth > 0, must_be_binary); if (g.TypesArity[node->type] == 1) { node->left = generate_tree(g, min_depth, max_depth, true); } if (g.TypesArity[node->type] == 2) { node->left = generate_tree(g, min_depth - 1, max_depth - 1); node->right = generate_tree(g, min_depth - 1, max_depth - 1); } return node; } 


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрд╡рдпрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИ; рдПрдХрдорд╛рддреНрд░ рдирд┐рд░реНрдгрдп рдЬреЛ рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдХрд┐рдпрд╛ рдерд╛, рд╡рд╣ рдерд╛ рдПрдХрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдпрд╛рдиреА рдиреЗрдЧреЗрдЯрд┐рд╡реНрд╕) "рдлреНрд░реА", рдЧрд╣рд░рд╛рдИ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЕрдиреНрдпрдерд╛ рд╕реВрддреНрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреВрд▓рд┐рдпрди рд╕реВрддреНрд░ рдореЗрдВ, рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдирд┐рдЧреЗрдЯрд┐рд╡ рдбрд╛рд▓рдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ, рдпрд╣ рд╡реНрдпрд░реНрде рд╣реИ; рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ must_be_binary рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдФрд░ рдЖрдк рдЫрд╛рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

C ++ рдХреЛрдб
 void process_one_student_file_boolean(string dir, string fname, boost::format & general_tmpl, boost::format & problem_tmpl, boost::format & solution_tmpl) { BNode *node_bool; ostringstream s; vector<string> students = readAllLinesFromFile(dir + "/" + fname + ".txt"); cout << "\t " << fname << endl; for (size_t i=0; i<students.size(); ++i) { if (students[i].size() == 0) continue; // empty line cout << "\t\t[ " << students[i] << " ]" << endl; node_bool = generate_tree(GBoolean, 2, 4); string group_string = "$" + fname + "$"; s << problem_tmpl % students[i] % group_string % node_bool->ToString(); delete node_bool; } ofstream ofs(dir + "/" + fname + ".tex"); ofs << general_tmpl % s.str() << endl; ofs.close(); } 


рдФрд░ рдлрд┐рд░ рдореБрдЦреНрдп, рдЬреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЫрд╛рддреНрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ:

C ++ рдХреЛрдб
 string students_dir = "2013"; vector<string> students_files = { "BoTR" }; int main(int argc, char *argv[]) { boost::format boolean_tpml( read_file_as_string("boolean_problem_minimal.tex") ); boost::format general_tmpl( read_file_as_string("general_template.tex") ); for (size_t i = 0; i < students_files.size(); ++i) { process_one_student_file_boolean(students_dir, students_files[i], general_tmpl, boolean_tpml); } return 0; } 


рд▓реЗрдХрд┐рди рд░реБрдХрд┐рдП, рдореБрдЭреЗ рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдХреА рдЖрд╡рд╛рдЬ рд╕реБрдирд╛рдИ рджреЗ рд░рд╣реА рд╣реИред рдпрд╣ рдмрдХрд╡рд╛рд╕ рдирд┐рдХрд▓реЗрдЧрд╛ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдЙрддреНрдкрдиреНрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЖрдзрд╛ рддреБрдЪреНрдЫ рд╣реЛрдЧрд╛! рдХреНрдпрд╛ рд╕рдЪ рд╣реИ - рдореИрдВ рдЖрдзреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлрд╝реЙрд░реНрдо \ varphi = x рдХрд╛ рдПрдХ рднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╕реВрддреНрд░ рд╣рдорд╛рд░реА рдкрджреНрдзрддрд┐ рдХреА рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреЛ рдзреВрдорд┐рд▓ рдХрд░ рджреЗрдЧрд╛ред рдЖрдЗрдП рд╣рдо рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рд╕реАрдЦрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реВрддреНрд░ рдореЗрдВ рдХрд┐рддрдиреЗ рдмрдВрдбрд▓ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЪрд░ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЪрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдмрдВрдбрд▓ рдХрдо рд╕реЗ рдХрдо рджреЛ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдмреАрдПрдирдУрдбреА рдореЗрдВ рдПрдХ рд╕реВрддреНрд░ рдмрд╛рдпрдкрд╛рд╕ рдЬреЛрдбрд╝реЗрдВ:

C ++ рдХреЛрдб
  void depth_first(function<void (const BNode * n)> do_with_node) { do_with_node(this); if (left != NULL) left->depth_first(do_with_node); if (right != NULL) right->depth_first(do_with_node); } 


рдФрд░ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рджрд░реНрдЬ рдХрд░реЗрдВ:

C ++ рдХреЛрдб
 bool sanity_check(BNode * node) { vector<bool> vars_present(node->glob->VarsNo, false); vector<bool> connectors_present(node->glob->TypesNo, false); node->depth_first([&] (const BNode * n) { if (n->type == n->glob->VarType) { vars_present[ n->varnum ] = true; } else { connectors_present[ n->type ] = true; } }); return all_of( vars_present.begin(), vars_present.end(), [](bool b) {return b;} ) && (accumulate(connectors_present.begin(), connectors_present.end(), 0) > 2); } 


рдЖрдк рдпрд╣ рднреА рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реВрддреНрд░ рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ, рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ - рдЕрдЧрд░ рдПрдХ рдЬрдЯрд┐рд▓ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рд╕реВрддреНрд░ рдЕрдЪрд╛рдирдХ рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рд░реНрдп рдЫрд╛рддреНрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред рдФрд░ рд╣рдорд╛рд░реЗ рдЬрдирд░реЗрдЯрд░ рдореЗрдВ "рдПрдХреНрд╕ рдпрд╛ рдиреЙрдЯ рдПрдХреНрд╕" рдЬреИрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЪрд░ рдмрджрд▓реЗ рдореЗрдВ рд╣рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрдпреЛрдЧ рд╕реЗ рдирд╣реАрдВред

рдЫрд╛рддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкрд░рд┐рдгрд╛рдореА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ, рд╣рдореЗрдВ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ .tex рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ (рдпрд╣рд╛рдВ рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдПрдХ рдкреАрдбреАрдПрдл рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ)ред

рд╕рдорд╛рдзрд╛рди



рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рд╕рдВрд╢рдпрд╡рд╛рджреА рдкрд╛рдардХ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрддреНрддрд┐ рдХрд░реЗрдЧрд╛: рдареАрдХ рд╣реИ, рдмреЗрд╢рдХ, рдЖрдк 9000 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рддрдирд╛ рджреА рдЬрд╛рдПрдЧреА! рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЫрд╛рддреНрд░ рдХреА рд╕рддреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдмрд╣реБрдд рдордЬрдмреВрдд рджрд┐рдорд╛рдЧ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╡рд╕рд╛рдп рд╣реИ, рдЬрд┐рдирд╕реЗ рдореИрдВ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдпрд╣ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рд╕рдХреЗред рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдЫрд╛рддреНрд░ рдЕрднреА рднреА рд╣рд╛рдереЛрдВ рд╕реЗ рдирд┐: рд╢реБрд▓реНрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╣рд╛рде рдбрд╛рд▓реЗрдВрдЧреЗ), рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рдХрд╛рдо рдХрд╛ рд╕рдмрд╕реЗ рдмреБрд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред

рд╣рдореЗрдВ рдЙрддреНрддрд░ рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ LaTeX рдЯреЗрдореНрдкрд▓реЗрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:

LaTeX рдЙрддреНрддрд░рджрд╛рдпреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯреЗрдореНрдкрд▓реЗрдЯ
 {\footnotesize \subsection*{%1%,  %2%}     $%3%$: $$ %4% $$ } \pagebreak 


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

C ++ рдХреЛрдб
  bool increment_counter(vector<bool> & v) { for (int i=v.size()-1; i>=0; --i) { if (!v[i]) { v[i] = true; for (size_t j=i+1; j<v.size(); ++j) v[j] = false; return true; } } return false; } string latex_truthtable() { ostringstream os; vector<bool> counter(glob->VarsNo, false); os << "\\begin{array}{"; for(size_t i=0; i<counter.size(); ++i) os << 'c'; os << "|c}\n"; for(size_t i=0; i<counter.size(); ++i) os << glob->VarNames[i] << " & "; os << " \\\\\\hline\n"; do { for(size_t i=0; i<counter.size(); ++i) os << counter[i] << " & "; os << get_truth_value(counter) << "\\\\\n"; } while (increment_counter(counter)); os << "\\end{array}\n"; return os.str(); } 


рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ process_one_student_file_boolean рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

C ++ рдХреЛрдб
 void process_one_student_file_boolean(string dir, string fname, boost::format & general_tmpl, boost::format & problem_tmpl, boost::format & solution_tmpl) { BNode *node_bool; ostringstream s, ssolution; vector<string> students = readAllLinesFromFile(dir + "/" + fname + ".txt"); cout << "\t " << fname << endl; for (size_t i=0; i<students.size(); ++i) { if (students[i].size() == 0) continue; // empty line cout << "\t\t[ " << students[i] << " ]" << endl; do { node_bool = generate_tree(GBoolean, 2, 4); } while (!sanity_check(node_bool)); string group_string = "$" + fname + "$"; s << problem_tmpl % students[i] % group_string % node_bool->ToString(); ssolution << solution_tmpl % students[i] % group_string % node_bool->ToString() % node_bool->latex_truthtable(); delete node_bool; } ofstream ofs; open_for_writing(dir + "/" + fname + ".tex", ofs); ofs << general_tmpl % s.str() << endl; ofs.close(); open_for_writing(dir + "/" + fname + ".sol.tex", ofs); ofs << general_tmpl % ssolution.str() << endl; ofs.close(); } string students_dir = "2013"; vector<string> students_files = { "BoTR" }; int main(int argc, char *argv[]) { boost::format boolean_tpml( read_file_as_string("boolean_problem_minimal.tex") ); boost::format solution_tpml( read_file_as_string("boolean_solution_minimal.tex") ); boost::format general_tmpl( read_file_as_string("general_template.tex") ); for (size_t i = 0; i < students_files.size(); ++i) { process_one_student_file_boolean(students_dir, students_files[i], general_tmpl, boolean_tpml, solution_tpml); } return 0; } 


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓ ( рдЙрджрд╛рд╣рд░рдг ) рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрдгрдп рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ ( рдЙрд╕реА рдЙрджрд╛рд╣рд░рдг, рд╕рдорд╛рдзрд╛рди ), рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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



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

PS рдЬрдм рдореИрдВ рд╣реЗрдмрд░ рдкрд░ рдПрдХ рд▓реЗрдЦ рддреИрдпрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕реВрддреНрд░ рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдмрдЧ рдорд┐рд▓рд╛; рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЪреМрдХрд╕ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдпрд╛рдо: рдХреНрдпрд╛ рд╕реВрддреНрд░, рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдореЗрд░рд╛ рдЬрдирд░реЗрдЯрд░ рдХрднреА рднреА рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? (рдХреНрд░рдо рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдХрд┐рдпрд╛ рдерд╛)

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


All Articles