home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 31 / Flop_Magazin_31_1994_05_Raster_cs_Side_A.atr / reseni30.cap < prev    next >
Text File  |  2023-02-26  |  5KB  |  1 lines

  1.    Popis @e&en) hlavolamu z ')sla 30¢¢   Cht%l bych pod%kovat za do&l* @e&en). A'koliv mus)m @)ci, (e moje jsou rychlej&), Va&e programy po')taj) naprosto bezchybn%. ╱Poda@ilo se mi zoptimalizovat minul[ @e&en) tak, (e po')t* 2 vte@iny.╱!$$¢¢   Stejn% jako u minul[ho p@)padu bude z@ejm% nejlep&) postup vyzkou&et v&echny kombinace. P@edt)m jsem v&ak provedl jednoduchou ]vahu, kter[ mo(nosti nem* v+bec cenu zkou&et. Takto se mi poda@ilo zkr*tit v`po'et na m[n% ne( 5 procent. ╱I kdy( to v tomto p@)pad% nen) tak dramatick[ - zkr*til jsem v`po'et z 1.45 minuty na cca 4 sec.$¢¢   Tak(e - m*me sch[ma, do n%j( m*me zapsat 11 ')sel 1 a( 11 bez opakov*n). Doporu'il bych zkoumat 4 rohov[ body. Tam m+(eme dosadit:¢   4 lich* ')sla - potom ov&em mus) b`t lich* ')sla i na spojnic)ch a ]hlop@)'k*ch, aby sou'et byl tak[ lich` ╱21$ a tolik lich`ch ')sel nem*me. ╱na 'ar*ch mohou b`t bu⇦ 3 lich* ')sla, nebo 1 lich[ a dv% sud* ')sla$.¢   3 lich* a 1 sud[ - tak[ nelze, proto(e ve st@edu by muselo b`t pro jednu ]hlop@)'ku lich[ a pro druhou sud[ ')slo.¢   2 lich* a 2 sud* ')sla "vedle sebe" - tato eventualita by mohla vyhovovat, pou(ijeme na ni v&ech 5 sud`ch ')sel a 4 lich* a tedy 2 lich* n*m z+stanou na "oc*sek" nav%&en` na jednom rohu.¢   2 lich* a 2 sud* ')sla "]hlop@)'n%" - tady pot@ebujeme 6 sud`ch ')sel a tolik jich nem*me.¢   1 lich[ a 3 sud* ')sla - nejde ze stejn[ho d+vodu jako 3 lich* a 1 sud[.¢   4 sud* ')sla - tato eventualita je druh* mo(n*.¢   Tak(e shrnut): kdy( zat)m odhl[dneme od onoho "oc*sku" a zam%@)me se na matici 9 ')sel, je z@ejm[, (e po jedn[ jej) stran%, dejme tomu horn), mus) b`t rohov* ')sla sud* a pochopiteln% nesm) b`t stejn*. Pro v`po'ty m+(eme p@edpokl*dat nap@., (e lev[ ')slo je men&) ne( prav[ - t)m vylou')me v`po'ty symetrick`ch ekvivalent+ podle svisl[ osy ╱tedy vlastn% stejn[ v`sledky, pouze "zrcadlov% obr*cen[$.¢   Abychom mohli cel` syst[m dopo')tat, mus)me si zvolit je&t% ')slo na dvou ]hlop@)'k*ch. O n%m v&ak nev)me nic bli(&)ho, proto(e n*mi zvolen[ dv% mo(nosli umo(uj) jak lich[ ╱pro v&echna rohov* sud*$, tak sud[ ')slo ╱pro protilehl[ lich[ rohy$.¢   m*me li takto zvolen[ kombinace 3 ')sel, m+(eme cel` p@)klad dopo')tat a zjistit, zda je v+bec re*ln`.¢¢   Nyn) ale ji( k programu:¢   @*dky 10 a( 100 nepot@ebuj) snad (*dn` koment*@.¢   110 vynuluje hodiny a dimenzuje pole 11 prom%nn`ch A, kde se budou prov*d%t v`po'ty a pomocn[ pole B.¢   120 definice lev[ho horn)ho rohu I. V cyklu se mu budou p@i@azovat v&echna sud* ')sla ╱krom% 10, proto(e k n%mu bychom nena&li vy&&) sud[ pro prav` roh$.¢   130 definice prom%nn[ POM. Do n) se ulo() nejmen&) mo(n[ sud[ ')slo, kter[ je mo(n[ dosadit do prav[ho horn)ho rohu tak, aby platilo:¢             I⇩POM⇩X=21¢   kde I je lev` roh, POM je nejni(&) mo(n* hodnota pro prav` roh a X je nejvy&&) lich[ ')slo mezi nimi ╱p@edpokl*d* se 11$. Pokud je POM men&) nebo rovno I, bere se jako POM ')slo I⇩2 - nejbli(&) vy&&) sud[ ')slo.¢   140 definice prav[ho rohu J. Vzhledem k @*dku 130 je tu v(dy ')slo, kter[ d*v* smysl ╱sud[ POM a( 10$¢   150 definice ')sla na ]hlop@)'k*ch K. Nab`v* sud`ch i lich`ch hodnot 10-I a( 11 ╱')sla men&) ne( 10-I nem* cenu testovat. Prav` doln) roh by vy&el v%t&) ne( 11. ╱a lev` doln) roh je v(dy men&) jako prav`$.¢   160 a 170 - test, zda ')slo na ]hlop@)'k*ch nen) stejn[ jako jeden z horn)ch roh+. Pokud je, p@edpoklad se "vyhod)" jako nespr*vn` ╱skok na @*dek 830$¢   180 vymaz*n) pomocn[ho pole B¢   230 a( 250 p@i@azen) hodnot I,J,K do pole A ╱hodnoty jsou indexov*ny postupn% po @*dc)ch dev)ti'lenn[ 3x3 matice$. Z*rove se pou(it[ hodnoty ozna') v poli B ╱nap@. bod A╱1$ - lev` horn) bod - obsahuje ')slo 6, potom se B╱A╱1$$, neboli B╱6$, nastav) z 0 na 1$.¢   270 - v`po'et hodnoty mezi horn)mi rohy ╱na spojnici zn*me 2 body, m+(eme snadno spo')tat t@et)$.¢   280 - je-li vypo'ten* hodnota mimo interval <1,11>, potom nem* smysl po')tat d*l, prvn) t@i p@edpokl*dan* ')sla byla chybn*.¢   290 - pokud bylo vypo'ten[ ')slo pou(ito, rovn%( kon')me.¢   300 v&e bylo v po@*dku, ozna')me vypo'ten[ ')slo jako pou(it[.¢   320 a( 550 podle stejn[ho sch[matu dopo')t*me zb`vaj)c)ch 5 ')sel v matici.¢   Nyn) m*me vyhovuj)c) matici 9 ')sel.   600 nastav)me pomocn[ prom%nn[ O na 0 a P na 10¢   610 a( 620 cyklus, kde vyhled*v*me 2 posledn) nepou(it* ')sla. Budou ulo(ena do prom%nn`ch A╱10$ a A╱11$ a jejich sou'et do prom%nn[ O.¢   630 a( 670 pokud sou'et O ⇩ jeden ze 'ty@ roh+ je roven 21, potom m*me @e&en).¢720 a( 780 v`pis spr*vn[ho @e&en).¢830 a( 840 konec cykl+ definuj)c)ch prvn) t@i body.¢890 a( 930 v`pis pot@ebn[ho 'asu.¢¢   pozn. Pokud by @e&en) bylo typu 4 sud* ')sla v roz)ch, vypsalo by se jedno spr*vn[ @e&en) 4x ╱na&lo by se jako spr*vn[ pro v&echny 4 strany. Neb`t prvn)ho omezen) na symetrii, vypsalo by se 8x, a v`po'et by trval 2x d[le$.¢¢                         Jan Walla¢