рд╢рдирд┐рд╡рд╛рд░, 30 рдЬреБрд▓рд╛рдИ рдХреЛ 10:00 рдореЙрд╕реНрдХреЛ рд╕рдордп рдкрд░ рдИрд░рд╛рди рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреА рдкрд╣рд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдЕрдЬреНрдЮрд╛рдд рднрд╛рд╖рд╛ рдХрд╛ рд░рд╛рдЙрдВрдб # 3 рд▓рдЧреЗрдЧрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдпрд╣ рдЦреЗрд▓ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдордиреЛрд░рдВрдЬрди рдХрд╛ рдПрдХ рдореВрд▓ рд░реВрдк рд╣реИ, рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рд╕рд╛рд▓ рдлрд░рд╡рд░реА рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк
рдпрд╣рд╛рдБ рдереЛрдбрд╝рд╛ рдФрд░ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдФрд░ рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╡реАрдирддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рддреАрди рдШрдВрдЯреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рдордп рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдЕрдЬреНрдЮрд╛рдд рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреА рд╣реЛрдЧреАред рдХрд╛рд░реНрдп рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ (
рдЙрджрд╛рд╣рд░рдг ) рд╕реЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ (
рдЙрджрд╛рд╣рд░рдг ) рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдЬреЛрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╣реИ рдЬреЛ рдХреБрд╢рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддрдХрдиреАрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдкрд┐рдЫрд▓реЗ рджреМрд░ рдореЗрдВ, рд╣рдордиреЗ Tcl рдФрд░ Io рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣ рдордЬреЗрджрд╛рд░ рдерд╛!
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреАрдиреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рд╡рд╛рд╢реА рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬрд┐рд╕рдиреЗ рд▓рдЧрднрдЧ 50 рдорд┐рдирдЯ рдореЗрдВ
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдЕрдЬреНрдЮрд╛рдд Io рднрд╛рд╖рд╛ рдореЗрдВ рдРрд╕рд╛ рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб рд▓рд┐рдЦрд╛:
ini := Map clone section := "" ini atPut(section, Map clone) n := File standardInput readLine asNumber File standardInput readLines foreach(line, line = line asMutable strip if (line containsSeq(";"), continue) if (line containsSeq("["), section = line strip("[") strip("]") strip ini atIfAbsentPut(section, Map clone), kv := line split("=") key := kv at(0) asMutable strip value := kv at(1) asMutable strip ini at(section) atPut(key, value) ) ) ini keys sort foreach(section, if (section size > 0, ("[" .. section .. "]") println) subini := ini at(section) subini keys sort foreach(key, value = subini at(key) (key .. "=" .. value) println ) )
рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрдХрд░ рдЗрд╕ рдордЬреЗрджрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ: