рдЬрд┐рдпрд╛рдВрдЧреНрд╢реА рдФрд░ tcl

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




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

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

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рд╣реИ:
#!/usr/bin/tclsh #---  (+ ab)    #---  ,   , (a + b)     namespace path {::tcl::mathop ::tcl::mathfunc} #---   proc lsum L {expr [join $L +]+0} proc random range {expr int(rand()*$range)} 


рдЬреЛрдбрд╝реЗ рдЦреЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб:
 set n_max 20 ;#  for {set i 1} {[<= $i $n_max]} {incr i} { set q [/ [+ [sqrt 5] 1 ] 2] ;# " " set a [int [* $q $i]] ;#i-  a set b [+ $a $i] ;#ie  b lappend lPair1 "$a $b" ;#   lPair1  a  b } 

рдЖрдк рд╕реВрдЪреА рдХреЛ рдЗрд╕ рддрд░рд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
  puts lPair1; #    ;  ,  ,       

рдпрд╣рд╛рдБ рдЙрддреНрдкрд╛рджрди рд╣реИ:
{реж реж} {рез реи} {рей рел} {рек 6} {рем резреж} {} резрей} {реп резрел} {резрез рез}} {резреи реиреж} {резрек реирей} {резрем реирем} {рез} реи {} {рез реп 31} {21 34} {22 36} {24 39} {25 41} {27 44} {29 47} {30 49} {32 52}}

рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрди рдЬреЛрдбрд╝рд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП; рдЖрдкрдХреЛ рдпрд╣ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреЛрдбрд╝реА рдХреИрд╕реЗ рдЪреБрдиреЗрдВред рдирдП рд░рд╛рдЬреНрдп рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 3 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкрддреНрдерд░реЛрдВ рдХреЛ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХрджрдо рдХреЗ рд╕рд╛рде рдкрддреНрдерд░реЛрдВ рдХрд╛ рдпреЛрдЧ рдШрдЯрддрд╛ рд╣реИред
рдХрдВрдкреНрдпреВрдЯрд░ рдЪрд╛рд▓рди рдХрдорд╛рдВрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:

 #--- : #----st -  , #----lAns -             #----lPair -      , #--------------         proc turn {st lAns lPair} { set st_cur_sum [lsum $st] ;#   #---   ,    0    0, #---  ,      if {[== 0 $st_cur_sum]} {return {you win}} set a [lindex $st 0] ;#      set b [lindex $st 1] ;#      #---lindex -       , #---           set c [abs [- $a $b]] #--- ,     #---    ,     set a1 [min $a [lindex $lAns $b]] set b1 [min $b [lindex $lAns $a]] set cPair1 [lindex $lPair $c] #---      set a2 [random $a] set b2 [random $b] set c2 [random [+ 1 [min $a $b]]] set cPair2 [list [- $a $c2] [- $b $c2]] set st_next1 [list "$a $b1" [+ $a $b1]] set st_next2 [list "$a1 $b" [+ $a1 $b]] set st_next3 [list "$cPair1" [lsum $cPair1]] #---    set lst_next [list $st_next1 $st_next2 $st_next3] #---     set st_next [lindex [lsort -integer -index 1 $lst_next] 0] set st_next_sum [lindex $st_next 1] if {[== 0 $st_next_sum]} {return {i won}} ;#   -  ,   #--- ,     #---  ,    - , #--- :   ,      ,   #---   ,     if {[> $st_cur_sum $st_next_sum]} { return [lindex $st_next 0] } else { #---     -    switch [random 3] { 0 {return "$a $b2"} 1 {return "$a2 $b"} 2 {return "$cPair2"} } } } 

LAns рдФрд░ lPair рдХреНрдпрд╛ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рд╡рд░рдгред рдПрдХ рдЬреАрдд рд╡рд╛рдкрд╕реА рдХрджрдо рдКрдкрд░ рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╣рд▓реЗ рджреЛ рдореЗрдВ рд╣реА рдХреНрдпрд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИред рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рдвреЗрд░ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ рдвреЗрд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдкрддреНрдерд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЖрдк рдкрд╣рд▓реЗ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдЖрдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рд╣рдо рдХрд┐рддрдирд╛ рдирд╣реАрдВ рд▓реЗрддреЗ, рд▓реЗрдХрд┐рди рдХрд┐рддрдирд╛ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВред LAns рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ:
0 2 1 5 7 3 10 4 13 15 6 18 20 8 23 9 26 28 11 31 31 12 34 36 14 39 41 ...
рд╕реВрдЪреА рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдвреЗрд░ рдореЗрдВ рдкрддреНрдерд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рд╣реАрдк рдореЗрдВ рдкрддреНрдерд░реЛрдВ рдХреА рдирдИ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдкрддреНрдерд░ рд▓реЗрдВрдЧреЗред
LPair рдХреА рд╕рд╛рдордЧреНрд░реА рдЙрдкрд░реЛрдХреНрдд lPair1 рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдореВрд▓реНрдп рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдмрд░рд╛рдмрд░ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдкрддреНрдерд░реЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рдПрдХ рдирдИ рдЬреЛрдбрд╝реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 puts {Enter heap sizes:} #--- ,     if {[< 0 [gets stdin state]]} { #---    set n_max [lindex [lsort -integer $state] end] #---    genAnsList $n_max lPair lAns #---   set state [turn $state $lAns $lPair] #   puts $state #---      while {[< 0 [gets stdin state]]} { set state [turn $state $lAns $lPair] puts $state } } 


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

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


All Articles