You are on page 1of 205

1

.cnI , lanoitanretnI llaH -ecitnerP


eihctiR .M sinneD dna nahginreK .W nairB yb
noitidE dnoceS ,egaugnaL gnimmargorP C ehT
ni sesicrexE eht ot snoituloS
noitidE dnoceS
kooB rewsnA
C
2
odnoT .L sivolC
.tnuoY nedE dna ,tiaW nhoJ ,odnoT solraC ,nilreP evaD ,uoalokinapaP
eihpoS ,nosnahtaN werdnA ,yessirroM yramesoR ,ollertsiM ailuJ
,ibargaM naoJ ,yekcaM evetS ,gnueL ecurB ,hcutsoK noD ,nahginreK nairB
:noitide dnoces siht ecudorp ot su depleh taht sdneirf eht knaht eW
.C ni tneiciforp emoceb uoy spleh koob siht epoh eW .wolf lacigol eht ees
uoy pleh ot smargorp ruo tamrof dna ,senituor yrarbil fo esu evisnetxe ekam
,edoc ruo eziraludom ,egaugnal eht fo serutaef doog esu eW .srehto fo taht gni
.R&K sa ot derrefer retfaereH*
-yduts dna edoc nwo ruoy gnitirw-gnimmargorp seriuqer osla tI .snoitcurtsnoc
egaugnal eht gnidaer ylno yb egaugnal gnimmargorp a nrael tonnac uoY
.noitulos hcae fo
sthgilhgih eht ebircsed tub ,R&K taeper ot ton yrt eW .esicrexe eht ot pu R&K
ni lairetam eht daer evah uoy emuserp eW .snoitulos eht nialpxe eW
.snoitulos deniartsnocnu tneserp osla ew semit
tA .ti gnisu yb )R&K 02 egap( 01-1 dna ,9-1 ,8-1 sesicrexE ot snoitulos eht
evorpmi dluoc uoy ,revewoH .ti esu ton od ew ,R&K fo 12 egap no denialpxe si
2-tnemetats
esle
1-tnemetats
)noisserpxe( fi
tnemetats eht litnu .elpmaxe roF .snoitulos retteb ylbissop edivorp
ot elba eb lliw uoy ,egaugnal C eht tuoba erom nrael uoy nehw ,retaL
.R&K fo ecap
eht wollof ot si tnetni ehT .R&K ni raeppa sesicrexe eht emit eht ta nwonk
snoitcurtsnoc egaugnal eht gnisu snoitulos ruo tliub eW .ereh detneserp
snoitulos eht yduts neht ,sesicrexe eht krow ,C nrael ot R&K esU .slliks
gnimmargorp C doog uoy hcaet dna C dnatsrednu uoy pleh lliw ,R&K htiw
noitcnujnoc ni desu ,noitide dnoces ,kooB rewsnA C ehT fo yduts luferaC
.R&K fo noitide dnoces eht dna dradnats
ISNA eht htob ot mrofnoc ot snoitulos eht nettirwer evah eW .egaugnaL
gnimmargorP C ehT fo noitide tsrif eht deifidom R&K dna C rof dradnats
ISNA eht decudorp )ISNA( etutitsnI sdradnatS lanoitaN naciremA ehT
.*)8891 ,llaH ecitnerP( eihctiR .M
sinneD dna nahginreK .W nairB yb ,noitide dnoces ,egaugnaL gnimmargorP
C ehT ni sesicrexe eht lla ot snoitulos sedivorp tI .KOOB REWSNA na si sihT
ecaferP
3
502 xednI
981 ecafretnI metsyS XINU ehT .8 retpahC
171 tuptuO dna tupnI .7 retpahC
451 serutcurtS .6 retpahC
001 syarrA dna sretnioP .5 retpahC
27 erutcurtS margorP dna snoitcnuF .4 retpahC
26 wolF lortnoC .3 retpahC
74 snoisserpxE dna ,srotarepO ,sepyT .2 retpahC
4 noitcudortnI lairotuT A .1 retpahC
2 ecaferP
stnetnoC
4
nekat si ,nolocimes eht dna sisehtnerap thgir eht htiw gnola ,etouq elgnis ehT
.etouq elgnis a sa depytsim si n¥ retfa " etouq elbuod eht elpmaxe driht eht nI
}
;)'n¥dlrow ,olleh"(ftnirp
{
)(niam
>h.oidts< edulcni#
.egassem etairporppa eht tnirp dna gnissim si nolocimes eht
taht ezingocer dluohs relipmoc ehT .snolocimes yb detanimret era stnemetats
C laudividnI .)(ftnirp retfa gnissim si );( nolocimes eht elpmaxe dnoces eht nI
}
)"dlrow ,olleh"(ftnirp
{
)(niam
>h.oidts< edulcni#
.enil eht fo dne eht ta
rosruc eht sevael sihT .gnissim si )n¥(retcarahc enilwen eht elpmaxe siht nI
}
;)"dlrow ,olleh"(ftnirp
{
)(niam
>h.oidts< edulcni#
.teg uoy segassem rorre tahw ees ot margorp eht fo strap
tuo gnivael htiw tnemirepxE .metsys ruoy no margorp "dlrow ,olleh" eht nuR
)R&K 8 egap( :1-1 esicrexE
noitcudortnI lairotuT A 1 RETPAHC
5
.gnirts a ni
retcarahc enilwen a si ereht taht ro ,gnol oot si gnirts eht ,ecarb thgir a erofeb
gnissim si sisehtnerap thgir a taht ,gnissim si etouq elbuod a taht nialpmoc
dna rorre na sa siht ezingocer dluohs relipmoc ehT .gnirts eht fo trap sa
6
.tes retcarahc IICSA eht ni peeb trohs a eb ot
deificeps si 7¥ .retcarahc a tneserper ot stigid latco eerht ot pu yb dewollof ¥
a evah ot elbissop si tI .7 IICSA yb decudorp peeb trohs a si >LLEB< erehw
?dlrow ,olleh>LLEB<dlrow ,ollehydlrow ,olleh
eb thgim
tluser elbissop enO .tnedneped relipmoc si tnemirepxe siht fo tluser ehT
.denifednu si
roivaheb eht ,deificeps esoht fo eno ton si ¥ eht gniwollof retcarahc eht fI
setats )A xidneppA( launaM ecnerefeR ehT
}
;)"?¥dlrow ,olleh"(ftnirp
;)"7¥dlrow ,olleh"(ftnirp
;)"y¥dlrow ,olleh"(ftnirp
{
)(niam
>h.oidts< edulcni#
.evoba detsil ton retcarahc emos si c erehw ,c¥
sniatnoc gnirts tnemugra s'ftnirp nehw sneppah tahw tuo dnif ot tnemirepxE
)R&K 8 egap( :2-1 esicrexE
7
.R&K 21 egap no emas eht si margorp eht fo redniamer ehT .gnidaeh
eht htiw tuptuo eht ngila ot f1.6% dna f0.3% neewteb secaps owt dedda
osla eW .snmuloc etairporppa eht evoba gnidaeh a secudorp pool eht erofeb
/* enil noitidda eht */ ;)"n¥suisleC rhaF"(ftnirp
fo noitidda ehT
}
}
;pets + rhaf = rhaf
;)suislec ,rhaf ,"n¥f1.6% f0.3%"(ftnirp
;)0.23-rhaf( * )0.9/0.5( = suislec
{ )reppu =< rhaf( elihw
;rewol = rhaf
/* enil noitidda eht */ ;)"n¥suisleC rhaF"(ftnirp
/* ezis pets */ ;02 = pets
/* timil reppu */ ;003 = reppu
/* elacs eriutarepmet fo timil rewol */ ;0 = rewol
;pets ,reppu ,rewol taolf
;suislec ,rhaf taolf
{
)(niam
/* noisrev tniop-gnitaolf
;003 ,... ,02 ,0 = rhaf rof elbat suisleC-tiehnerhaF tnirp */
>h.oidts< edulcni#
.elbat
eht evoba gnidaeh a tnirp ot margorp noisrevnoc erutarepmet eht yfidoM
)R&K 31 egap( :3-1 esicrexE
8
.timil reppu sti sdeecxe suislec elbairav eht litnu staeper pool elihw ehT
.ezis pets eht yb suislec elbairav eht stnemercni dna tiehnerhaF dna suisleC
stnirp margorp ehT .detaluclac si erutarepmet tiehnerhaF tnelaviuqe eht
pool elihw eht edisni dna ,timil rewol eht ot dezilaitini si suislec elbairav ehT
.ylevitcepser ,suislec elbairav eht fo ezis pets dna ,timil reppu ,timil rewol eht
ot refer pets dna reppu ,rewol selbairav regetni ehT .elbat suisleC-tiehnerhaF
eht stnirp taht margorp eht ni desu sa cigol emas eht swollof noitulos ehT
;0.23 + 0.5 / )suislec * 0.9( = rhaf
:tnemetats eht gnisu detaluclac era
tiehnerhaF seergeD .seulav tiehnerhaF tnelaviuqe rieht dna )003-0(suisleC
eerged ni serutarepmet gniniatnoc elbat a secudorp margorp ehT
}
}
;pets + suislec = suislec
;)rhaf ,suislec ,"n¥f1.6% f0.3%"(ftnirp
;0.23 + 0.5/)suislec * 0.9( = rhaf
{ )reppu =< suislec( elihw
;rewol = suislec
;)"n¥rhaF suisleC"(ftnirp
/* ezis pets */ ;02 = pets
/* timil reppu */ ;003 = reppu
/* elacs eriutarepmet fo timil rewol */ ;0 = rewol
;pets ,reppu ,rewol taolf
;suislec ,rhaf taolf
{
)(niam
/* noisrev tniop-gnitaolf
;003 ,... ,02 ,0 = suislec rof elbat tiehnerhaF-suisleC tnirp */
>h.oidts< edulcni#
.elbat tiehnerhaF ot suisleC gnidnopserroc eht tnirp ot margorp a etirW
)R&K 31 egap( :4-1 esicrexE
9
.ezis pets eht yb elbairav tiehnerhaF eht stnemerced
02 - rhaf = rhaf
,noisserpxe pets ehT .eurt si tnemetats eht sa gnol sa seunitnoc pool rof
ehT .timil rewol sti steem ro sdeecxe elbairav tiehnerhaF eht rehtehw stset
0 => rhaf
,pool rof eht slortnoc taht noitidnoc eht
ro trap dnoces ehT .timil reppu sti ot )rhaf( elbairav tiehnerhaF eht sezilaitini
003 = rhaf
,tnemetats rof eht fo trap tsrif ehT
)02 - rhaf = rhaf ;0 => rhaf ;003 = rhaf( rof
si noitacifidom ylno ehT
}
;))23-rhaf(*)0.9/0.5( ,rhaf ,"n¥f1.6% d3%"(ftnirp
)02 - rhaf = rhaf ;0 => rhaf ;003 = rhaf( rof
;rhaf tni
{
)(niam
/* elbat suisleC-tiehnerhaF tnirp */
>h.oidts< edulcni#
.0 ot seerged 003 morf ,si taht
,redro esrever ni elbat eht tnirp ot margorp noisrevnoc erutarepmet eht yfidoM
)R&K 41 egap( :5-1 esicrexE
01
.setanimret pool eht dna c ot dengissa si 0 nehT .eslaf si noisserpxe
eht ,elif fo dne eht sretnuocne margorp eht nehW .c ot dengissa si 1 oS .eurt si
FOE =! )(rahcteg
dna elif fo dne eht nruter
ton seod ti daer ot retcarahc a sah rahcteg elihW .evoba noisserpxe eht sesu
dna tupni dradnats eht morf sretcarahc sdaer margorp ehT .)R&K 71 egap(
)FOE =! )(rahcteg( = c
ot tnelaviuqe si
FOE =! )(rahcteg = c
noisserpxe ehT
}
;)c ,"n¥FOE ta-d%"(ftnirp
;)c ,"n¥d%"(ftnirp
)FOE =! )(rahcteg = c( elihw
;c tni
{
)(niam
>h.oidts< edulcni#
.1 ro 0 si FOE =!)(rahcteg noisserpxe eht taht yfireV
)R&K 71 egap( :6-1 esicrexE
11
.elbatop margorp
ruoy ekam pleh FOE ekil stnatsnoc cilobmys dradnats yhw s'tahT .metsys
ot metsys morf yrav yam ti tub ,1- si FOE metsys ruo nI .elif edulcni eht ni
FOE enifed#
swollof txet revetahw yb decalper si )(ftnirp ni etouq elbuod
eht edistuo FOE ehT .>h.oidts< ni denifed si FOE tnatsnoc cilobmys ehT
}
;)FOE ,"n¥d% si FOE"(ftnirp
{
) (niam
>h.oidts< edulcni#
.FOE fo eulav eht tnirp ot margorp a etirW
)R&K 71 egap( :7-1 esicrexE
21
/* sknalb fo rebmun */ ;0 = bn
;ln ,tn ,bn ,c tni
{
)(niam
/* senilwen ,sbat ,sknalb tnuoc*/
>h.oidts< edulcni#
:eb dluoc noitulos eht egdelwonk
taht htiW .R&K 12 egap litnu detneserp ton si tnemetats esle-fi ehT
.)FOE snruter rahcteg( setanimret
pool elihw eht nehw stluser eht stnirp margorp ehT .detnemercni si retnuoc
etairporppa neht ,eerht eseht fo eno si ti fI .nekat si noitca on neht ,enilwen
ro ,bat ,knalb a tub gnihtyna si deviecer retcarahc eht fI .pool eht hguorht
emit hcae detucexe era stnemetats fi llA .dedrocer si tupni morf enilwen
dna ,bat ,knalb hcae fo ecnerrucco eht ,pool elihw eht fo ydob eht edisnI
.0 ot lauqe
tes era selbairav eerht eseht ,yllaitinI .ylevitcepser ,senilwen dna ,sbat,sknalb
fo rebmun eht tnuoc ot desu era ln dna tn,bn selbairav regetni ehT
}
;)ln ,tn ,bn ,"n¥d%d%d%"(ftnirp
}
;ln++
)'n¥' == c( fi
;tn++
)'t¥' == c( fi
;bn++
)' ' == c( fi
{ )FOE =! ))(rahcteg = c(( elihw
/* senilwen fo rebmun */ ;0 = ln
/* sbat fo rebmun */ ;0 = tn
/* sknalb fo rebmun */ ;0 = bn
;ln ,tn ,bn ,c tni
{
)(niam
/* senilwen ,sbat ,sknalb tnuoc*/
>h.oidts< edulcni#
.senilwen dna ,sbat ,sknalb tnuoc ot margorp a etirW
)R&K 02 egap( :8-1 esicrexE
31
}
;)ln ,tn ,bn ,"n¥d%d%d%"(ftnirp
;ln++
)'n¥' == c( fi esle
;tn++
)'t¥' == c( fi esle
;bn++
)' ' == c( fi
)FOE =! ))(rahcteg = c(( elihw
/* senilwen fo rebmun */ ;0 = ln
/* sbat fo rebmun */ ;0 = tn
41
;ctsal ,c tni
{
)(niam
/* knalb gnirts a htiw sknalb fo gnirts ecalper */
'a' KNALBNON enifed#
>h.oidts< edulcni#
:eb dluoc noitulos eht egdelwonk
taht htiW .R&K 12 egap litnu detneserp ton si tnemetats esle-fi ehT
.staeper ssecorp eht dna ,detadpu si ctsal ,yllaniF .sknalb
fo gnirts a fo knalb tsrif eht ro knalb elgnis a rof stset tnemetats fi driht eht
dna ,sknalb seldnah tnemetats fi dnoces ehT .meht stnirp ti―sknalbnon eht
fo ecnerrucco eht seldnah pool elihw eht fo ydob eht ni tnemetats fi tsrif ehT
.retcarahc knalbnon
yrartibra na ot ctsal sezilaitini KNALBNON tnatsnoc cilobmys ehT .retcarahc
suoiverp eht fo eulav IICSA eht sdrocer ctsal dna tupni morf deviecer
retcarahc tneserp eht fo eulav IICSA eht sdrocer c elbairav regetni ehT
}
}
;c = ctsal
;)c(rahctup
)' ' =! ctsal( fi
)' ' == c( fi
;)c(rahctup
)' ' =! c( fi
{ )FOE =! ))(rahcteg = c(( elihw
;KNALBNON = ctsal
;ctsal ,c tni
{
)(niam
/* knalb gnirts a htiw sknalb fo gnirts ecalper */
'a' KNALBNON enifed#
>h.oidts< edulcni#
knalb elgnis a yb sknalb erom
ro eno fo gnirts hcae gnicalper .tuptuo >ti ot tupm sti ypoc ot margorp a etirW
)R&K 02 egap( :9-1 esicrexE
51
}
}
;c = ctsal
;)c(rahctup
)' ' =! ctsal || ' ' =! c( fi
{ )FOE =! ))(rahcteg = c(( elihw
;KNALBNON = ctsal
;ctsal ,c tni
{
)(niam
/* knalb gnirts a htiw sknalb fo gnirts ecalper */
'a' KNALBNON enifed#
>h.oidts< edulcni#
:eb dluoc noitulos eht egdelwonk taht
htiW .R&K 12 egap litnu detneserp ton osla si rotarepo )||( RO lacigol ehT
}
}
;c = ctsal
;)c(rahctup
)' ' =! ctsal( fi esle
;)c(rahctup
)' ' =! c( fi
{ )FOE =! ))(rahcteg = c(( elihw
;KNALBNON = ctsal
61
;)"t¥¥"(ftnirp
)'t¥' == c( fi
)FOE =! ))(rahcteg = c(( elihw
;c tni
{
)(niam
/* sretcarahc elbasiv htiw secapskcab dna sbat ecalper */
>h.oidts< edulcni#
:eb dluoc noitulos eht egdelwonk
taht htiW .R&K 12 egap litnu detneserp ton si tnemetats esle-fi ehT
.ftnirp ot "¥¥¥¥" gnirts eht gnissap yb
sehsalskcab owt tnirp eW .C ni '¥¥' sa detneserper si retcarahc hsalskcab A
.si sa stnirp si esle gnihtynA .¥¥ htiw hsalskcab
a dna ,b¥ htiw ecapskcab a ,t¥ htiw ti ecalper ew bat a si ti fI .esle gnihtyna
ro ,hsalskcab a ,ecapskcab a ,bat a eb nac tupni morf deviecer retcarahc ehT
}
}
;)c(rahctup
)'¥¥' =! c( fi
)'t¥' =! c( fi
)'b¥' =! c( fi
;)"¥¥¥¥"(ftnirp
)'¥¥' == c( fi
;)"b¥¥"(ftnirp
)'b¥' == c( fi
;)"t¥¥"(ftnirp
)'t¥' == c( fi
{ )FOE =! ))(rahcteg = c(( elihw
;c tni
{
)(niam
/* sretcarahc elbasiv htiw secapskcab dna sbat ecalper */
>h.oidts< edulcni#
.yaw suougibmanu na ni elbisiv
secapskcab dna sbat sekam sihT .¥¥ yb hsalskcab hcae dna ,b¥ yb ecapskcab
hcae ,t¥ yb bat hcae gnicalper ,tuptuo sti ot tupni sti ypoc ot margorp a etirW
)R&K 02 egap( :01-1 esicrexE
71
}
;)c(rahctup
esle
;)"¥¥¥¥"(ftnirp
)'¥¥' == c( fi esle
;)"b¥¥"(ftnirp
)'b¥' == c( fi esle
81
sknalb emos retfa gnitrats drow―
enil eht fo gninnigeb eht ta gnitrats drow―
sbat dna sknalb on―enil rep drow eno―
senilwen dna ,sbat ,sknalb tsuj―sdrow on―
senilwen tsuj―sdrow on―
tupni on―
:era seiradnuob emoS .snoitidnoc
yradnuob tset taht esoht era sgub revocnu ot ylekil tsom tupni fo sdnik ehT
.)4 2 2 eb dluohs tuptuo eht( enil rep drow eno-sdrow retcarahc-eno
2 dna )4 2 1 eb dluohs tuptuo eht( sdrow retcarahc-eno 2 yrt ,noitidda nI
.)retcarahc enilwen a yb dewollof sretcarahc owt-sretcarahc eerht ,drow
eno ,enilwen eno( 3 1 1 :eb dluohs tuptuo ehT .drow retcarahc-owt a yrt nehT
.)retcarahc enilwen a yb dewollof rettel a-sretcarahc owt ,droweno
,enilwen eno( 2 1 1 : eb dluohs tuptuo ehT .drow retcarahc-eno a yrt nehT
.)sretcarahc orez ,sdrow orez ,senilwen orez(
0 0 0 : eb dluohs tuptuo ehT .tupni on yrt tsrif margorp tnuoc drow eht tset oT
?yna era ereht fi sgub revocnu ot ylekil
tsom era tupni fo sdnik tahW ?margorp tnuoc drow eht tset uoy dluow woH
)R&K 12 egap( :11-1 esicrexE
91
.nekat sinoitca on esiwrehto ;detadpu si etats dna detnirp si enilwen
a ,os fI .drow a fo dne eht seifingis rotarapes drow siht rehtehw senimreted
)NI == etats( fi
,tnemetats
fi dnoces eht neht ,si ti fI .rotarapes drow a si c rehtehw senimreted
)'t¥' == c ||'n¥' == c ||' ' == c( fi
tnemetats fi tsrif ehT
.dessecorp neeb sah atad on ecnis ,TUO
ot dezilaitini si etats ,margorp eht fo gninnigeb eht tA .ton ro drow a edisni
yltnerruc si margorp eht rehtehw sdrocer taht naeloob regetni na si etats
}
}
;)c(rahctup
/* drow a edisni */ esle
}
;)c(rahctup
/* drow fo gninnigeb */ ;NI == etats
{ )TUO == etats( fi esle
}
}
;TUO = etats
/* drow eht hsinif */ ;)'n¥'(rahctup
{ )NI == etats( fi
{ )'t¥' == c || 'n¥' == c || ' ' == c( fi
{ )FOE =! ))(rahcteg = c(( elihw
;TUO = etats
;etats ,c tni
{
)(niam
/* enil rep drow eno tupni tnirp */
/* drow a edistuo */ 0 TUO enifed#
/* drow a edisni */ 1 NI enifed#
>h.oidts< edulcni#
.enil rep drow eno tupni sti stnirp taht margorp a etirW
)R&K 12 egap( :21-1 esicrexE
02
.detnirp si retcarahc eht ,esac rehtie nI .etats setadpu margorp eht
neht ,drow wen a fo gninnigeb eht si ti fI .drow eht nihtiw retcarahc rehtona
ro drow a fo retcarahc tsrifeht rehtie si ti neht ,rotarapes drow a ton si c fI
12
;]i[lw = eulavxam
)eulavxam > ]i[lw( fi
)i++ ;DROWXAM < i ;1 = i( rof
;0 = eulavxam
}
/* drow a edisni */ ;cn++
esle
}
/* drow wen a fo gninnigeb */ ;1 = cn
;NI = etats
{ )TUO == etats( fi esle
}
;0 = cn
;wolfvo++
esle
;]cn[lw++
)DROWXAM < cn(fi
)0 > cn( fi
;TUO = etats
{ )'t¥' == c || 'n¥' == c || ' ' == c( fi
{ )FOE =! ))(rahcteg = c(( elihw
;0 = ]i[lw
)++i ;DROWXAM < i ;0 = i( rof
/* DROWXAM=> sdrow fo rebmun */ ;0 = wolfvo
/* drow a ni srahc fo rebmun */ ;0 = cn
;TUO = etats
/* sretnuoc htgnel drow */ ;]DROWXAM[lw tni
/* sdrow wolfrevo fo rebmun */ ;wolfvo tni
/* ][lw rof eulavxam */ ;eulavxam tni
/* rab hcae fo htgnel */ ;nel tni
;etats ,cn ,i ,c tni
{
)(niam
/* margotsih latnoziroh tnirp */
/* drow a edistuo */ 0 TUO enifed#
/* drow a edisni */ 1 NI enifed#
/* drow a fo htgnel xam */ 11 DROWXAM enifed#
/* margotsih a fo htgnel xam */ 51 TSIHXAM enifed#
>h.oidts< edulcni#
.gnignellahc erom
si noitatneiro lacitrev a ;latnoziroh srab eht htiw margotsih eht ward ot ysae
si tI .tupni sti ni sdrow fo shtgnel eht fo margotsih a tnirp ot margorp a etirW
)R&K 42 egap( :31-1 esicrexE
22
/* DROWXAM => sdrow fo rebmun */ ;0 = wolfvo
/* drow a ni srahc fo rebmun */ ;0 = cn
;TUO = etats
/* sretnuoc htgnel drow */ ;]DROWXAM[lw tni
/* sdrow wolfrevo fo rebmun */ ;wolfvo tni
/* ][lw rof eulavxam */ ;eulavxam tni
/* rab hcae fo htgnel */ ;nel tni
;etats ,cn ,i ,c tni
{
)(niam
/* margotsih lacitrev tnirp */
/* drow a edistuo */ 0 TUO enifed#
/* drow a edisni */ 1 NI enifed#
/* drow a fo htgnel xam */ 11 DROWXAM enifed#
/* margotsih a fo htgnel xam */ 51 TSIHXAM enifed#
>h.oidts< edulcni#
.detnirp si ksiretsa eno tsael ta ,0 naht retaerg si ]i[lw nehW .eulavxam
dna TSIHXAM ot gnidrocca ]i[lw ni eulav eht selacs nel elbairav ehT
.lw yarra eht morf )eulavxam( eulav
mumixam eht senimreted margorp eht ,ni daer neeb evah sdrow lla nehW
.DROWXAM ot lauqe ro naht retaerg
sdrow a fo rebmun eht fo kcart speek taht wolfvo elbairav eht stnemercni
margorp eht neht ,)DROWXAM => cn( egnar fo tuo si drow eht fo htgnel eht fI
.)]cn[lw++( retnuoc htgnel drow etairporppa eht stnemercni margorp eht neht
,)DROWXAM < cn( htgnel drow muimixam eht naht ssel si htgnel sti dna
)0 > cn( drow a si ereht fI .drow a fo dne eht skram bat ro, enilwen ,knalb A
}
;)DROWXAM ,wolfvo ,"n¥d%=>sdrow d% era erehT"(ftnirp
)0 > wolfvo( fi
}
;)'n¥'(rahctup
}
;nel--
;)'*'(rahctup
{ )0 > nel( elihw
;0 = nel
esle }
;1=nel
)0 =< )eulavxam / TSIHXAM * ]i[lw = nel(( fi
{ )0 > ]i[lw( fi
;)]i[lw ,i ,": d5% - d5%"(ftnirp
{ )i++ ;DROWXAM < i ;1 = i( rof
32
.lw fo tnemele hcae rof eulav
dna xedni eht tnirp spool rof owt tsal ehT .)margotsih lacitrev( ylsuoenatlumis
detnirp era srab lla ecnis yrassecen si noitacifirev sihT .stnemele eht
fo eno hcae rof detnirp eb dluohs ksiretsa na rehtehw yfirev dna lw yarra eht
fo tnemele hcae elacs ot yrassecen si ti nehT .denimreted si eulavxam litnu
margorp suoiverp eht ot ralimis si tI .margotsih lacitrev a stnirp noitulos sihT
}
;)DROWXAM ,wolfvo ,"n¥d% => sdrow d% era erehT"(ftnirp
)0 > wolfvo( fi
;)'n¥'(rahctup
;)]i[lw ," d4%"(ftnirp
)i++ ;DROWXAM < i ;1 = i( rof
;)'n¥'(rahctup
;)i ," d4%"(ftnirp
)i++ ;DROWXAM < i ;1 = i( rof
}
;)'n¥'(rahctup
;)" "(ftnirp esle
;)"*"(ftnirp
)i => eulavxam / TSIHXAM * ]j[lw( fi
)j++ ;DROWXAM < j ;1 = j( rof
{ )i-- ;0 > i ;TSIHXAM = i( rof
;]i[lw = eulavxam
)eulavxam > ]i[lw( fi
)i++ ;DROWXAM < i ;1 = i( rof
;0 = eulavxam
}
/* drow a edisni */ ;cn++
esle
}
/* drow wen a fo gninnigeb */ ;1 = cn
;NI = etats
{ )TUO == etats( fi esle
}
;0 = cn
;wolfvo++ esle
;]cn[lw++
)DROWXAM < cn( fi
)0 > cn( fi
;TUO=etats
{ )'t¥' == c || 'n¥' == c || ' ' == c( fi
{ )FOE =! ))(rahcteg = c(( elihw
;0 = ]i[lw
)++i ;DROWXAM < i ;0 = i( rof
42
}
}
;)'n¥'(rahctup
}
;nel--
;)'*'(rahctup
{ )0 > nel( elihw
;0 = nel
esle
}
;1 = nel
)0 =< )eulavxam / TSIHXAM * ]i[cc = nel(( fi
{ )0 > ]i[cc( fi
;)]i[cc ,i ,":d5%--- - -d5%"(ftnirp
esle
;)]i[cc ,i ,i ,": d5% - c% - d5%"(ftnirp
))i(ftnirpsi( fi
{ )i++ ;RAHCXAM < i ;1 = i( rof
;]i[cc = eulavxam
)eulavxam > ]i[cc( fi
)i++ ;RAHCXAM < i ;1 = i( rof
;0 = eulavxam
;]c[cc++
)RAHCXAM < c( fi
)FOE =! ))(rahcteg = c(( elihw
;0 = ]i[cc
)++i ;RAHCXAM < i ;1 = i( rof
;0 = eulavxam
/* sretnuoc retcarahc */ ;]RAHCXAM[cc tni
/* ][cc rof eulavxam */ ;eulavxam tni
/* rab hcae fo htgnel */ ;nel tni
;i ,c tni
{
)(niam
/* sretcarahc tnereffid fo .qerfmargotsih latnoziroh tnirp */
/* sretcarahc tnereffid xam */ 821 RAHCXAM enifed#
/* margotsih a fo htgnel xam */ 51 TSIHXAM enifed#
>h.epytc< edulcni#
>h.oidts< edulcni#
.tupni sti ni
sretcarahc tnereffid fo seicneuqerf eht fo margotsih a tnirp ot margorp a etirW
)R&K 42 egap( :41-1 esicrexE
52
.)yrarbiL dradnatS :B xidneppA( R&K 942 egap
no debircsed si tnirpsi .R&K 34 egap no dessucsid si >h.epytc< elif edulcni
ehT .elbatnirp si retcarahc a fi enimreted ot orcam a esu ew taht si ecnereffid
rehto ehT .desu gnieb tes retcarahc eht ni tsixe yeht fi RAHCXAM ot
lauqe ro naht retaerg sretcarahc erongi ew dna seirtne RAHCXAM fo retnuoc
retcarahc yarra na esu eW .sretcarahc tnereffid fo ycneuqerf eht gnitnuoc
era ew woN .31-1rexe ni margotsih latnoziroh eht ot ralimis si margorp sihT
62
.noisrevnoc eht retfa eulav tniop-gnitaolf
rehtona snruter dna eulav tniop-gnitaolf a stcepxe noitcnuf eht esuaceb
;)rhaf taolf(suislec taolf
deralced eW
.tnemetats
nruter eht ni enod eb nac krow eht lla esuaceb ,suislec noitcnuf eht ni sa
,noisserpxe devlovni erom a esu ew semitemoS .)R&K 62 egap( rewop noitcnuf
eht ni sa ,elbairavelpmis a si noisserpxe eht semitemoS .tnemetats nruter
eht aiv noisserpxe eht fo eulav eht snruter noitcnuf ehT .eulav tniop-gnitaolf
rehtona snruter ti dna ,eulav tniop-taolf a seviecer ti ,suislec si noitcnuf
eht fo eman ehT .suisleC otni tiehnerhaF trevnoc ot noitcnuf a esu eW
}
;)0.23 - rhaf( * )0.9 / 0.5( nruter
{
)rhaf taolf(suislec taolf
/* suislec otni rhaf trevnoc :suislec */
}
}
;pets + rhaf = rhaf
;))rhaf(suislec ,rhaf ,"n¥f1.6% f0.3%"(ftnirp
{ )reppu =< rhaf( elihw
;rewol = rhaf
/* ezis pets */ ;02 = pets
/* timil reppu */ ;003 = reppu
/* elacs eriutarepmet fo timil rewol */ ;0 = rewol
;pets ,reppu ,rewol taolf
;suislec ,rhaf taolf
{
)(niam
/* noisrev tniop-gnitaolf
;003,... ,02 ,0 = rhaf rof elbat suisleC-tiehnerhaF tnirp */
;)rhaf taolf(suislec taolf
>h.oidts< edulcni#
.noisrevnoc rof
noitcnuf a esu ot 2.1 noitceS fo margorp noisrevnoc erutarepmet eht etirweR
)R&K 72 egap( :51-1 esicrexE
72
;j++
;c = ]j[s
{ )'n¥' == c( fi
}
;j++
/* seiradnuob ni llits enil */ ;c = ]j[s
{ )2 - mil < i( fi
)i++ ;'n¥' =! c && FOE =! ))(rahcteg = c( ;0 = i( rof
;0 = j
;j ,i ,c tni
{
)mil tni ,][s rahc(enilteg tni
/* htgnel nruter ,s otni enil a daer :enilteg */
}
;)(rahcteg
;)tsegnol ,"s% : enil tsegnoLn¥"(ftnirp
/* enil a saw ereht */ )0 > xam( fi
}
}
;)enil ,tsegnol(ypoc
;nel = xam
{ )xam > nel( fi
;)enil ,nel ,"s% :d3%"(ftnirp
{ )0 > ))ENILXAM ,enil(enilteg = nel(( elihw
;0 = xam
/* ereh devas enil tsegnol */ ;]ENILXAM[tsegnol rahc
/* enil tupni tnerruc */ ;]ENILXAM[enil rahc
/* raf os nees htgnel mumixam */ ;xam tni
/* htgnel enil tnerruc */ ;nel tni
{
)(niam
/* enil tupni tsegnol ftnirp */
;)][morf rahc ,][ot rahc(ypoc diov
;)enilxam tni ,][enil rahc(enilteg tni
/* ezis enil tupni mumixam */ 0001 ENILXAM enifed#
>h.oidts< edulcni#
.txet eht fo elbissop sa hcum sa dna .senil tupni gnol ylirartibra fo htgnel eht
tnirp yltcerroc lliw ti os margorp enil-tsegnol eht fo enituor niam eht esiveR
)R&K 03 egap( :61-1 esicrexE
82
oS .retcarahc tupni eht daer ydaerla ew dna stnemele mil sah s ecnis
1 - mil
si s yarra eht fo xedni tsal eht esuaceb degnahc saw tI
1 - mil < i
saw pool rof eht ni tset
lanigiro ehT .)seiradnuob nihtiw llits( yarra eht ni moor si ereht fi senimreted
)2 - mil < i( fi
tnemetats
ehT .elbissop sa txet hcum sa sevas dna senil tupni gnol ylirartibra fo htgnel
eht snruter won en 1 l teg esuaceb noitanimret rof noitidnoc a ton si timil sihT
.eromyna pool rof eht ni demrofrep ton si sretcarahc fo timil eht rof tset ehT
)i++ ;'n¥' =! c && FOE =! ))(rehcteg = c( ;0 = i( rof
.snoitacifidom wef a sah enilteg noitcnuf ehT
.enil yarra eht ni evas ot elbissop
si ti sa sretcarahc ynam sa dna )nel( enil tupni eht fo htgnel eht stnirp sihT
;)enil ,nel ,"s% ,d%"( ftnirp
si enituor niam eht ni noisiver ylno ehT
}
;i++
)'0¥' =! )]i[morf = ]i[ot(( elihw
;0 = i
;i tni
{
)][morf rahc ,][ot rahc(ypoc diov
/* hguone gib si ot emussa ;'ot' otni 'morf' ypoc :ypoc */
}
;i nruter
;'0¥' = ]j[s
}
;i++
92
.s gnirts eht ot deipoc sretcarahc
fo rebmun eht fo kcart speek j ; i ni denruter si gnirts eht fo htgnel ehT
'0¥' = ]1-mil[s
rekram gnirts fo dne na dna
'n¥' = ]2-mil[s
retcarahc enilwen elbissop a rof moor sevael
2 - mil < i
03
.61-1 esicrexE ni sa emas eht si enilteg noitcnuf ehT
.orez htgnel snruter enilteg litnu staeper pool ehT .nekat si noitca on
,esiwrehtO .enil tupni eht stnirp margorp eht neht ,)ENILGNOL( sretcarahc
08 naht retaerg si htgnel eht fI .elbissop sa txet hcum sa dna enil eht fo
htgnel eht snruter enilteg .enil tupni na daer ot enilteg sekovni margorp ehT
}
;0 nruter
;)enil ,"s%"(ftnirp
)ENILGNOL > nel( fi
)0 > ))ENILXAM ,enil(enilteg = nel(( elihw
/* enil tupni tnerruc */ ;]ENILXAM[enil rahc
/* htgnel enil tnerruc */ ;nel tni
{
)(niam
/* ENILGNOL naht regnol senil tnirp */
;)enilxam tni ,][enil rahc(enilteg tni
08 ENILGNOL enifed#
/* ezis enil tupni mumixam */ 0001 ENILXAM enifed#
>h.oidts< edulcni#
.sretcarahc 08 naht regnol era taht senil tupni lla tnirp ot margorp a etirW
)R&K 13 egap( :71-1 esicrexE
13
.detnirp ton era senil knalb yleritne taht serusne sihT
.derong i suht dna ,sbat dna sknalb fo pu edam yleritne si enil ,esiwrehtO
.enil eht stnirp margorp eht dna ,sbat dna sknalb naht rehto sretcarahc
sah enil ,0 naht retaerg si htgnel siht fI .htgnel wen sti snruter dna enil gnirts
retcarahc eht morf sbat dna sknalb gniliart sevomer noitcnuf evomer ehT
}
;i nruter
}
/* gnirts eht etanimret */ ;'0¥' = ]i[s
;i++
/* kcab retcarahc enilwen tup */ ;'n¥' = ]i[s
;i++
/* ? enil knalbnon a ti si */ { )0 => i( fi
;i--
))'t¥' == ]i[s || ' ' == ]i[s( && 0 => i( elihw
/* 'n¥' morf ffo kcab */ ;i--
;i++
/* retcarahc enilwen dnif */ )'n¥' =! ]i[s( elihw
;0 = i
;i tni
{
)][s rahc(evomer tni
/* s gnirts retcarahc morf sbat dna sknalb gniliart evomer */
}
;0 nruter
;)enil ,nel ,"s% d%"(ftnirp
)0 > ))enil(evomer = nel(( fi
)0 > )ENILXAM ,enil(enilteg( elihw
/* enil tupni tnerruc */ ;]ENILXAM[enil rahc
{
)(niam
/* senil knalb eteled dna ,sbat dna sknalb gniliart evomer */
;)][s rahc(rahcevomer tni
;)enilxam tni ,][enil rahc(enilteg tni
/* ezis enil tupni mumixam */ 0001 ENILXAM enifed#
>h.oidts< edulcni#
.senil knalb yleritne eteled ot dna
,tupni fo enil hcae morf sbat dna sknalb gniliart evomer ot margorp a etirW
)R&K 13 egap( :81-1 esicrexE
23
.61-1 esicrexE ni sa emas eht si enilteg noitcnuf ehT
.i snruter neht ,rekram
gnirts fo dne eht dna enilwen eht kcab stup evomer .retcarahc eno tsael ta si
ereht neht ,0 => i fI .)0 < i( elbaliava era sretcarahc erom on ro retcarahc rehto
emos sdnif ti litnu sbat dna sknalb revo drawkcab spets neht noitcnuf ehT
.noitisop eno ffo skcab dna retcarahc enilwen eht sdnif noitcnuf evomer ehT
33
gnirts fo dne na emoceb ton lliw retcarahc tsrif eht taht os ,'0¥' morf noitisop
eno ffo skcab neht tI .s gnirts fo dne eht sdnif tsrif noitcnuf esrever ehT
}
}
;j++
;i--
;pmet = ]i[s
/* sretcarahc eht paws */ ;]i[s = ]j[s
;]j[s = pmet
{ )i < j( elihw
/* s gnirts wen fo gninnigeb */ ;0 = j
/* ecalp ni enilwen evael */ ;i--
)'n¥' == ]i[s( fi
/* '0¥' morf ffo kcab */ ;i--
;i++
/* s gnirts fo dne eht dnif */ )'0¥' =! ]i[s( elihw
;0 = i
;pmet rahc
;j ,i tni
{
)][s rahc(esrever diov
/* s gnirts esrever :esrever */
}
;0 nruter
}
;)enil ,"s%"(ftnirp
;)enil(esrever
{ )0 > )ENILXAM ,enil(enilteg( elihw
/* enil tupni tnerruc */ ;]ENILXAM[enil rahc
{
)(niam
/* emit a ta enil a ,senil tupni esrever */
;)][s rahc(esrever diov
;)mumixam tni ,][enil rahc(enilteg tni
/* ezis enil tupni mumixam */ 0001 ENILXAM enifed#
>h.oidts< edulcni
.emit a ta enil a tupni sti sesrever taht margorp a
etirw ot ti esU .s gnirts retcarahc eht sesrever taht )s(esrever noitcnuf a etirW
)R&K 13 egap( :91-1 esicrexE
43
.61-1 esicrexE ni sa emas eht si enilteg noitcnuf ehT
.enil desrever
eht stnirp dna .ti sesrever ,emit a ta tupni fo enil a sdaer margorp niam ehT
.i naht ssel si j elihw seunitnoc ssecorp ehT .)gnirts eht fo gninnigeb
eht drawot sevom( detnemerced si i dna ,)gnirts eht fo dne eht drawot
sevom( detnemercni si j ,sretcarahc gnippaws elihW .gnirts eht fo retcarahc
tsal eht fo xedni eht si i dna ,gnirts eht fo retcarahc tsrif eht fo xedni eht si j
.enil eht fo dne eht ta niamer tsum
ti ,'0¥' eht ekil ecnis ,noitisop erom eno ffo skcab ti ,stsixe 'n¥' a fI .rekram
53
CNIBAT % )1 - sop( - CNIBAT = bn
tnemetats ehT .pots bat txen eht hcaer ot yrassecen
bn sknalb fo rebmun eht setaluclac margorp eht ,bat a si retcarahc eht fI
.si yltnerruc margorp
eht erehw txet fo enil a nihtiw noitisop eht si sop elbairav ehT .8 eb ot denifed
si CNIBAT margorp siht nI .noitisop CNIBAT yreve ta era spots bat ehT
}
}
}
;sop++
;)c(rahctup
/* sretcarahc rehto lla */ { esle
}
;1= sop
;)c(rahctup
/* retcarahc enilwen */ { )'n¥' == c( fi esle
}
}
;bn--
;sop++
;)' '(rahctup
{ )0 > bn( elihw
;CNIBAT % )1 - sop( - CNIBAT = bn
/* retcarahc bat */ { )'t¥' == c( fi
{ )FOE =! ))(rahcteg = c(( elihw
;)"n¥87654321876543218765432187654321"(ftnirp
/* enil ni retcarahc fo noitisop */ ;1 = sop
/* yrassecen sknalb fo rebmun */ ;0 = bn
;sop ,bn ,c tni
{
)(niam
/* sknalb fo rebmun reporp eht htiw sbat ecalper */
/* ezis tnemercni bat */ 8 CNIBAT enifed#
>h.oidts< edulcni#
?retemarap cilobmys a ro elbairav a eb n dluohS .snmuloc n yreve yas
,spots bat fo tes dexif a emussA .pots bat txen eht ot ecaps ot sknalb fo rebmun
reporp eht htiw tupni eht ni sbat secalper taht bat ed margorp a etirW
)R&K 43 egap( :02-1 esicrexE
63
.21-5 dna 11-5 sesicrexE ni dednetxe si beted margorp ehT
.elbairav a otni CNIBAT
egnahc ot tnaw yam uoy nehT .spots bat neewteb snmuloc fo rebmun eht tes
ot resu eht wolla ot tnaw yam uoy dna margorp niam eht ot stnemugra ssap
ot woh nrael lliw uoy ,5 retpahC ni ,no retaL .tnatsnoc cilobmys a si CNIBAT
.)sop++( detnemercni si sop dna detnirp
si retcarahc rehto ynA .)1 = sop( enil eht fo gninnigeb eht ot dezilaitinier si sop
dna tuo detnirp si ti neht ,enilwen a si retcarahc eht fI .eulav siht senimreted
73
emit yreve bat a yb decalper si sknalb fo gnirts A .sknalb lla dnif ot si aedi ehT
.si yltnerruc margorp eht erehw txet fo enil a
nihtiw noitisop eht si sop elbairav ehT .sknalb fo gnirts a ecalper ot yrassecen
sbat dna sknalb fo rebmun muminim eht era tn dna bn selbairav regetni ehT
}
}
;1 - )CNIBAT % )1-sop( - CNIBAT( + sop = sop
)'t¥' == c( fi esle
;0 = sop
)'n¥' == c( fi
;)c(rahctup
;)' '(rahctup
)bn-- ;0 > bn ; ( rof
/* )s(knalb tuptuo */ esle
;0 = bn
/* )s(knalb eht tegrof */ )'t¥' == c( fi
/* )s(bat tuptuo */ ;)'t¥'(rahctup
)tn-- ;0 > tn ; ( rof
{ esle
}
}
/* bat erom eno */ ;tn++
/* sknalb fo # teser */ ;0 = bn
{ esle
/* sknalb fo # tnemercni */ ;bn++
)0 =! CNIBAT % sop( fi
{ )' ' == c( fi
)sop++ ;FOE =! ))(rahcteg = c( ;1 = sop( rof
/* yrassecen sbat fo # */ ;0 = tn
/* yrassecen sknalb fo # */ ;0 = bn
;sop ,tn ,bn ,c tni
{
)(niam
/* sknalb dna sbat htiw sknalb fo sgnirts ecalper */
/* ezis tnemercni bat */ 8 CNIBAT enifed#
>h.oidts< edulcni#
?ecnereferp nevig eb dluohs hcihw ,pots bat
a hcaer ot eciffus dluow knalb elgnis a ro bat a rehtie nehW .bated rof sa spots
bat emas eht esU .gnicaps emas eht eveihca ot sknalb dna sbat fo rebmun
muminim eht yb sknalb fo sgnirts secalper taht b" t ne margorp eht etirW
)R&K 43 egap( :12-1 esicrexE
83
.21-5 dna 11-5 sesicrexE ni dednetxe si batne margorp ehT
.sesac laiceps diova ew esuaceb bat
a htiw ti ecalper ot reisae si ti ,pots bat a hcaer ot seciffus knalb elgnis a nehW
.retcarahc bat tnerruc eht yb dewollof sbat detalumucca
eht ylno stnirp margorp eht neht ,bat a si retcarahc knalbnon eht fI
.enilwen a si
retcarahc tnerruc eht fi enil eht fo gninnigeb eht ot 5op steser dna ,orez ot tn
dna bn steser margorp ehT .retcarahc knalb non eht yb dewollof detalumucca
sknalb dna sbat eht stnirp ti neht ,knalb non a sdnif margorp eht nehW
.CNIBAT fo elpitlum a sehcaer sop
93
)i++ ;sop < i ;0 = i( rof
;i tni
{
)sop tni(ltnirp diov
/* nmuloc sop litnu enil tnirp :ltnirp */
}
;0 nruter
}
}
;)sop(sopwen = sop
;)sop(ltnirp
;)sop(knlbdnif = sop
{ )LOCXAM => sop++( fi esle
}
;0 = sop
/* enil tupni tnerruc tnirp */ ;)sop(ltnirp
{ )'n¥' == c( fi esle
;)sop(batpxe = sop
/* retcarahc bat dnapxe */ )'t¥' == c( fi
/* retcarahc tnerruc erots */ ;c = ]sop[enil
{ )FOE =! ))(rahcteg = c(( elihw
/* enil eht ni noitisop */ ;0 = sop
;sop ,c tni
{
)(niam
/* senil retrohs erom ro owt otni senil tupni gnol dlof */
;)sop tni(ltnirp diov
;)sop tni(sopwen tni
;)sop tni(knilbdnif tni
;)sop tni(batpxe tni
/* enil tupni */ ;]LOCXAM[enil rahc
/* ezis tnemercni bat */ 8 CNIBAT enifed#
/* tupni fo nmuloc mumixam */ 01 LOCXAM enifed#
>h.oidts< edulcni#
.nmuloc deificeps eht erofeb sbat ro sknalb on era ereht
fi dna ,senil gnol yrev htiw tnegilletni gnihtemos seod margorp ruoy erus
ekaM .tupni fo nmuloc ht-n eht erofeb srucco taht retcarahc knalbnon tsal eht
retfa senil retrohs erom ro owt otni senil tupni gnol "dlof" ot margorp a etirW
)R&K 43 egap( :22-1 esicrexE
04
eht erehw txet fo enil a nihtiw noitisop eht ot stniop s op elbairav regetni
ehT .tupni fo nmuloc ht-n eht setacidni tI .tnatsnoc cilobmys a si LOCXAM
}
}
/* enil ni noitisop wen */ ;i nruter
}
;i++
;]j[enil = ]i[enil
{ )j++ ;LOCXAM < j ;sop = j( rof
;0 = i
{ esle
/* egnarraer ot gnihton */ ;0 nruter
)LOCXAM => sop || 0 =< sop( fi
;j ,i tni
{
)sop tni(sopwen tni
/* noitisop wen htiw enil egnarraer :sopwen */
}
/* knalb eht retfa noitisop */ ;1 + sop nruter
/* knalb eno tsael a */ esle
;LOCXAM nruter
/* ? enil eht ni sknalb on */ )0 == sop( fi
;sop--
)' ' =! ]sop[enil && 0 > sop( elihw
{
)sop tni(knlbdnif tni
/* noitisop s'knalb dnif :knlbdnif */
}
}
/* noitisop tnerruc teser */ ;0 nruter
;)sop(ltnirp
/* lluf si enil tnerruc */ { esle
;sop nruter
/* enil tnerruc ni tfel moor */ )LOCXAM < sop( fi
;' ' = ]sop[enil
)sop++ ;0 =! CNIBAT % sop && LOCXAM < sop ;sop++( rof
/* knalb eno tsael ta si bat */ ;' ' = ]sop[enil
{
)sop tni(batpxe tni
/* sknalb otni bat dnapxe :batpxe */
}
;)'n¥'(rahctup
/* ? detnirp srahc yna */ )0 > sop( fi
;)]i[enil(rahctup
14
.sop fo eulav wen eht snruter neht ,enil eht fo gninnigeb
eht ot ,sop ta gnitrats ,sretcarahc seipoc ti ,si taht ,enil a segnarraer sopwen
.1 - sop dna orez noitisop neewteb sretcarahc eht stnirp ltnirp
.tsixe ton seod knalb a fi LOCXAM ro knalb a retfa noitisop eht snruter
tI .sop xedni eht ta gnitrats knalb a rof sehcraes knilbdnif noitcnuf ehT
.LOCXAM sehcaer sop nehw enil tupni eht sdlof dna ,enilwen
a sdnif ti nehw tupni tnerruc eht stnirp ,sretcarahc bat sdnapxe margorp ehT
.tupni
fo nmuloc ht-n eht erofeb senil tupni sdlof margorp ehT .si yltnerruc margorp
24
;d ,c tni
{
)(tnemmoc_ni diov
/* tnemmoc dilav a fi edisni :tnemmoc_ni */
}
/* tnemmoc a ton */ ;)c(rahctup
esle
/* snigeb etouq */ ;)c(etouq_ohce
)'"' == c || ''¥' == c( fi esle
}
;)d(rahctup
/* tnemmoc a ton */ ;)c(rahctup
{ esle
}
;)d(tnemmocr
/* hsals rehtona */ ;)c(rahctup
{ )'/' == d( fi esle
/* tnemmoc gninnigeb */ ;)(tnemmoc_ni
)'*' == ))(rahcteg = d(( fi
)'/' == c( fi
;d tni
{
)c tni(tnemmocr diov
/* stnemmoc eht evomer ,retcarahc hcae daer :tnemmocr */
}
;0 nruter
;)c(tnemmocr
)FOE =! ))(rahcteg = c(( elihw
;d ,c tni
{
)(niam
/* margorp C dilav a morf stnemmoc lla evomer */
;)c tni(etouq_ohce diov
;)diov(tnemmoc_ni diov
;)c tni(tnemmocr diov
>h.oidts< edulcni#
.tsen
ton od stnemmoc C .ylreporp stnatsnoc retcarahc dna sgnirts detouq eldnah
ot tegrof t'noD .margorp C a morf stnemmoc lla evomer ot margorp a etirW
)R&K 43 egap( :32-1 esicrexE
34
.elif fo dne na snruter rahc teg nehw setanimret margorp ehT
.si sa detnirp si retcarahc rehto ynA .)2-1 esicrexE ni dna R&K 91 egap no
secneuqes epacse no noissucsid eht ees( etouq gnitanimret eht sa hsa !skcab
a gniwollof etouq a redisnoc ton seod etouq_ohce .tnemmoc a rof nekatsim ton
dna deohce si etouq a nihtiw gnihtyna taht serusne etouq_ohce .etouq elbuod
ro elgnis a si ti rehtehw setacidni etouq_ohce ot tnemugra ehT .etouq_ohce
sllac meht sdnif ti fi dna setouq elbuod dna elgnis rof sehcraes osla tnemmocr
.derongi eb lliw tnemmoc a taht serusne
erofereht erudecorp ehT .tnemmoc eht fo dne eht rof sehcraes noitcnuf sihT
.tnemmoc_ni sllac ti sdnif ti nehw dna )*/( tnemmoc a fo gninnigeb eht rof
sehcraes tnemmocr .margorp C dilav a si tupni eht taht semussa margorp ehT
}
;)d(rahctup
}
/* qes epacse erongi */ ;))(rahcteg(rahctup
)'¥¥' == d( fi
;)d(rahctup
/* dne rof hcraes */ { )c =! ))(rahcteg = d(( elihw
;)c(rahctup
;d tni
{
)c tni(etouq_ohce diov
/* setouq nihtiw sretcarahc ohce :etouq_ohce */
}
}
;)(rahcteg = d
;d = c
/* dne rof hcraes */ { )'/' =! d || '*' =! c( elihw
/* retcarahc rruc */ ;)(rahcteg = d
/* retcarahc verp */ ;)(rahcteg = c
44
)0 > kcarb( fi
;)"n¥secarb decnalabnU"(ftnirp
/* srorre tuptuo */ )0 > ecarb( fi
}
}
;0 = nerap
;)"n¥sesehtnerap decnalabnU"(ftnirp
{ )0 < nerap( fi esle
}
;0 = kcarb
;)"n¥secarb decnalabnU"(ftnirp
{ )0 < ecarb( fi esle
}
;0 = ecarb
;)"n¥secarb decnalabnU"(ftnirp
/* srorre tuptuo */ { )0 < ecarb( fi
;)c(hcraes
esle
/* etouq edisni */ ;)c(etouq_ni
)'"' == c || ''¥' == c( fi esle
}
;)c(hcraes
esle
/* tnemmoc edisni */ ;)(tnemmoc_ni
)'*' == ))(rahcteg = c(( fi
{ )'/' == c( fi
{ )FOE=! ))(rahcteg = c(( elihw
;nerap ,kcarb ,ecarb tni nretxe
;c tni
{
)(niam
/* smargorp C rof rekcehc xatnys yratnemidur */
;)c tni(hcraes diov
;)diov(tnemmoc_ni diov
;)c tni(etouq_ni diov
;nerap ,kcarb ,ecarb tni
>h.oidts< edulcni#
).ytilareneg lluf ni ti od uoy
fi drah si margorp sihT( .stnemmoc dna ,secneuqes epacse ,elbuod dna elgnis
htob ,setouq tuoba tegrof t'noD .secarb dna ,stekcarb ,sesehtnerap decnalabnu
ekil srorre xatnys yratnemidur rof margorp C a kcehc ot margorp a etirW
)R&K 43 egap( :42-1 esicrexE
54
.ytilareneg lluf ni enod ton si noitulos sihT
}
/* qes epacse erongi */ ;)(rahcteg
)'¥¥' == d( fi
/* etouq dne hcraes */ )c =! ))(rahcteg = d(( elihw
;d tni
{
)c tni(etouq_ni diov
/* etouq edisni :etouq_ni */
}
}
;)(rahcteg = d
;d = c
/* dne rof hcraes */ { )'/' =! d || '*' =! c( elihw
/* retcarahc rruc */ ;)(rahcteg = d
/* retcarahc verp */ ;)(rahcteg = c
;d ,c tni
{
)(tnemmoc_ni diov
/* tnemmoc dilav a fo edisni :tnemmoc_ni */
}
;nerap--
)')' == c( fi esle
;nerap++
)'(' == c( fi esle
;kcarb--
)']' == c( fi esle
;kcarb++
)'[' == c( fi esle
;ecarb--
)'}' == c( fi esle
;ecarb++
)'{' == c( fi
;nerap ,kcarb ,ecarb tni nretxe
{
)c tni(hcraes diov
/* srorre xatnys yratnemidur rof hcraes ;hcraes */
}
;)(rahcteg
;)"n¥sesehtnerap decnalabnU"(ftnirp
)0 > nerap( fi
;)"n¥stekcarb decnalabnU"(ftnirp
64
.egassem etairporppa
na stnirp margorp eht ,os fI .sesehtnerap ro ,stekcarb ,secarb nepo
yna era ereht fi enimreted ot FOE nopu kcehc lanif a sekam margorp ehT
.decnalab eb ton deen setouq dna stnemmoc
edisni sesehtnerap dna ,stekcarb ,secarb ehT .meht nihtiw sretcarahc eht
spiks dna ,setouq elbuod dna elgnis ,stnemmoc rof sehcraes enituor niam ehT
.decnalab
deredisnoc eb dluow { { } } ro [ [ [ ] ] ] ro () meht tuohtiw esuaceb yrassecen era
}
;0 = nerap
;)"n¥sesehtneraP decnalabnU"(ftnlrp
{ )0 < nerap( fi esle }
;0 = kcarb
;)"n¥stekcarb decnalabnU"(ftnirp
{ )O < kcarb( fi esle }
;0 = ecarb
;)"n¥secarb decnalabnU"(ftnirp
{ )0 < ecarb( fi
stnemetats ehT .0 lauqe dluohs kcarb neht
,meht ecnalab ot stekcarb tfel 3 erew ereht fi ;stekcarb thgir 3 eseht ecnalab
ot stekcarb tfel suoiverp on erew ereht esuaceb lagelli si )3 - slauqe kcarb( ] ] ]
.hcraes eht ni retal dnuof eb thgim stekcarb thgir gnicnalab 3
esuaceb tnemom eht rof lagel si )3 slauqe kcarb( [ [ [ .egassem etairporppa na
stnirp margorp eht ;evitagen semoceb reve nerap ro ,kcarb ,ecarb fi rorre na si
tI .orez ro evitisop eb ot nerap ro ,kcerb ,ecarb rof lagel si ti ,hcraes eht gniruD
.ylralimis deldnah era nerep dna ecarb selbairav
ehT .)'>'( ecarb thgir a si retcarahc eht nehw ti stnemerced dna )'<'( ecarb
tfel a si retcarahc eht nehw ecarb elbairav eht stnemercni hcraes noitcnuf ehT
.dilav eb ot demussa si esle gnihtyrevE .secarb dna ,stekcarb
,sesehtnerap decnalabnu :srorre xatnys eerht rof skcehc margorp ehT
74
.erawdrah tnereffid rof
yrav gnol dna ,tni ,trohs rof sezis eht esuaceb enihcam ot enihcam morf yrav
yam segnar ehT ."h.stimil" ni denifed eb segnar taht seificeps C ISNA ehT
}
;)XAM_GNOLU ,"n¥ul% = xam gnol dengisnu"(ftnirp
;)XAM_TNIU ,"n¥u% = xam tni dengisnu"(ftnirp
;)XAM_TRHSU ,"n¥u% = xam trohs dengisnu"(ftnirp
;)XAM_RAHCU ,"n¥u% = xam rahc dengisnu"(ftnirp
/* sepyt dengisnu */
;)XAM_GNOL ,"n¥dl% = xam gnol dengis"(ftnirp
;)NIM_GNOL ,"n¥dl% = nim gnol dengis"(ftnirp
;)XAM_TNI ,"n¥d% = xam tni dengis"(ftnirp
;)NIM_TNI ,"n¥d% = nim tni dengis"(ftnirp
;)XAM_TRHS ,"n¥d% = xam trohs dengis"(ftnirp
;)NIM_TRHS ,"n¥d% = nim trohs dengis"(ftnirp
;)XAM_RAHCS ,"n¥d% = xam rahc dengis"(ftnirp
;)NIM_RAHCS ,"n¥d% = nim rahc dengis"(ftnirp
/* sepyt dehgis */
{
)(niam
/* epyt fo segnar enimeted */
>h.stimil< edulcni#
>h.oidts< edulcni#
.sepyt tniop-gnitaolf suoirav eht fo segnar eht
enimreted :meht etupmoc uoy fi redraH .noitatupmoc tcerid yb dna sredaeh
dradnats morf seulav etairporppa gnitnirp yb ,dengisnu dna dengis htob
,selbairav gnol dna ,tni ,trohs ,rahc fo segnar eht enimreted ot margorp a etirW
)R&K 63 egap( :1-2 esicrexE
snoisserpxE dna ,srotarepO ,sepyT .2 retpahC
84
.retcarahc dengis a rof eulav mumixam eht si tahT
)1 >> 0~ )rahc dengusnu(()rahc(
rahc ot ytitnauq eht strevnoc yllanif dna
1 >> 0~ )rahc dengisnu(
tib ngis eht raelc ot thgir eht ot noitisop eno rahc dengisnu eht stfihs dna
0~ )rahc dengisnu(
rahc dengisnu na ot ytitnauq gnitluser eht strevnoc neht
0~
eno ot stib hcae strevnoc dna orez a sekat
)1 >> 0~ )rahc dengusnu(()rahc(
noisserpxe eht ,elpmaxe roF .srotarepo esiwtib sesu noitulos elbissop rehtonA
}
;)0~)gnol dengisnu( ,"n¥ul% = xam gnol dengisnu"(ftnirp
;)0~)tni dengisnu( ,"n¥u% = xam tni dengisnu"(ftnirp
;)0~)trohs dengisnu( ,"n¥u% = xam trohs dengisnu"(ftnirp
;)0~)rahc dengisnu( ,"n¥u% = xam rahc dengisnu"(ftnirp
/* sepyt dengisnu */
;))1>>0~)gnol dengusnu(()gnol( ,"n¥dl% = xam gnol dengis"(ftnirp
;))1>>0~)gnol dengusnu(()gnol(- ,"n¥dl% = nim gnol dengis"(ftnirp
;))1>>0~)tni dengusnu(()tni( ,"n¥d% = xam tni dengis"(ftnirp
;))1>>0~)tni dengusnu(()tni(- ,"n¥d% = nim tni dengis"(ftnirp
;))1>>0~)trohs dengusnu(()trohs( ,"n¥d% = xam trohs dengis"(ftnirp
;))1>>0~)trohs dengusnu(()trohs(- ,"n¥d% = nim trohs dengis"(ftnirp
;))1>>0~)rahc dengusnu(()rahc( ,"n¥d% = xam rahc dengis"(ftnirp
;))1>>0~)rahc dengusnu(()rahc(- ,"n¥d% = nim rahc dengis"(ftnirp
/*sepyt dehgis */
{
)(niam
/* epyt fo segnar enimeted */
>h.stimil< edulcni#
>h.oidts< edulcni#
94
.setanimret pool eht dna ON ot tes
si poolko tem si snoitidnoc eht fo eno sa noos sA .noitaremune na si poolko
.etanimret dluohs pool eht dna seiradnuob fo tuo i taht setacidni
1 - mil => i
tnemetats tnelaviuqe eht nI .seiradnuob nihtiw si llits i taht setacidni
1 - mil < i
pool rof lanigiro eht ni ,elpmaxe roF .stset eht egnahc neht eW .stnemetats
fi fo ecneuqes a otni pool rof lanigiro eht kaerb ot evah ew || ro && tuohtiW
}
;i++
;c = ]i[s
{ esle
;ON = poolko
/* ? elif fo dne */ )FOE == c( fi esle
;ON = poolko
)'n¥' == ))(rahcteg = c(( fi esle
;ON = poolko
/* ? egnar dilav fo edistuo */ )1 - mil => i( fi
)SEY == poolko( elihw
;0 = i
;SEY = poolko pool mune
;} SEY ,ON { pool mune
:tnelaviuqE
)i++ ;FOE =! c && 'n¥' =! ))(rahcteg = c( && 1-mil < i ;0 = i( rof
:lanigirO
.|| ro && gnisu tuohtiw evoba pool rof eht ot tnelaviuqe pool a etirW
)R&K 24 egap( :2-2 esicrexE
05
.51 hguorht 0 fo eulav laciremun a sekat tigidxeh elbairav
ehT .seunitnoc pool eht dna SEY sniamer xehni ,tigid lamicedaxeh dilav
a si ]i[s elihW .s yarra eht rof xedni eht si i regetni ehT .noitcnuf eht slortnoc
)i++ ;SEY == xehni ;( rof
tnemetats ehT
}
;n nruter
}
;tigidxeh + n * 61 = n
)SEY == xehni( fi
/* tigid lamicedaxeh dilav a ton */ ;ON = xehni
esle
;01 + 'A' - ]i[s = tigidxeh
)'F' =< ]i[s && 'A' => ]i[s( fi esle
;01 + 'a' - ]i[s = tigidxeh
)'f' =< ]i[s && 'a' => ]i[s( fi esle
;'0' - ]i[s = tigidxeh
)'9' =< ]i[s && '0' => ]i[s( fi
{ )i++ ;SEY == xehni ; ( rof
/* tigid lamicedaxeh dilav emussa */ ;SEY = xehni
/* denruter eb ot eulav regetni */ ;0 = n
}
;i++
)'X' == ]i[s || 'x' == ]i[s( fi
;i++
{
/* X0 ro x0 lanoitpo piks */ )'0' == ]i[s( fi
;0 = i
;n ,xehni ,i ,tigidxeh tni
{
)][s rahc(ioth tni
/* regetni ot s gnirts lamicedaxeh trevnoc :ioth */
0 ON enifed#
1 SEY enifed#
.F hguorht A dna ,f hguorht a ,9 hguorht 0 era stigid elbawolla
ehT .eulav regetni tnelaviuqe sti otni )X0 ro x0 lanoitpo na gnidulcni(
stigid lamicedaxeh fo gnirts a strevnoc hcihw ,)s(ioth noitcnuf eht etirW
)R&K 64 egap( :3-2 esicrexE
15
.)R&K 34 egap( iota ot ralimis si noitcnuf sihT
.n elbairav eht fo eulav eht snruter ioth ,setanimret pool eht nehW .tigidxeh
ni si eulav sti dna ]i[s ta saw tigid lamicedaxeh dilav a taht seetnaraug
)SEY == xehni( fi
tnemetats ehT
25
.)tuo dezeeuqs si ti( gnirts gnitluser eht ot deipoc ton si ]i[1s dna ,sliaf
)'0¥' == ]j[2s( fi
tnemetats eht ,hctam si ereht fI .gnirts
gnitluser eht ot deipoc si ]i[1s ,hctam on si ereht taht tneve eht nI .hctam
a si ereht ro sretcarahc fo tuo snur 2s nehw setanimret pool sihT .retcarahc
]i[1s eht tsniaga 2s ni retcarahc hcae skcehc tnemetats rof dnoces ehT
.1s gnirts fo dne eht litnu seunitnoc pool ehT
.deteled si 2s ni retcarahc yna sehctam taht 1s ni retcarahc hcaE .ylevitcepser
,)1s osla( gnirts gnitluser eht dna 1s fo sexedni eht ,k dna i sezilaitini
)++i ;'0¥' =! ]i[1s ;0 = k = i( rof
,tnemetats tsrif ehT
}
;'0¥' = ]j[s
}
;]i[1s = ]++k[1s
/* hctam on – gnirts fo dne */ )'0¥' == ]j[2s( fi
;
)++j ;]i[1s =! ]j[2s && '0¥' =! ]j[2s ;0 = j( rof
{ )++i ;'0¥' =! ]i[1s ;0 = k = i( rof
;k ,j ,i tni
{
)][2s rahc ,][1s rahc(ezeeuqs diov
/* s morf c lla eteled :ezeeuqs */
.2s gnirts eht ni retcarahc yna sehctam taht
1s ni retcarahc hcae seteled taht )2s,1s(ezeeuqs fo noisrev etanretla na etirW
)R&K 84 egap( :4-2 esicrexE
35
.srucco 2s gnirts eht morf retcarahc yna erehw 1s gnirts eht ni
noitacol tsrif eht-i snruter noitcnuf eht ]i[1s sehctam 2s ni retcarahc a nehW
.]i[1s htiw 2s fo retcarahc hcae serapmoc tI .i fo eulav hcae rof detucexe si
)++j ;'0¥' =! ]j[2s ;0 = j( rof
,tnemetats rof dnoces ehT
. 1s
ni dnuof saw 2s fo retcarahc on taht setacidni ot 1- snruter yna ,)sretcarahc
fo tuo snur 1s( yllamron setanimret pool eht nehW .pool eht slortnoc
)++i ;'0¥' =! ]i[1s ;0 = i( rof
tnemetats ehT
}
/* hctam on ,esiwrehto */ ;1- nruter
/* hctam tsrif noitacol */ ;i nrter
/* dnuof hctam */ )]j[2s == ]i[1s( fi
)++j ;'0¥' =! ]j[2s ;0 = j( rof
)++i ;'0¥' =! ]i[1s ;0 = i( rof
;j ,i tni
{
)][2s rahc,][1s rahc( yna tni
/* srucco 2s morf rahc yna erehw 1s ni noitacol tsrif nruter :yna */
).noitacol eht ot retniop a snruter tub
boj emas eht seod krbprts noitcnuf yrarbil dradnats ehT( .2s morf sretcarahc
on sniatnoc 1s fi 1- ro ,srucco 2s gnirts eht morf retcarahc yna erehw
1s gnirts eht ni noitacol tsrif eht snruter hcihw ,)2s,1s(yna noitcnuf eht etirW
)R&K 84 egap( :5-2 esicrexE
45
fo stib n htiw meht DNA ew stib n tsomthgir eht tpecxe y ni stib lla raelc oT
.p noitisop ta x fo stib n eht raelc ot x htiw eulav siht DNA ew
))n - 1 + p( << )n << 0~(~(~ & x
.esle erehwyreve seno gnivael ,p noitisop ta gnitrats sorez ot stib n stes
)n - 1 + p( << )n << 0~(~(~
dna p noitisop ot stib-1 n eseht stfihs
)n - 1 + p( << )n << 0~(~
.esle erehwyreve sorez ,noitisop n tsomthgir eht ta seno lla stfihs
n << 0~
.esle erehwyreve seno dna
p noitisop ta gnitrats sorez fo stib n htiw meht DNA ew x ni stib n eht raelc oT
x xxx....xnnnx...xxx
.......................
y 000....0nnn0...000
x xxx....x000x...xxx
.rehtegot seititnauq eht RO dna ,p noitisop ot meht tfihs neht dna
stib n tsomthgir eht tpecxe y ni stib lla raelc ,x ni stib n eht raelc ot deen ew
y nnny...........yyy
x xxx...xnnnx....xxx
y fo stib n tsomthgir eht ot x fo stib n tes oT
}
;)n - 1 + p( << ))n << 0~(~ & y(
| ))n - 1 + p( << )n << 0~(~(~ & x nruter
{
)y dengisnu ,n tni ,p tni ,x dengisnu (stibtes dengisnu
/* y fo stib htiw p noitisop ta x fo stib n tes :stibtes */
.degnahcnu stib rehto eht gnivael ,y fo stib n tsomthgir eht ot tes p noitisop
ta nigeb taht stib neht htiw x snruter taht )y,n,p,x(stlbtes noitcnuf a etirW
)R&K 94 egap( :6-2 esicrexE
55
.degnahcnu stib rehto eht gnivael ,y fo stib n tsomthgir
eht ot p noitisop ta gnitrats x fo stib n eht tes ot seulav owt eht RO ew
)n - 1 + p( << ))n << 0~(~ & y(
| ))n - 1 + p( << )n << 0~(~(~ & x
.p noitisop ta gnitrats stib n eseht secalp
)n - 1 + p( << ))n << 0~(~ & y(
dnA .y fo stib n tsomthgir eht stceles
)n << 0~(~ & y
.esle erehwyreve sorez ,snoitisop n tsomthgir eht ta seno lla secalp
)n << 0~(~
.esle erehwyreve sorez dna seno
65
.detrevni era stib n eht ylnO .degnahc gnihton―1a secudorp
)tnereffid era stib( 0 ^ 1 ;degnahc gnihton―0 a secudorp )emas eht era stib(
0 ^ 0 :sorez htiw de'RO evisulcxe era dleib tib n ht fo edistuo snoitisop ehT
.detrevni si ti―0 a secudorp
1 htiw RO evisulcxe ,1 si tib lanigiro eht fI .detrevni si ti―1 a secudorp
1 a htiw RO evisulcxe ,0 si tib lanigiro eht fI .)esle erehwyreve sorez htiw(
stib n rof p ta gnitrats seno lla htiw meht RO evisulcxe ot seciffus ti ,p noitisop
ta gnirats stib n eht trevni ot si evitcejbo eht ecniS .0 a secudorp ti esiwrehto
,tnereffid era stib owt nehw 1 a secudorp )^(rotarepo RO evisulcxe esiwtib ehT
))n - 1 + p( << )n << 0~(~(^x
.p noitisop ot stib-1 n eseht stfihs
))n - 1 + p( << )n << 0~(~(
.esle erehwyreve sorez ,snoitisop tsomthgir eht ta seno lla secalp
)n << 0~(~
.snoitisop tsomthgir eht ta sorez n gnivael ,tfel eht ot noitisop n seno lla stfihs
)n << 0~(
}
;))n - 1 + p( << )n << 0~(~( ^ x nruter
{
)n tni,p tni,x dengisnu(trevni dengisnu
/* p noitisop ta nigeb taht x fo stib n eht strevni :trevni */
.degnahcnu
srehto eht gnivael ,)asrev eciv dna 0 otni degnahc 1 ,.e.i( detrevni p noitisop
ta nigeb taht stib neht htiw x snruter taht )n,p,x(trevni noitcnuf a etirW
)R&K 94 egap( :7-2 esicrexE
75
/* x fo stib tsomthgir n */ ;x & )n << 0~(~ = stibr
{ )0 > ))(htgneldrow % n = n(( fi
;stibr tni
;)diov(htgneldrow tni
{
)n tni ,x dengisnu(torthgir dengisnu
/* snoitisop n yb thgir eht ot x etator :torthgir */
:esicrexe emas eht ot noitulos tnereffid a si sihT
}
;i nruter
;)++i ;0 > )1 >> v = v( ;1 = i( rof
;0~)dengisnu( = v dengisnu
;i tni
{
)diov(htgneldrow tni
/* enihcam eht fo htgnel drow setupmoc :htgneldrow */
.enihcam
tsoh eht no htgnel drow eht setupmoc taht noitcnuf a si )(htgneldrow
.semit n x setator torthgir .noitator
eno etelpmoc ot tibr htiw ti RO dna thgir eht ot noitisop eno x tfihs ew ,txeN
.)1-)(htgneldrow(noitisop
tsomtfel eht ot ti stfihs dna x fo stib tsomthgir eht sekat tibr elbairav ehT
}
;x nruter
}
/* noitator eno etelpmoc */ ;tibr | x = x
/* thgir noitisop 1 x tfihs */ ;1 >> x = x
;)1 - )(htgneldrow( << )1 & x( = tibr
{ )0 > --n( elihw
/* tib tsomthgir */ ;tibr tni
;)diov(htgneldrow tni
{
)n tni ,x dengisnu(torthgir dengisnu
/* snoitisop n yb thgir eht ot x etator :torthgir */
.snoitisop tib n yb thgir eht ot
detator x regetni eht fo eulav eht snruter taht )n ,x(torthgir noitcnuf a etirW
)R&K 94 egap( :8-2 esicrexE
85
.thgir
eht ot snoitisop n ,x dengisnu eht fo noitator eht etelpmoc ot stibr htiw de'RO
si x fo eulav wen ehT .thgir eht ot snoitisop n x tfihs eW .noitisop tsomtfel
eht ot dengissa era x fo stib tsomthgir n eht ,x htiw eulav siht DNA ew nehW
.snoitisop tsomthgir n eht ni era seno lla )n << 0~(~
.snoitisop tsomthgir eht ni sorez n gnivael
tfel eht ot noitisop n detfihs era seno lla n << 0~
.yrassecen si gnipool on ,tluser a sA .drow
eht fo htgnel eht yb dedivid n fo )rotarepo suludom( redniamer eht si snoitator
fo rebmun eht neht ,regetni dengisnu na ni stib fo rebmun eht sdeecxe n fI
.snoitisop n etator ot yrassecen si ti neht ,ssel si n fI .noitator eht
erofeb sa emas eht si x esuaceb segnahc gnihton ,regetni dengisnu na ni stib
fo rebmun eht sa emas eht si thgir eht ot etator ot )n( noitisop fo rebmun eht fI
}
;x nruter
}
/* detelpmoc noitator */ ;stibr | x = x
/* thgir noitisop n detfihs x */ ;n >> x = x
;)n - )(htgneldrow( << stibr = stibr
/* tfel ot stib tsomthgir n */
95
)1-x( yranib ni 7 eulav 1110
)x( yranib ni 8 eulav 0001
.ssecorp eht gnitaepeR .lamiced ni 8,yranib
ni 0001 si eulav gnitluser ehT .deteled neeb sah x ni tib-1 tsomthgir eht dna
)1-x( & x 0001
---------
)1-x( yranib ni 8 eulav 0001
)x( yranib ni 9 eulav 1001
,9 slauqe x fi ,elpmaxe
roF .x fo tib-1 tsomthgir eht ffo snrut )1-x( & x taht egdelwonk eht esu ot
si evitanretla nA .tib tsomthgir eht kcehc ot stfihs ruof smrofrep lanigiro eht
,ytitnauq siht ni tib-1 lla tnuoc oT .stib ruof fo ytitnauq dengisnu na redisnoC
.x ni tib-1 tsomthgir eht eteled
lliw ,metsys rebmun tnemelpmoc s'owt a ni ,)1-x( & x yhw si sihT .1-x ni tib-0
gnidnopserroc a sah x fo tib-1 tsomthgir eht ,eroferehT .x tluser eht ni 1 ot
segnahc 1-x fo tib-0 tsomthgir ehT .x ecudorp ot ti ot 1 dda dna )1-x( ekat eW
11 x 1101
---------- ------
1+ 1+
01 1-x 0101
lamiced yranib
:x secudorp 1+)1-x( .lamiced
ni 01 si hcihw ,0101 rebmun yranib eht ,elpmaxe rof ,1-x rof eulav a ekaT
}
;b nruter
;b++
)1 - x =& x ;0 =! x ;0 = b( rof
;b tni
{
)x dengisnu( tnuoctib tni
/* noisrev retsaf-- x ni stib 1 tnuoc :tnuoctib */
.tnuoctib fo noisrev retsaf a etirw ot noitavresbo siht esU .yhw nialpxE .x ni
tib - 1 tsomthgir eht seteled )1-x( =& x ,metsys rebmun tnemelpmoc s'owt a nI
)R&K 15 egap( :9-2 esicrex
06
.noisrev retsaf a siht ,llarevO .tnuoctib ni stfihs fo rebmun eht sa
emas eht si s'DNA fo rebmun eht-seno era x fo stib lla nehw si esac tsrow ehT
.setanimret ssecorp eht dna x ni stib 1 erom on era erehT .lamiced ni 0,yranib
ni 0000 si eulav gnitluser ehT .deteled neeb sah x ni tib-1 tsomthgir eht dna
)1-x( & x 0 0 0 0
---------
16
.degnahcnu retcarahc
eht snruter rewol ,esiwrehtO .rettel esac rewol a snruter rewol dna detulave si
'A' - 'a' + c
noisserpxe eht nehT .)IICSA( rettel esac reppu na si c ,eurt si
'Z' =< c && 'A' => c
noitidnoc eht nehW
}
;c : 'A' - 'a' + c ? 'Z' =< c && 'A' => c nruter
{
)c tni(rewol tni
/* )ylno IICSA(esac rewol ot c trevnoc:rewol */
.esle-fi fo daetsni noisserpxe lanoitidnoc a htiw
,esac rewol ot srettel esac reppu strevnoc hcihw ,rewoL noitcnuf eht etirweR
)R&K 25 egap( :01-2 esicrexE
26
]dim[v =! x && hgih =< wol
ot
hgih =< wol
morf pool elihw eht ni noisserpxe eht degnahc eW
}
/* hctam on */ ;1- nruter
esle
/* hctam dnuof */ ;dim nruter
)]dim[v == x( fi
}
;2 / )hgih + wol( = dim
;1 + dim = wol
esle
;1 - dim = hgih
)]dim[v < x( fi
{ )]dim[v =! x && hgih =< wol( elihw
;2 / )hgih + wol( = dim
;1 - n = hgih
;0 = wol
;dim ,hgih ,wol tni
{
)n tni ,][v tni ,x tni(hcraesnib tni
/* ]1-n[v =< ... =< ]1[v =< ]0[v ni x dnif :hcraesnib */
.emit-nur ni ecnereffid eht erusaem dna pool
eht edisni tset eno ylno htiw noisrev a etirW .)edistuo stset erom fo ecirp eht
ta( eciffus dluow eno nehw ,pool eht edisni stset owt sekam hcraes yranib ruO
)R&K 85 egap( :1-3 esicrexE
wolF lortnoC .3 retpahC
36
.mottob ot pot morf retteb
sdaer R&K 85 egap no edoc lanigiro ehT .ytilibadaer edoc ni emos tsol dna
ecnamrofrep ni hcum niag ton did eW .laminim si emit-nur ni ecnereffid ehT
.1- snruter ti esiwrehto ,dim snruter
hcraesnib ,yarra eht ni sraeppa x fI .v yarra ni sraeppa x esuaceb detanimret
pool eht fi enimreted ot pool elihw eht fo edistuo tset a evah ot deen eW
.detucexe si pool eht emit yreve dna strats pool eht erofeb dim detaluclac ot
evah ew taht seilpmi sihT .pool eht edisni tnemetats fi eno ylno esu nac ew os
46
)][t rahc ,][s rahc(epacsenu diov
/* s ot t gnirts eht gniypoc elihw */
/* sretcarahc laer otni secneuqes epacse trevnoc :epacsenu */
:ralimis si epacsenu noitcnuf ehT
.s gnirts ot ]i[t ypoc :tluafed delebal esac eht setucexe epacse ,sesac owt
eht fo eno hctam ton seod ]i[t retcarahc eht fI .tluafed dna ,retcarahc bat rof
't¥' ,retcarahc enilwen rof 'n¥' :tnemetats hctiws eht ni sesac eerht era erehT
.s gnirts deifidom eht rof xedni eht
si j dna ,t gnirts lanigiro eht rof xedni eht si i elbairav ehT .pool eht slortnoc
)++i ;'0¥' =! ]i[t ;0 = j = i( rof
tnemetats ehT
}
;'0¥' = ]j[s
}
;kaerb
;]i[t = ]++j[s
/* srahc rehto lla */ :tluafed
;kaerb
;'t' = ]++j[s
;'¥¥' = ]++j[s
/* bat */ :'t¥' esac
;kaerb
;'n' = ]++j[s
;'¥¥' = ]++j[s
/* enilwen */ :'n¥' esac
{ )]i[t( hctiws
)++i ;'0¥' =! ]i[t ;0 = j = i( rof
;j ,i tni
{
)][t rahc ,][s rahc(epacse diov
/* s ot t gnirts eht gniypoc elihw */
/* ecneuqes elbisiv otni bat dna enilwen dnapxe :epacse */
.sretcarahc laer eht otni secneuqes
epacse gnitrevnoc ,llew sa noitcerid rehto eht rof noitcnuf a etirW .hctiws a
esU .s ot t gnirts eht seipoc ti sa t¥ dna n¥ ekil secneuqes epacse el bisiv otni
bat dna enilwen ekil sretcarahc strevnoc taht ,)t ,s(epacse noitcnuf a etirW
)R&K 06 egap( :2-3 esicrexE
56
;kaerb
;]i[t = ]++j[s
;'¥¥' = ]++j[s
/* srahc rehto lla */ :tluafed
;kaerb
;'t¥' = ]++j[s
/* bat laer */ :'t' esac
;kaerb
;'n¥' = ]++j[s
/* enilwen laer */ :'n' esac
{ )]i++[t( hctiws
/* hsalskcab */ :'¥¥' esac
{ )]i[t( hctiws
)++i ;'0¥' =! ]i[t ;0 = j = i( rof
;j ,i tni
{
)][t rahc ,][s rahc(epacsenu diov
/* s ot t gnirts eht gniypoc elihw */
/* sretcarahc laer otni secneuqes epacse trevnoc :epacsenu */
.melborp
emas eht ot noitulos rehtona si ereh .detsen eb nac stnemetats hctiws
.s gnirts ot ]i[t dna hsalskcab a seipoc--esle gnihtyna yb dewollof
hsalskcab a seldnah tluafed ehT .bat otni t¥ dna enilwen otni n¥ trevnoc
ot tnemetats hctiws a esu ew neht ,hsalskcab a si ]i[t ni retcarahc eht fI
}
;'0¥' = ]j[s
}
;kaerb
;]i[t = ]++j[s
;'¥¥' = ]++j[s
/* srahc rehto lla */ :tluafed
;kaerb
;'t¥' = ]++j[s
/*bat laer */ :'t' esac
;kaerb
;'n¥' = ]++j[s
/* enilwen laer */ :'n' esac
{ )]i++[t( hctiws
/* hsalskcab a si ti */ esle
;]i[t = ]++j[s
)'¥¥' =! ]i[t( fi
)++i ;'0¥' =! ]i[t ;0 = j = i( rof
;j ,i tni
{
66
.evoba noitulos
eht ni sa tnemetats hctiws rehtona sesu esac hsalskcab ehT .)tluafed( esle
emit-yreve dna retcarahc hsalskcab eht seldnah tnemetats hctiws retuo ehT
}
;'0¥' = ]j[s
}
;kaerb
;]i[t = ]++j[s
/* hsalskcab a ton */ :tluafed
;kaerb
}
76
.ynamreG tseW
,kcurbansO fo ytisrevinU eht fo renierhcS lexA yb dedivorp saw noitulos ehT
.”}|...zyx...cba... ZYX...CBA...#"! otni sdnapxe ~-! dnahtrohs ehT
.zyx...cba tsil tnelaviuqe
eht otni sdnapxe z-a dnahtrohs ehT .sretcarahc IICSA rof skrow dnapxe
.2s otni retcarahc eht seipoc dnapxe esiwrehtO .noitaton
dnahtrohs eht dnapxe ot sdeecorp dnapxe ,c ni retcarahc eht ot lauqe ro naht
retaerg si taht retfa retcarahc eht dna - si retcarahc txen eht fI .retcarahc
txen eht skcehc neht dna ,c ni ti sevas ,1s morf retcarahc a sekat noitcnuf ehT
}
;'0¥' = ]j[2s
/* retcarahc eht ypoc */ ;c = ]++j[2s
esle
}
;++c = ]++j[2s
/* dnahtrohs dnapxe */ )]i[1s < c( elihw
;++i
{ )c => ]1 + i[1s && '-' == ]i[1s( fi
)'0¥' =! )]++i[1s = c(( elihw
;0 = j = i
;j ,i tni
;c rahc
{
)][2s rahc ,][1s rahc(dnapxe diov
/* 2s gnirts otni 1s ni noitaton dnahtrohs dnapxe :dnapxe*/
.yllaretil nekat si -gniliart ro gnidael a taht egnarrA .z-a- dna
9-0z-a dna c-b-a ekil sesac eldnah ot deraperp eb dna ,stigid dna esac rehtie fo
srettel rof wollA .2s ni zyx...cba tsil etelpmoc tnelaviuqe eht otni 1s gnirts eht
ni z-a ekil snoitaton dnahtrohs sdnapxe taht )2s ,1s(dnapxe noitcnuf a etirW
)R&K 36 egap( :3-3 eldrexE
86
morf degnahc neeb sah tnemetats elihw-od eht ni noisserpxe lanoitidnoc ehT
.evitisop edam si rotarepo suludom eht fo tluser eht ylno esuaceb melborp
)1-ezisdrow2(-
eht sdiova sihT .01% n fo eulav etulosba
eht sdnif sba orcam ehT .n fo eulav laitini eht sevas ngis elbairav ehT
1 - 1-ezisdrow
2
:si noitatneserper tnemelpmoc s'owt a ni rebmun evitisop tsegral eht esuaceb
;n- = n
ni sa rebmun evitisop a ot detrevnoc eb tonnac
) 2(-
1-ezisdrow
}
;)s(esrever
;'0¥' = ]i[s
;'-' = ]++i[s
)0 < ngis( fi
/* ti eteled */ ;)0 =! )01 =/ n(( elihw }
/* tigid txen teg */ ;'0' + )01 % n(sba = ]++i[s
/* redro esrever ni stigid etareneg */ { od
;0 = i
/* ngis drocer */ ;n = ngis
;ngis ,i tni
{
)][s rahc ,n tni(aoti diov
/* deifidom - s ni sretcarahc ot n trevnoc :aoti*/
))x(:)x(- ? 0 < )x(( )x(sba enifed#
.snur ti hcihw no enihcam
eht fo sseldrager ,yltcerroc eulav taht tnirp ot ti yfidoM .ton yhw nialpxE
.)l-ezisdrow2(-
ot lauqe n fo eulav eht ,si taht ,rebmun evitagen tsegral eht eldnah
ton seod a oti fo noisrev ruo ,noitatneserper rebmun tnemelpmoc s'owt a nI
)R&K 46 egap( :4-3 esicrellE
96
.etinifni eb dluow pool eht tuohguorht evitagen deniamer n fi esuaceb
0 =! )01 =/ n(
ot
0 > )01 =/ n(
07
.orez naht retaerg si b/n elihw seunitnoc pool ehT .n morf rebmun eht seteled
b =/ n
dna ,1-b dna 0 neewteb eulav a snruter
b % n
os b esab ot detrevnoc era n fo stnetnoc ehT
}
;)s(esrever
;'0¥' = ]i[s
;'-' = ]++i[s
)0 < ngis( fi
/* ti eteled */ ;)0 > )b =/ n(( elihw }
;01 - 'a' + j :'0' + j ? )9 =< j( = ]++i[s
/* tigid txen teg */ ;b % n = j
/* redro esrever ni stigid etareneg */ { od
;0 = i
/* evitisop n ekam */ ;n- = n
/* ngis drocer */ )0 < )n = ngis(( fi
;)][s rahc(esrever diov
;ngis ,j ,i tni
{
)b tni ,][s rahc ,n tni(boti diov
/* b esab -- s ni sretcarahc ot n trevnoc :boti */
.s ni regetni lamicedaxeh a sa
n stamrof )61,s,n(boti ,ralucitrap nI .s gnirts eht ni noitatneserper retcarahc
b esab a otni n regetni ebt strevnoc taht )b,s,n(boti noit:cnuf ebt etirW
)R&K 46 egap( :5-3 eldruE
17
.yrassecen fi sknalb htiw s gnirts eht sdap pool elihw ehT
;' ' = ]++i[s
)w < i( elihw
si noitacifidom yrassecen ehT .mth.4-3rexe ni aoti ot ralimis si noitcnuf sihT
}
;)s(esrever
;'0¥' = ]i[s
;' ' = ]++i[s
/* sknalb htiw dap */ )w < i( elihw
;'-' = ]++i[s
)0 < ngis( fi
/* ti eteled */ ;)0 =! )01 =/ n(( elihw }
/* tigid txen teg */ ;'0' + )01 % n(sba = ]++i[s
/* redro esrever ni stigid etareneg */ { od
;0 = i
/* ngis drocer */ ;n = ngis
;)][s rahc(esrever diov
;ngis ,i tni
{
)w tni ,][s rahc ,n tni(boti diov
/* ediw sretcarahc w,s ni sretcarahc ot n trevnoc :aoti */
))x(:)x(- ? 0 < )x(( )x(sba enifed#
.hguone ediw ti ekam ot yrassecen fi tfel eht no sknalb htiw
deddap eb tsum rebmun detrevnoc eht ;htdiw dleif muminim a si tnemugra
driht ehT .owt fo daetsni stnemugra eerht stpecca taht aoti fo noisrev a etirW
)R&K 46 egap( :6-3 esicrexE
27
)][t rahc ,][s rahc(xednirts tni
/* enon fi 1- ,s ni t fo xedni nruter :xednirts */
>h.gnirts< edulcni#
:si noitulos elbissop rehtonA
;i = sop
)'0¥' == ]k[t && 0 > k( fi
:s ni t fo ecnerrucco )tsomthgir( tsal eht rof gnikool si noitcnuf eht
esuaceb gnihcraes seunitnoc dna s ni t fo noitisop eht sdrocer xednirrts ,dnah
rehto eht nO .s ni t fo tnemele tsrif eht fo noitisop eht snruter ti hctam a sdnif
xednirts nehW .)R&K 96 egap( xednirts enituor eht ot ralimis si xednirrts
}
;sop nruter
}
;i = sop
)'0¥' == ]k[t && 0 > k( fi
;
)++k ,++j ;]k[t == ]j[s && '0¥' =! ]k[t ;0 = k ,i = j( rof
{ )++i ;'0¥' =! ]i[s ;0 = i( rof
;1- = sop
;sop ,k ,j ,i tni
{
)][t rahc ,][s rahc(xednirts tni
/* enon fi 1- ,s ni t fo xedni nruter :xednirts */
.enon si ereht fi 1- ro ,s ni t fo ecnerrucco
tsomthgir eht fo noitisop eht snruter hcihw ,)t ,s( xednirrts noitcnuf eht etirW
)R&K 17 egap( :1-4 esicrexE
erutcurtS margorP dna snoitcnuF .4 retpahC
37
.erucco t erehw noitisop tsomthgir eht ydaerla si i;i snruter
ti s ni t sdnif xednirrts sa noos sA .niaga seirt dna noitisop eno kcab spets
xednirrts hctam on si ereht fI .t gnirts eht fo htgnel eht sunim s gnirts eht
fo dne eht ta snigeb tI .melborp emas eht ot noitulos tneiciffe erom a si sihT
}
;1- nruter
}
;i nruter
)'0¥' == ]k[t && 0 > k( fi
;
)++k ,++j ;]k[t == ]j[s && '0¥' =! ]k[t ;0 = k ,i = j( rof
{ )--i ;0 => i ;)t(nelrts - )s(nelrts = i( rof
;1- = sop
;k ,j ,i tni
{
47
}
;lav nruter
}
;01 =/ lav
/* tnenopxe evitagen */ )0 > --pxe( elihw
esle
;01 =* lav
/* tnenopxe evitisop*/ )0 > --pxe( elihw
)1 == ngis( fi
;)'0' - ]i[s( + pxe * 01 = pxe
)++i ;)]i[s(tigidsi ;0 = pxe( rof
;++i
)'-' == ]i[s || '+' == ]i[s( fi
;1 : 1- ? )'-' == ]i++[s( = ngis
{ )'E' == ]i[s || 'e' == ]i[s( fi
;rewop / lav * ngis = lav
}
;0.01 =* rewop
;)'0' - ]i[s( + lav * 0.01 = lav
{ )++i ;)]i[s(tigidsi ;0.1 = rewop( rof
;++i
)'.' == ]i[s( fi
;)'0' - ]i[s( + lav * 0.01 = lav
)++i ;)]i[s(tigidsi ;0.0 = lav( rof
;++i
)'-' == ]i[s || '+' == ]i[s( fi
;1 : 1- ? )'-' == ]i[s( = ngis
;
/* ecaps etihw piks */ )++i ;)]i[s(ecapssi ;0 = i( rof
;ngis ,pxe ,i tni
;rewop ,lav elbuod
{
)][s rahc(fota elbuod
/* elbuod ot s gnirts trevnoc :fota */
>h.epytc< edulcni#
.tnenopxe dengis
yllanoitpo na dna E ro e yb dewollof eb yam rebmun tniop-gnitaolf a erehw
6-e54.321
mrof eht fo noitaton cifitneics eldnah ot fo ta dnetxE
)R&K 37 egap( :2-4 esicrexE
57
.ycarucca fo esol a llits si ereht tub ,1.0 yb noitacilpitlum detaeper
naht retteb si 01 yb noisivid detaepeR .0.1 ylerar si 1.0 semit 0.01 erofereht
dna 1.0 naht ssel ylthgils sa detneserper si 1.0,senihcam tsomnI .yranib ni
noitcarf tcaxe na si 1.0 ecnis ,1.0 yb deilpitlum naht rehtar 01 yb dedivid si lav
.smagrorp gnillac eht ot denruter si taht
rebmun lanif eht sniatnoc neht lav .semit oxe 01 yb dedivid si rebmun eht
,evitagen si tnenopxe eht fI .semit pxe 01 yb deilpitlum si rebmun eht ,evitisop
si tnenopxe eht fI .tnenopxe eht fo eulav eht ot gnidrocca rebmun eht tsujda
;01 =/ lav
/* tnenopxe evitagen */ )0 > --pxe( elihw
esle
;01 =* lav
/* tnenopxe evitisop */ )0 > --pxe( elihw
)1 == ngis( fi
.pxe ni derots dna detaluclac si tnenopxe
eht fo eulav eht dna nis elbairav eht derots si tnenopxe eht fo ngis eht neht
stsixe tnenopxe na fI .lav ni derots rebmun eht snruter fota neht tsixe ton
seod tnenopxe na fI .tnenopxe lanoitpo seldnah noitcnuf eht fo flah dnoces ehT
.noitaton cifitneics seldnah noisrev
deifidom eht dna rebmun eht fo eulav eht snruter fota lanigiro eht ,tniop
siht tA .rebmun eht setaluclac dna ,nis eht sdrocer ,ecaps etihw spiks noitcnuf
ehT .)R&K 17 egap( fota fo noitacilpud a si enituor eht fo flah tsrif ehT
67
;))2po,)(pop(domf(hsup
)0.0 =! 2po( fi
;)(pop = 2po
:'%' esac
;kaerb
;)"n¥rosivid orez :rorre"(ftnirp
esle
;)2po / )(pop(hsup
)0.0 =! 2po( fi
;)(pop = 2po
:'/' esac
;kaerb
;)2po - )(pop(hsup
;)(pop = 2po
:'-' esac
;kaerb
;))(pop * )(pop(hsup
:'*' esac
;kaerb
;))(pop + )(pop(hsup
:'+' esac
;kaerb
;))s(fota(hsup
:REBMUN esac
{ )epyt( hctiws
{ )FOE =! ))s(poteg = epyt(( elihw
;]POXAM[s rahc
;2po elbuod
;epyt tni
{
)(niam
/* rotaluclac hsiloP esrever */
;)diov(pop elbuod
;)elbuod(hsup diov
;)][ rahc(poteg tni
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
/* rotarepo ro dnarepo fo ezis xam */ 001 POXAM enifed#
/* )(fota rof */ >h.bildts< edulcni#
>h.oidts< edulcni#
.srebmun evitagen rof snoisivorp dna rotarepo )%( suludom eht
ddA .rotaluclac eht dnetxe ot drawrofthgiarts si ti ,krowemarf cisab eht neviG
)R&K 97 egap( :3-4 esicrexE
77
}
;'-' nruter
;)c(hctegnu
)FOE =! c( fi
{ esle
/*rebmun evitagen */ ;c = ]i++[s
)'.' == c || ))(hcteg = c(tigidsi( fi
)'-' == c( fi
/* rebmun a ton */ ;c nruter
)'-' =! c && '.' =! c && )c(tigidsi!( fi
;0 = i
;'0¥' = ]1[s
;
)'t¥' == c || ' ' == ))(hcteg = c = ]0[s(( elihw
;c ,i tni
{
)][s rahc(poteg tni
/* dnarepo ciremun ro retcarahc txen teg :poteg */
;)tni(hctegnu diov
;)diov(hcteg tni
/* dnuof saw rebmun a langis*/ '0' REBMUN enifed#
>h.oidts< edulcni#
>h.gnirts< edulcni#
>h.epytc< edulcni#
:poteg deifidom eht si sihT
.kcats eht no tnemele pot eht si 2po
.kcats eht no stnemele owt pot eht rof redniamer eht setaluclac domf noitcnuf
yrarbil ehT .)/( noisivid eht ekil deldnah si )%(rotarepo suludom ehT
.degnahcnu niamer )R&K 77 egap( pop dna
hsup senituor ehT .poteg dna margorp niam eht eb ot snoitacifidom edam eW
}
;0 nruter
}
}
;kaerb
;)s ,"n¥s% dnammoc nwonknu :rorre"(ftnirp
:tluafed
;kaerb
;))(pop ,"n¥g8.%t¥"(ftnirp
:'n¥' esac
;kaerb
;)"n¥roisivid orez:rorre"(ftnirp
esle
87
. 1-
secudorp noisserpxe dnoces ehT .1- + 1 :orez secudorp noisserpxe tsrif ehT
% 3 01-
+ 1- 1
seldnah rotaluclac dednetxe ehT
.rebmun evitagen a si
32.1-
tuB .rebmun a yb dewollof ngis sunim a si
1-
,elpmaxe roF .rebmun
evitagen a si ti fi enimreted ot ngis sunim eht tsap retcarahc eno skool poteg
}
;REBMUN nruter
;)c(hctegnu
)FOE =! c( fi
;'0¥' = ]i[s
;
)))(hcteg = c = ]i++[s(tigidsi( elihw
/* trap noitcarf tcelloc */ )'.' == c( fi
;
)))(hcteg = c = ]i++[s(tigidsi( elihw
/* regetni tcelloc */ ))c(tigidsi( fi
97
;)(pop = 2po
:'%' esac
;kaerb
;)"n¥rosivid orez :rorre"(ftnirp
esle
;)2po / )(pop(hsup
)0.0 =! 2po( fi
;)(pop = 2po
:'/' esac
;kaerb
;)2po - )(pop(hsup
;)(pop = 2po
:'-' esac
;kaerb
;))(pop * )(pop(hsup
:'*' esac
;kaerb
;))(pop + )(pop(hsup
:'+' esac
;kaerb
;))s(fota(hsup
:REBMUN esac
{ )epyt( hctiws
{ )FOE =! ))s(poteg = epyt(( elihw
;]POXAM[s rahc
;2po ,1po elbuod
;epyt tni
{
)(niam
/* rotaluclac hsiloP esrever */
;)diov(raelc diov
;)diov(pop elbuod
;)elbuod(hsup diov
;)][ rahc(poteg tni
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
/* rotarepo ro dnarepo fo ezis xam */ 001 POXAM enifed#
/* )(fota rof */ >h.htam< edulcni#
>h.oidts< edulcni#
.kcats
eht raelc ot dnammoc a ddA .stnemele owt pot eht paws ot dna ,ti etacilpud
ot ,gnippop tuohtiw kcats eht fo tnemele pot eht tnirp ot sdnammoc ddA
)R&K 97 egap( :4-4 esicrexE
08
yaw sihT .pop dna hsup htiw rehtegot ti tup ew dna taht yltcaxe seod taht
noitcnuf wen a dedda ew oS .orez ot ps tes ;kcats eht raelc ot ysae si tI
.redro esrever ni kcab meht gnihsup
yb dna meht gnippop yb kcats eht fo stnemele owt pot eht paws eW
.eciwt
kcab ti hsup dna ti pop ew kcats eht fo tnemele pot eht etacilpud oT
.selbairav
noitisop kcats eht ro kcats eht tuoba wonk margorp niam eht gnittel diova
ot ecneuqes hsup ,tnirp ,pot eht esu ew tub rotarepo enilwen eht ekil kcats
eht fo tnemele pot eht pop yltnenamrep ton od eW .kcats eht no kcab ti hsup
dna ,ti stnirp ,kcats eht fo tnemele pot eht spop taht,'?',rotarepo wen a dedda
eW .ti stnirp dna kcats eht no tnemele pot eht spop rotarepo enilwen ehT
}
;0 nruter
}
}
;kaerb
;)s ,"n¥s% dnammoc nwonknu :rorre"(ftnirp
:tluafed
;kaerb
;))(pop ,"n¥g8.%t¥"(ftnirp
:'n¥' esac
;kaerb
;)2po(hsup
;)1po(hsup
;)(pop = 2po
;)(pop = 1po
/* tnemele owt pot eht paws */ :'s' esac
;kaerb
;)2po(hsup
;)2po(hsup
;)(pop = 2po
/* kcats eht fo tnemele pot etacilpud */ :'d' esac
;kaerb
;)(raelc
/* kcats eht raelc */ :'c' esac
;kaerb
;)2po(hsup
;)2po ,"n¥g8.%t¥"(ftnirp
;)(pop = 2po
/* kctas eht fo tnemele pot tnirp */ :'?' esac
;kaerb
;)"n¥roisivid orez:rorre"(ftnirp
esle
;))2po ,)(pop(domf(hsup
)0.0 =! 2po( fi
18
}
;0 = ps
{
)diov(raelc diov
/* kcats eht raelc :raelc */
.selbairav noitisop
kcats dna kcats eht ot refer kcats eht niatniam taht snoitcnuf eht ylno
28
;)2po / )(pop(hsup
)0.0 =! 2po( fi
;)(pop = 2po
:'/' esac
;kaerb
;)2po - )(pop(hsup
;)(pop = 2po
:'-' esac
;kaerb
;))(pop * )(pop(hsup
:'*' esac
;kaerb
;))(pop + )(pop(hsup
:'+' esac
;kaerb
;)s(cnfhtam
:EMAN esac
;kaerb
;))s(fota(hsup
:REBMUN esac
{ )epyt( hctiws
{ )FOE =! ))s(poteg = epyt(( elihw
;]POXAM[s rahc
;2po ,1po elbuod
;epyt tni
{
)(niam
/* rotaluclac hsiloP esrever */
;)][ rahc(cnfhtam diov
;)diov(raelc diov
;)diov(pop elbuod
;)elbuod(hsup diov
;)][ rahc(poteg tni
/* dnuof saw eman a taht langis */ 'n' EMAN enifed#
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
/* rotarepo ro dnarepo fo ezis xam */ 001 POXAM enifed#
/* )(fota rof */ >h.htam< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.)R&K 052 egap( 4 noitceS ,B xidneppA
ni >h.htam< eeS .wop dna ,pxe ,nis ekil snoitcnuf yrarbil ot ssecca ddA
)R&K 97 egap( :5-4 esicrexE
38
;)))(pop(soc(hsup
)0 == )"soc" ,s(pmcrts( fi esle
;)))(pop(nis(hsup
)0 == )"nis" ,s(pmcrts( fi
;2po elbuod
{
)][s rahc(cnfhtam diov
/* snoitcnuf htam detroppus rof s gnirts kcehc :cnfhtam */
}
;0 nruter
}
}
;kaerb
;)s ,"n¥s% dnammoc nwonknu :rorre"(ftnirp
:tluafed
;kaerb
;))(pop ,"n¥g8.%t¥"(ftnirp
:'n¥' esac
;kaerb
;)2po(hsup
;)1po(hsup
;)(pop = 2po
;)(pop = 1po
/* tnemele owt pot eht paws */ :'s' esac
;kaerb
;)2po(hsup
;)2po(hsup
;)(pop = 2po
/* kcats eht fo tnemele pot etacilpud */ :'d' esac
;kaerb
;)(raelc
/* kcats eht raelc */ :'c' esac
;kaerb
;)2po(hsup
;)2po,"n¥g8.%t¥"(ftnirp
;)(pop = 2po
/* kctas eht fo tnemele pot tnirp */ :'?' esac
;kaerb
;)"n¥roisivid orez:rorre"(ftnirp
esle
;))2po,)(pop(domf(hsup
)0.0 =! 2po( fi
;)(pop = 2po
:'%' esac
;kaerb
;)"n¥rosivid orez :rorre"(ftnirp
esle
48
;
)))(hcteg = c = ]i++[s(tigidsi( elihw
/* trap noitcarf tcelloc */ )'.' == c( fi
;
)))(hcteg = c = ]i++[s(tigidsi( elihw
/* trap regetni tcelloc */ ))c(tigidsi( fi
;0 = i
/* rebmun a ton */ ;c nruter
)'.' =! c && )c(tigidsi!( fi
}
/* dnammoc a eb yam ti */ ;c nruter esle
/* eman si ti ,rahc 1> */ ;EMAN nruter
)1 > )s(nelrts( fi
/* raf oot rahc eno tnew */ ;)c(hctegnu
)FOE =! c( fi
;'0¥' = ]i[s
;)))(hcteg = c = ]i++[s(ewolsi( elihw
{
/* eman ro dnammoc */ ))c(rewolsi( fi
;'0¥' = ]1[s
;
)'t¥' == c || ' ' == ))(hcteg = c = ]0[s(( elihw
;c ,i tni
{
)][s rahc(poteg tni
/* dnarepo ciremun ro retcarahc txen teg :poteg */
;)tni(hctegnu diov
;)diov(hcteg tni
/* dnuof saw eman a taht langis */ 'n' EMAN enifed#
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
>h.gnirts< edulcni#
>h.epytc< edulcni#
>h.oidts< edulcni#
:poteg deifidom eht rof elif ecruos ehT
}
;)s ,"n¥detroppus ton s%:rorre"(ftnirp
esle
}
;))2po,)(pop(wop(hsup
;)(pop = 2po
{ )0 == )"wop" ,s(pmcrts( fi esle
;)))(pop(pxe(hsup
)0 == )"pxe" ,s(pmcrts( fi esle
58
.snoitcnuf erom
edulcni ot cnfhtam dnapxe ot drawrofthgiarts si ti yaw sihT .meht sdnif ti
sa sgnirts snruter tsuj ti ;seman noitcnuf cificeps tuoba wonk ton seod poteg
.seulav owt eht sdda dna ,2 rewop eht ot 4 ,2 rewop eht ot 5 sesiar
+ wop 2 4 wop 2 5
,elpmaxe rehtonA
.eno si orez fo enisoc eht dna eno si 2/IP fo enis eht esuaceb 2 secudorp
+ soc 0 nis / 2 295141.3
.eno si tluser ehT .kcab tluser eht sehsup
dna ,enis eht setaluclac ,kcats eht fo tnemele pot eht spop nis noitcnuf ehT
.kcats eht no kcab tluser eht sehsup dna 2 yb IP sedivid noitarepo tsrif ehT
nis / 2 56295141.3
.eno si 2/IP fo enis eht dna snaidar ni tnemugra na stcepxe nis ,elpmaxe roF
.kcats eht no kcab ti sehsup cnfhtam dna eulav a snruter
noitcnuf htam ehT .noitcnuf htam eht sekovni dna kcats eht morf stnemele
hguone spop cnufhtam ,snoitcnuf detroppus eht fo eno si s gnirts eht fI
.rorre na stroper ti ro s gnirts eht sehctam taht eman noitcnuf a sdnif
ti litnu stnemetats fi fo ecneuqes a smrofrep tI .wen si cnfhtam enituor ehT
.cnfhtam sekovni dna sepyt dilav eht
fo eno sa EMAN sezingocer margorp niam ehT .EMAN epyt eht htiw ti nruter
dna srettel esac rewol fo gnirts a rehtag ot elba eb ot poteg deifidom eW
}
;REBMUN nruter
;)c(hctegnu
)FOE =! c( fi
;'0¥' = ]i[s
68
;)2po - )(pop(hsup
;)(pop = 2po
:'-' esac
;kaerb
;))(pop * )(pop(hsup
:'*' esac
;kaerb
;))(pop + )(pop(hsup
:'+' esac
;kaerb
;)s(cnfhtam
:EMAN esac
;kaerb
;))s(fota(hsup
:REBMUN esac
{ )epyt( hctiws
{ )FOE =! ))s(poteg = epyt(( elihw
;0.0 = ]i[elbairav
)++i ;62 < i ;0 = i( rof
;]62[elbairav elbuod
;]POXAM[s rahc
;v ,2po ,1po elbuod
;0 = rav ,epyt ,i tni
{
)(niam
/* rotaluclac hsiloP esrever */
;)][ rahc(cnfhtam diov
;)diov(raelc diov
;)diov(pop elbuod
;)elbuod(hsup diov
;)][ rahc(poteg tni
/* dnuof saw eman a taht langis */ 'n' EMAN enifed#
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
/* rotarepo ro dnarepo fo ezis xam */ 001 POXAM enifed#
/* )(fota rof */ >h.htam< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.eulav detnirp
yltnecer tsom eht rof elbairav a ddA ).seman rettel-elgnis htiw selbairav
xis-ytnewt edivorp ot ysae s'tI( .selbairav gnildnah rof sdnammoc ddA
)R&K 97 egap( :6-4 esicrexE
78
)'v' == epyt( fi esle
;)]'A' - epyt[elbairav(hsup
)'Z' =< epyt && 'A' => epyt( fi
:tluafed
;kaerb
;)v ,"n¥g8.%t¥"(ftnirp
;)(pop = v
:'n¥' esac
;kaerb
;)2po(hsup
;)1po(hsup
;)(pop = 2po
;)(pop = 1po
/* tnemele owt pot eht paws */ :'s' esac
;kaerb
;)2po(hsup
;)2po(hsup
;)(pop = 2po
/* kcats eht fo tnemele pot etacilpud */ :'d' esac
;kaerb
;)(raelc
/* kcats eht raelc */ :'c' esac
;kaerb
;)"n¥eman elbairav on :rorre"(ftnirp
esle
;)(pop = ]'A' - rav[elbairav
)'Z' =< rav && 'A' => rav( fi
;)(pop
:'=' esac
;kaerb
;)2po(hsup
;)2po,"n¥g8.%t¥"(ftnirp
;)(pop = 2po
/* kctas eht fo tnemele pot tnirp */ :'?' esac
;kaerb
;)"n¥roisivid orez:rorre"(ftnirp
esle
;))2po,)(pop(domf(hsup
)0.0 =! 2po( fi
;)(pop = 2po
:'%' esac
;kaerb
;)"n¥rosivid orez :rorre"(ftnirp
esle
;)2po / )(pop(hsup
)0.0 =! 2po( fi
;)(pop = 2po
:'/' esac
;kaerb
88
.1+5 :6 secudorp ti
+ 1 v
si noitarepo txen eht fI .v elbairav eht ot 5 sngissa osla dna 5 stnirp margorp
eht rotarepo enilwen eht tA .)A elbairav eht ot dengissa eulav eht( 3 ot 2 sdda
+ A 2
nehT .A elbairav eht ot 3 eulav eht sngissa
* A 3
,elpmaxe xoF .eman elbairav gnissecorp eht ot kcats eht no
eulav sti sehsup ti)v ro,Z-A( eman elbairav a sdnif magrorp eht revenehW
.eulav detnirp yltnecer tsom
eht sniatnoc taht v elbairav esac rewol a dedda eW .elbairav eht ot xedni eht
sa sevres srettel ehT .Z ot A morf rettel esac reppu era dedda ew selbairav ehT
}
;0 nruter
}
;epyt = rav
}
;kaerb
;)s ,"n¥s% dnammoc nwonknu :rorre"(ftnirp
esle
;)v(hsup
98
.gnikcehc rorre dna ,pfub ,fub seldnah
hctegnu enituor ehT .pfub dna fub tuoba wonk ot deen ton esod stegnu
.redro esrever ni kcab gnirts
eht sehsup stegnu .tupni eht otno s gnirts eht morf retcarahc a kcab gnihsup
emit hcae ,semit nel )R&K 97 egap( hctegnu enituor eht sllac stegnu
.)R&K 93 egap(
nelrts noitcnuf eht yb denimreted si hcihw ,)'0¥' gnitanimret eht gnidulcxe(
s gnirts eht ni retcarahc fo rebmun eht sniatnoc nel elbairav ehT
}
;)]nel--[s(hctegnu
)0 > nel( elihw
;)tni(hctegnu diov
;)s(nelrts = nel tni
{
)][s rahc(stegnu diov
/* tupni eht otno kcab gnirts hsup :stegnu */
>h.gnirts< edulcni#
?hctegnu esu tsuj ti dluohs ro ,pfub dna fub tuoba wonk stegnu dluohS
.tupni eht otno gnirts eritne na kcab hsup lliw taht )s(stegnu enituor a etirW
)R&K 97 egap( :7-4 esicrexE
09
.egassem
rorre na secudorp hctegnu neht ytpme ton si reffub eht fI .kcab retcarahc
a sehsup ti erofeb reffub ytpme na rof skcehc hctegnu .retcarahc a steg
ti emit yreve orez ot fub steser hcteg dna emit daol ta orez ot dezilaitini si fub
.emit yna ta reffub eht ni retcarahc
1 naht erom eb reven lliw ereht esuaceb yarra na regnol on si ,fub ,reffub ehT
}
;c = fub
esle
;)"n¥retcarahc ynam oot:hctegnu"(ftnirp
)0 =! fub( fi
{
)c tni(hctegnu diov
/* tupni eht otno kcab retcarahc hsup :hctegnu */
}
;c nruter
;0 = fub
;)(rahcteg = c
esle
;fub = c
)0 =! fub( fi
;c tni
{
)diov(hcteg tni
/* retcarahc )kcab dehsup ylbissop( a teg :hcteg */
;0 = fub rahc
>h.gnirts< educni#
.ylgnidrocca hctegnu dna hcteg
yfidoM .kcabhsup fo retcarahc eno naht erom eb reven lliw ereht taht esoppuS
)R&K 97 egap( :8-4 esicrexE
19
)1-(FFFFx0 FFx0 FFFFx0
)552(FF00x0 FFx0 FFFFx0
regetni >-- retcarahc >-- )1-(rebmun evitagen
.1- si hcihw ,FFFFx0 ro ,552 si hcihw ,FF00x0 ecudorp thgim ti ,tni na
ot detrevnoc si FFx0 nehW .FFx0 si derots gnieb rebmun lautca eht ,rahc a ni
derots si FFFFx0 nehW .)stib 61 ot( FFFFx0 si 1- noitaton lamicedaxeh nI
.ton
ro 1 saw tib tsomtfel eht rehtehw fo sseldrager ,rebmun evitisop a ecudorp
syawla lliw noisrevnoc sihT .dne tfel eht ta sorez gnidda yb tni na ot detrevnoc
si rahc a ,srehto nO .tni na ot detrevnoc nehw rebmun evitagen a ecudorp
reven thgim ti ,tni na ot detrevnoc si rahc a nehW .)R&K 34 egap( dengisnu ro
dengis eb ot elbairav rahc a eriuqer ton seod egaugnal gnimmargorp C ehT
;]EZISFUB[fub rahc
:sretcarahc fo yarra na eb ot deralced
si ,fub ,reffub eht ,)R&K 97 egap( hctegnu dna hcteg senituor eht nI
}
;c = ]++pfub[fub
esle
;)"n¥sretcarahc ynam oot :hctegnu"(ftnirp
)EZISFUB => pfub( fi
{
)c tni(hctegnu diov
/* tupni eht otno kcab retcarahc hsup :hctegnu */
}
;)(rahcteg : ]pfub--[fub ? )0 > pfub( nruter
{
)diov(hcteg tni
/* retcarahc )kcab dehsup ylbissop( a teg :hcteg */
/* fub ni noitisop eerf txen */ ;0 = pfub tni
/* hctegnu rof reffub*/ ;]EZISFUB[fub tni
001 EZISFUB enifed#
>h.oidts< edulcni#
.ngised ruoy
tnemelpmi neht ,kcab dehsup si FOE na fi eb ot thguo seitreporp rieht tahw
ediceD .yltcerroc FOE kcab-dehsup a eldnah ton od hctegnu dna hcteg ruO
)R&K 97 egap( :9-4 esicrexE
29
.yaw elbatrop a ni deldnah
eb lliw rebmun evitagen yna ro )1-(FOE dna rucco lliw snoisrevnoc oN
;}EZISFUB[fub tni
:regetni fo yarra na sa deralced
eb dluohs fub ,retcarahc rehto yna sa )1-(FOE taert ot gniog era ew fI
39
.selbairav lacol ekilnu ,sllac neewteb seulav rieht niatniam
lliw yeht taht os selbairav lanretxe il dna enil edam eW .enil ni retcarahc txen
eht rof xedni eht si il ;emit a ta enil tupni eritne eno sniatnoc taht yarra na
si enil .poteg noitcnuf eht ni enilteg esu ew hctegnu dna hcteg gnisu fo daetsnI
}
;REBMUN nruter
;--il
;'0¥' = ]i[s
;
))]++il[enil = c = ]i++[s(tigidsi( elihw
/* trap noitcarf tcelloc */ )'.' == c( fi
;
))]++il[enil = c = ]i++[s(tigidsi( elihw
/* regetni tcelloc */ ))c(tigidsi( fi
;0 = i
/* rebmun a ton */ ;c nruter
)'-' =! c && '.' =! c && )c(tigidsi!( fi
;'0¥' = ]1[s
;
)'t¥' == c || ' ' == )]++il[enil = c = ]0[s(( elihw
;0 = il
esle
;FOE nruter
)0 == )ENILXAM ,enil(enilteg( fi
)'0¥' == ]il[enil( fi
;i ,c tni
{
)][s rahc(poteg tni
/* dnarepo ciremun ro rotarepo txen teg :poteg*/
/* enil tupni eno */ ;]ENILXAM[enil rahc
/* xedni enil tupni */ ;0 = il tni
;)timil tni ,][enil rahc(enilteg tni
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
001 ENILXAM enifed#
>h.epytc< edulcni#
>h.oidts< edulcni#
.hcaorppa
siht esu ot rotalukac eht esiveR .yrassecennu hctegnu dna hcteg sekam
siht ;enil tupni eritne na daer ot en 11 teg sesu noitazinagro etanretla nA
)R&K 97 egap( :01-4 esicrexE
49
.R&K 38 egap litnu dessucsid ton
era selbairav citats esuaceb os od ton did eW .citats eb ot selbairav eht eralced
dluohs ew os gnineppah morf siht tneverp ot tnaw ew semitemoS .poteg
naht rehto noitcnuf a yb deifidom eb dluoc enil dna il os ,noitcnuf rehtona
ni selbairav lanretxe yfidom dna esu yam noitcnuf yna taht rebmemeR
.raf oot retcarahc
eno tnew ew esuaceb il tnemerced ew ,kcab retcarahc a hsup ot hctegnu
gnillac fo daetsni ,noitcnuf eht fo dne eht tA .il tnemercni ew neht dna ,enil
ni ,il noitisop ta retcarahc eht teg ew noisrev siht nI .retcarahc rehtona sdeen
ti emit yreve hcteg sekovni noitcnuf eht )R&K 87 egap( poteg lanigiro eht nI
.enil a teg ot enilteg sekovni poteg neht
)'0¥' == ]il[enil( fi
)tey enil a evah ton od ew ro( enil eht fo dne eht ta si poteg fI
59
.c ni retcarahc tnerruc eht senimaxe ti retfa ylno retcarahc rehtona
teg ot sdeen poteg taht si nosaer ehT .tib a degnahc tnemetats elihw tsrif ehT
.ctsal tuo sorez dna c otni retcarahc eht seipoc poteg neht retcarahc suoiverp
a si ereht fI .retcarahc wen a teg ot hcteg sekovni noitcnuf eht tsixe ton
seod eno fI .ctsal ni retcarahc suoiverp a rof skcehc ti dekovni si poteg nehW
.ctsal ni retcarahc eht erots ew hctegnu
esu ton od ew ecniS .tupni eht otno kcab hsup dluohs ew taht retcarahc
tsal eht srebmemer taht elbairav citats lanretni na evah ot poteg deifidom eW
}
;REBMUN nruter
;c = ctsal
)FOE =! c( fi
;'0¥' = ]i[s
;)))(hcteg = c = ]i++[s(tigidsi( elihw
/* trap noitcarf tcelloc */ )'.' == c( fi
;)))(hcteg = c = ]i++[s(tigidsi( elihw
/* regetni tcelloc */ ))c(tigidsi( fi
;0 = i
/* rebmun a ton */ ;c nruter
)'-' =! c && '.' =! c && )c(tigidsi!( fi
;'0¥' = ]1[s
;)(hcteg = c
)'t¥' == c ||' ' == )c = ]0[s(( elihw
}
;0 = ctsal
;ctsal = c
{ esle
;)(hcteg = c
)0 == ctsal( fi
;0 = ctsal tni citats
;i ,c tni
{
/* dnarepo ciremun ro rotarepo txen teg :poteg */
;)diov(hcteg tni
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
>h.epytc< edulcni#
>h.oidts< edulcni#
.elbairav citats
lanretni na esu :tniH .hctegn u esu ot deen t'nseod ti taht os poteg yfidoM
)R&K 38 egap( :11-4 esicrexE
69
.tsal eht tpecxe ,'0¥' eht setirwrevo level txen eht
dna gnirts eht etanimret ot '0¥' a sdda level hcae taht setoN .thgir ot tfel morf
stigid eht setaluclac ti sllac evisrucer morf snruter aoti sA .i tnemercni dna
s yarra eht fo noitisop tsrif eht ni ngis sunim a tup ew evitagen si n fI .s yarra
eht rof xedni eht sa i elbairav citats a esu eW .n ni tigid )tsomtfel( tnacifingis
tsom eht ta gnikool era ew sllac evisrucer eht fo eno ni orez si 01/n nehW
;)][s ,01 / n(aoti
)01 / n( fi
: 0 1/ n
htiw flesti sllac aoti neht orez ton si 01/n noisivid regetni eht fo tluser eht
fI .s sretcarahc fo yarra na dna n regetni na :stnemugra owt seviecer aoti
}
;'0¥' = ]i[s
;'0' + 01 % )n(sba = ]++i[s
}
;'-' = ]++i[s
)0 < n( fi
;0 = i
{ esle
;)][s ,01 / n(aoti
)01 / n( fi
;i tni citats
{
)][s rahc ,n tni(aoti diov
/* evisrucer ;s ni sretcarahc ot n trevnoc :aoti */
>h.htam< edulcni#
.enituor evisrucer a gnillac yb gnirts a otni regetni na
trevnoc ,si taht ;aoti fo noisrev evisrucer a etirw ot dtnirp fo saedi eht tpadA
)R&K 88 egap( :21-4 esicrexE
79
:dellac si resrever emit yreve,1
yb tnemercni si,i ,xedni edis-tfel ehT .]2-nel[s dna ]1[s era deppaws sretcarahc
owt dnoces eht dna ]1-nel[s dna ]0[s era deppaws sretcarahc owt tsrif eht
,elpmaxe roF .ni edistuo eht morf deppaws era gnirts eht ni retcarahc ehT
;)1 + i( - nel = j
:sa detupmoc si j .gnirts eht rof xedni edis-thgir eht si j ,0 ot lauqe si i ,yllaitinI
.)R&K 93
egap ,)s(nelrts( gnirts eht fo htgnel eht si nel dna ;gnirts eht rof xedni edis-tfel
eht si i ;desrever eb ot gnirts eht si s :stnemugra eerht seviecer resrever
.ecalp ni s gnirts eht sesrever
hcihw ,resrever sllac neht dna gnirts eht fo htgnel eht senimreted esrever
.esrever ot gnirts retcarahc eht ylno ssap eW ,eroferehT .noitatnemelpmi fo
sseldrager evreser enituor eht ot ecafretni resu emas eht niatniam ot deen eW
}
}
;)nel ,i++ ,s(resrever
;c = ]j[s
;]j[s = ]i[s
;]i[s = c
{ )j < i( fi
;)1 + i( - nel = j
;j ,c tni
{
)nel tni ,i tni ,][s rahc(resrecer diov
/* evisrucer; ecalp ni s gnirts a esrever :resrever */
}
;))s(nelrts ,0 ,s(resrever
;)nel tni ,i tni ,][s rahc(resrever diov
{
)][s rahc(esrever diov
/* ecalp ni s gnirts esrever :esrever */
>h.gnirts< edulcni#
>h.oidts< edulcni#
.ecalp ni
s gnirts eht sesrever hcihw ,)s(esever noitcnuf eht fo noisrev evisrucer a etirW
)R&K 88 egap( :31-4 esicrexE
89
.meht fo
eno si sihT .noisrucer tuohtiw devlos tseb era smelborp rehtO .R&K 241 egap
no tnirpeert noitcnuf eht ,elpmaxe rof ,ees―noitulos evisrucer ot sevlesmeht
dnel smelborp niatreC .noisrucer fo noitacilppa doog a ton si sihT
.)j > i( xedni edis-thgir eht fo
thgir eht ot retcarahc a ot stniop xedni edis-tfel eht ro )j == i( sretcarahc emas
eht ot gnitniop era sexedni owt eht rehtie litnu seunitnoc gnippaws ehT
;)nel ,i++ ,s(resrever
99
.eman elbairav a sa desu
eb ton lliw z_ taht si noitpmussa ehT .deppaws ton era stnemugra owt eht dna
} ;z_ = x ;x = x ;x = z_ ;z_ tni {
:semoceb ti ,dednapxe si orcam eht nehw neht
;)x ,z_ ,tni(paws
,z_ eman eht sah stnemugra
eht fo eno fI .z_ si stnemugra eht fo rehtie fi skrow orcam paws ehT
.stnemugra
owt eht paws spleh taht t epyt fo elbairav lacol a si z_ ,elbairav lacol eralced
nac ew kcolb a fo gninnigeb eht tA .kcolb wen a enifed ot secarb eht esu eW
} ;z_ = x
¥ ;x = y
¥ ;y = z_
¥ ;z_ t { )y ,x ,t(paws enifed#
).pleh lliw erutcurts
kcolB( .t epyt fo stnemugra owt segnahcretni taht )y ,x ,t(paws orcam a enifeD
)R&K 19 egap( :41-4 esicrexE
001
;ngis =* np*
;)'0' - c( + np* * 01 = np*
))(hcteg = c ,)c(tigidsi ;0 = np*( rof
}
}
/* rahc ngis nruter */ ;d nruter
/* rahc gnis kcab hsup */ ;)d(hctegnu
/* tigid-non kcab hsup */ ;)c(hctegnu
)FOE =! c( fi
{ )))(hcteg = c(tigidsi!( fi
/* rahc ngis rebmemer */ ;c = d
{ )'-' == c || '+' == c( fi
;1 : 1- ? )'-' == c( = ngis
}
;0 nruter
/* rebmun a ton si ti */ ;)c(hctegnu
{ )'-' =! c && '+' =! c && FOE =! c && )c(tigidsi!( fi
;
/* ecaps etihw piks */ )))(hcteg = c(ecapssi( elihw
;ngis ,d ,c tni
{
)np* tni(tniteg tni
/* np* otni tupni morf regetni txen teg :tniteg */
;)tni(hctegnu diov
;)diov(hcteg tni
>h.epytc< edulcni#
>h.oidts< edulcni#
.tupni eht no kcab retcarahc a hcus hsup ot ti xiF .orez fo noitatneserper
dilav a sa tigid a yb dewollof ton - ro + a staert tniteg ,nettirw sA
)R&K 79 egap( :l-5 esicrexE
syarrA dna sretnioP .5 retpahC
101
.noitautis siht rotacidni ot retcarahc ngis
eht snruter dna retcarahc ngis eht kcab sehsup noitcnuf eht nehT .tupni eht
no kcab ti sehsup tniteg ,FOE ton si ti dna tigid a ton si retcarahc txen eht fI
.retcarahc txen eht steg dna d ni ti sevas tniteg ,retcarahc ngis si ereht nehW
}
;c nruter
;)c(hctegnu
)FOE =! c( fi
201
;)'0' - c( + np* * 0.01 = np*
:trap regetni
eht sa noihsaf emas eht ni np* ot dedda si trap lanoitcarf ehT .) noitaton
cifitneics ton tub (rebmun eht fo trap lnoitcarf eht seldnah osla taolfteg
.np ni sserdda eht ta
rebmun eht fo trap regetni eht serots dna ,ngis eht sdrocer ,ecaps etihw spiks
taolfteg ,)R&K 79 egap( tniteg noitcnuf eht ot ralimis si taolfteg enituor ehT
}
;c nruter
;)c(hctegnu
)FOE =! c( fi
/* rebmun lanif */ ;rewop / ngis =* np*
}
;0.01 =* rewop
/* trap lanoitcarf */ ;)’0‘ – c( + np* * 0.01 = np*
{ ))(hcteg = c ;)c(tigidsi ;0.1 = rewop( rof
;)(hcteg = c
)’.‘ == c( fi
/* trap regetni */ ;)'0' - c( + np* * 0.01 = np*
))(hcteg = c ,)c(tigidsi ;0.0 = np*( rof
;)(hcteg = c
)'-' == c || '+' == c( fi
;1 : 1- ? )'-' == c( = ngis
}
;0 nruter
/* rebmun a ton si ti */ ;)c(hctegnu
{ )'-' =! c && '+' =! c && FOE =! c && )c(tigidsi!( fi
;
/* ecaps etihw piks */ )))(hcteg = c(ecapssi( elihw
;rewop taolf
;ngis ,c tni
{
)np* taolf(taolfteg tni
/* tupni morf rebmun tniop-taolf txen teg :taolfteg */
;)tni(hctegnu diov
;)diov(hcteg tni
>h.epytc< edulcni#
?eulav noitcnuf sti sa nruter
taolfteg seod epyt tahW .tniteg fo golana tniop-gnitaolf eht ,taolfteg etirW
)R&K 79 egap( :2-5 esicrexE
301
.tni si epyt noitcnuf ehT .rebmun tniop-taolf eht retfa
retcarahc tsrif eht fo eulav IICSA eht ro FOE rehtie snruter noitcnuf ehT
.eulav tniop-taolf
eht teg ot rewop/ngis yb np* fo eulav lanif eht seilpitlum taolfteg eht dnA
.0001 slauqe rewop tniop lamiced eht wollof
stigid 3 fi dna ,01 slauqe rewop tniop lamiced eht swollof tigid 1 fi ,1 slauqe
rewop tniop lamiced eht wollof stigid 0 fi ,elpmaxe roF .01 yb deilpitlum
si rewop elbairav eht tniop lamiced eht retfa detcelloc tigid hcae roF
401
.rekram gnirts fo dne eht ot tniop ton seod t sa gnol sa seunitnoc dna
,sretniop htob stnemercni ,t* ni si revetahw s* ot sngissa tnemetats evoba ehT
;
)++t* = ++s*( elihw
:s gnirts eht ot t gnirts eht sdneppa pool elihw dnoces ehT
.rekram gnirts fo dne eht ton si retcarahc eht sa gnol sa eurt si
)s*( elihw
tnemetats ehT .)'0¥'(rekram
gnirts fo dne eht sdnif ti litnu s retniop eht stnemercni pool elihw tsrif ehT
.sgnirts retcarahc eht fo gninnigeb eht ot tniop t dna s yllaitinI
}
;
)++t* = ++s*( elihw
;++s
)s*( elihw
{
)t* rahc ,s* rahc(tacrts diov
/* noisrev retniop ;s fo dne eht ot t etanetacnoc :tacrts */
.s fo dne eht ot t gnirts eht seipoc )t ,s(tacrts
:2 retpahC ni dewohs ew taht tacrts noitcnuf eht fo noisrev retniop a etirW
)R&K 701 egap( :3-5 esicrexE
501
;1 nruter
)'0¥' =! s* && tb==t && t* == s*( fi
:ytpme ton era sgnirts eht dna
,gnirts eht fo gninnigeb eht ta kcab si t retniop eht ,s ni sretcarahc eht hctam t
ni sretcarahc eht nehw )s gnirts fo dne ta srucco t gnirts eht( 1 snruter dnerts
.sgnirts eht fo gninnigeb eht drawot evom dna t ni retcarahc tsal eht htiw
s ni retcarahc tsal eht gnirapmoc trats ew s gnirts fo dne eht ta srucco t gnirts
eht fi enimreted oT .tacrts ni did ew sa gnirts fo hcae fo dne eht dnif ew neht
dna tb dna sb sretniop eht ni sgnirts eht fo sesserdda gninnigeb eht evas eW
}
;0 nruter esle
;1 nruter
)'0¥' =! s* && tb == t && t* == s*( fi
/* rts a fo gninnigeb eht ta */ ;kaerb
)sb == s || tb == t(fi
)--t,--s ;t* == s* ;( rof
/* t gnirts eht fo dne */ )++t ;t* ;( rof
/* s gnirts eht fo dne */ ;
)++s ;s* ; ( rof
;t = tb* rahc
/* s rts fo gninnigeb rebmemer*/ ;s = sb* rahc
{
)t* rahc ,s* rahc(dnerts tni
/* s fo dne eht ta srucco t gnirts fi 1 nruter :dnerts */
.esiwrehto orez dna ,s gnirts eht fo
dne eht ta srucco t gnirts eht fi 1 snruter hcihw ,)t ,s(dnerts noitcnuf eht etirW
)R&K 701 egap( :4-5 esicrexE
601
)0 =< n-- || '0¥' == s*( fi
:sretcarahc n erapmoc yllufsseccus ew ro sgnirts eht fo dne eht dnif ew nehw
nosirapmoc eht etanimret ew emit sihT .R&K 601 egap no pmcrts ot ralimis si
noitcnuf ehT .s fo sretcarahc htiw t fo sretcarahc n tsom ta serapmoc pmcnrts
.s gnirts eht fo dne eht ta
gnitrats t gnirts eht morf sretcarahc n tsom ta ypoc ot ypcnrts sekovni tacnrts
.'0¥' htiw s gnirts eht dap ew
sretcarahc n naht ssel sah t fI .s ot t morf sretcarahc n tsom ta seipoc ypcnrts
.gnirts tegrat eht fo
gninnigeb eht ot retniop a nruter snoitcnuf eseht fo noisrev yrarbil ehT .R&K
501 egap no ypcrts sa diov epyt eht evah tacnrts dna ypcnrts snoitcnuf ehT
}
;t* - s* nruter
;0 nruter
)0 =< n-- || '0¥' == s*( fi
)++t ,++s ;t* == s* ; ( rof
{
)n tni ,t* rahc ,s* rahc(pmcnrts tni
/* s htiw t fo sretcarahc n tsom ta erapmoc :pmcnrts */
}
;)n ,t ,)s(nelrts + s(ypcnrts
;)s* rahc(nelrts tni
;)n tni ,t* rahc ,s* rahc(ypcnrts diov
{
)n tni ,t* rahc ,s* rahc(tacnrts diov
/* s fo dne eht ot t fo sretcarahc n etanetacnoc :tacnrts */
}
;'0¥' = ++s*
)0 > --n( elihw
;++t* = ++s*
)0 > --n && t*( elihw
{
)n tni ,t* rahc ,s* rahc(ypcnrts diov
/* s ot t morf sretcarahc n ypoc :ypcrts */
.)R&K 942 egap( B xidneppA ni era
snoitpircsed lluF .s ot tfo sretcarahc n tsom ta seipoc )n,t ,s(ypcnrts ,elpmaxe
roF .sgnirts tnemugra rieht fo sretcarahc n tsrif eht tsom ta no etarepo hcihw
,pmcnrts dna ,tacnrts ,ypcnrts snoitcnuf yrarbil eht fo snoisrev eht etirW
)R&K 701 egap( :5-5 esicrexE
701
.t-s si enil eht fo htgnel eht os enil eht ni retcarahc tsrif eht ot stniop
llits t .)'0¥'(retcarahc gnitanimret eht ot stniop s ,enil a sdaer enilteg retfA
;s = t* rahc
:t retniop eht ni sserdda taht evas
ew dna yarra eht fo gninnigeb eht ot stniop s ,noitcnuf eht fo gninnigeb eht tA
;c = ++s*
ot tnelaviuqe si
;c = ]++i[s
:tnemetats ehT
.yarra eht
nwod levart ot s retniop eht tnemercni ew dna yarra eht ni tnemele na ot refer
ot ]i[s fo daetsni s* esu eW .sretcarahc fo yarra na ot retniop a seviecer enilteg
}
;t - s nruter
;'0¥' = s*
;c = ++s*
)'n¥' == c( fi
;c = ++s*
)'n¥' =! c && FOE =! ))(rahcteg = c( && 0 > mil--( elihw
;s = t* rahc
;c tni
{
)mil tni ,s* rahc(enilteg tni
/* htgnel nruter ,s otni enil a daer :enilteg */
>h.oidts< edulcni#
.)4retpahC( poteg dna xednirts dna ,)3 retpahC( esrever
,)4 dna .3 ,2 sretpahC( stnairav rieht dna ,aoti ,iota ,)4 dna 1 sretpahC(
enilteg edulcni seitilibissop dooG .gnixedni yarra fo daetsni sretniop
htiw sesicrexe dna sretpahc reilrae morf smargorp etairporppa etirweR
)R&K 701 egap( :6-5 esicrexE
;0 nruter
801
ot tnelaviuqe si
;'0' + 01 % n = ++s*
tnemetats ehT
;s = t* rahc
:s
gnirts eht ni tnemele tsrif eht ot tniop ot dezilaitini si t retniop retcarahc ehT
}
;)t(esrever
;'0¥' = s*
;'-' = ++s*
)0 < ngis( fi
/* ti eteled */ ;)0 > )01 =/ n(( elihw }
/* tigid txen teg */ ;'0' + 01 % n = ++s*
/* redro esrever ni stigid etareneg */ { od
/* evitisop n ekam */ ;n- = n
/* ngis drocer */ )0 < )n = ngis(( fi
/* s ot retniop evas */ ;s = t* rahc
;ngis tni
{
)s* rahc ,n tni (aoti diov
/* noisrev retniop ;s ni sretcarahc ot n trevnoc :aoti */
;)* rahc(esrever diov
.++s* ot tnelaviuqe si ]++i[s .s* ot tnelaviuqe si ]i[s
}
;n * ngis nruter
;'0' - s* + n * 01 = n
)++s ;)s*(tigidsi ;0 = n( rof
;++s
/* ngis piks */ )'-' == s* || '+' == s*( fi
;1 : 1- ? )'-' == s*( = ngis
/* ecaps etihw piks */ ; )++s ;)s*(ecapssi ; ( rof
;ngis ,n tni
{
)s* rahc(iota tni
/* noisrev retniop ;regetni ot s trevnoc :iota */
>h.epytc< edulcni#
901
}
;b - s nruter
)'0¥' == r* && t > r( fi
;)++r ,++p ;r* == p* && '0¥' =! r* ;t = r ,s = p( rof
{ )++s ;'0¥' =! s* ;( rof
;r* ,p* rahc
/* s gnirts fo gninnigeb */ ;s = b* rahc
{
)t* rahc ,s* rahc(xednirts tni
/* enon fi 1- ,s ni t fo xedni nruter :xednirts */
.)--j( j xedni eht gnitnemerced sa tceffe
emas eht sah --t dna )++i( i xedni eht gnitnemercni sa tceffe emas eht sah ++s
j < i
tset eht ot tnelaviuqe si
t < s
pool rof eht ni tset ehT .]j[s ot tnelaviuqe si t* dna ]i[s ot tnelaviuqe si s*
)1 - )s(nelrts( + s = t
:)'0¥' gnitanimret eht gnidulcxe( gnirts eht fo retcarahc tsal eht ot tniop ot
t retniop retcarahc eht tes ew dna gnirts eht fo retcarahc tsrif eht ot stniop s
}
}
;c = t*
;t* = s*
;s* = c
{ )--t,++s ;t < s ;)1 - )s(nelrts( + s = t( rof
;t* rahc
;c tni
{
)s* rahc(esrever diov
/* ecalp ni s gnirts esrever :esrever */
>h.gnirts< edulcni#
.s gnirts eht fo gninnigeb eht ot retniop a htiw esrever ekovni eW
;'0' + 01 % n = ]++i[s
011
;)tni(hctegnu diov
;)diov(hcteg tni
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
>h.epytc< edulcni#
>h.oidts< edulcni#
.++s* ot tnelaviuqe si ]++i[s
}
;rewop / lav * ngis nruter
}
;0.01 =* rewop
;)'0' - s*( + lav * 0.01 = lav
{ )++s ;)s*(tigidsi ;0.1 = rewop( rof
;++s
)’.‘ == s*( fi
;)’0‘ – s*( + lav * 0.01 = lav
)++s ;)s*(tigidsi ;0.0 = lav( rof
;++s
/* ngis piks */ )'-' == s* || '+' == s*( fi
;1 : 1- ? )'-' == s*( = ngis
/* ecaps etihw piks */ ; )++s ;)s*(ecapssi ; ( rof
;ngis tni
;rewop ,lav elbuod
{
)s* rahc(fota elbuod
/* noisrev retniop ;elbuod ot s gnirts trevnoc :fota */
>h.epytc< edulcni#
;b - s nruter
:s gnirts eht ni t fo xedni eht snruter xednirts dna stsixe hctam a
)'0¥' == r* && t > r( fi
eurt si tnemetats fi eht nehW
.0 = k ot tnelaviuqe si t = r .i = j ot tnelaviuqe si s = p
.)]0[s(s gnirts eht fo tnemele tsrif eht ot stniop syawla taht retniop retcarahc
a si b .r* yb decalper si ]k[t dna ,p* yb decalper si ]j[s ,s* yb decalper si ]i[s
}
;1- nruter
111
.retniop eht gnignahc
tuohtiw yarra eht fo noitisop dnoces eht ta rekram gnirts fo dne na ecalp ot
;'0¥' = )1 + s(*
esu ew
;'0¥' = ]1[s
fo daets nI .drawrofthgiarts
era segnahc ehT .stnemele yarra ot secnerefer ecalper ot sretniop esu eW
}
;REBMUN nruter
;)c(hctegnu
)FOE =! c( fi
;'0¥' = s*
;)))(hcteg = c = s++*(tigidsi( elihw
/* trap noitcarf tcelloc */ )'.' == c( fi
;
)))(hcteg = c = s++*(tigidsi( elihw
/* regetni tcelloc */ ))c(tigidsi( fi
/* rebmun a ton */ ;c nruter
)'-' =! c && '.' =! c && )c(tigidsi!( fi
;'0¥' = )1 + s(*
;
)'t¥' == c || ' ' == ))(hcteg = c = s*(( elihw
;c tni
{
)s* rahc(poteg tni
/* dnarepo ciremun ro rotarepo txen teg :poteg */
211
tnemetats
ehT .p noitisop ta gnitrats rotsenil ni enil serots senildaer noisrev siht nI
)LLUN == ))nel(colla = p( || senilxam => seniln( fi
:)R&K 101 egap( colla enituor eht sesu senildaer enituor lanigiro ehT
;rotsenil = p* rahc
:rotsenil fo
tnemele tsrif eht ot tniop ot dezilaitini si p retniop retcarahc ehT .senil eht rof
txet eht serots senildaer erehw rotsenil yarra eht seilppus enituor niam ehT
}
;seniln nruter
}
;nel =+ p
;p = ]++seniln[rtpenil
;)enil ,p(ypcrts
/* enilwen eteled */ ;'0¥' = ]1-nel[enil
{ esle
;1- nruter
)potsenil > nel + p || senilxam => seniln( fi
)0 > ))NELXAM ,enil(enilteg = nel(( elihw
;0 = seniln
;ROTSXAM + rotsenil = potsenil* rahc
;]NELXAM[enil ,rotsenil = p* rahc
;seniln ,nel tni
{
)senilxam tni ,rotsenil* rahc ,][rtpenil* rahc(senildaer tni
/* senil tupni daer :senildaer */
;)tni ,* rahc(enilteg tni
/* ecaps egarots elbaliava fo ezis */ 0005 ROTSXAM enifed#
/* enil tupni yna fo htgnel xam */ 0001 NELXAM enifed#
>h.gnirts< edulcni#
>h.oidts< edulcni#
?margorp eht si retsaf hcum woH .egarots niatniam ot colla gnillac
naht rehtar ,niam yb deilppus yarra na ni senil erots ot senildaer etirweR
)R&K 011 egap( :7-5 esicrexE
311
.eno lanigiro eht naht retsaf ylthgils si senildaer fo noisrev sihT
.rotsenil ni ecaps elbaliava si ereht taht serusne
)potsenil > nel + p || senilxam => seniln( fi
411
ssel si yad fI .1- snruter raey_fo_yad ,evlewt naht retaerg ro eno naht ssel
si htnom fI .yad dna htnom ni seulav elbanosaer rof kcehc ew raey_fo_yad nI
}
}
;yadraey = yadp*
;i = htnomp*
{ esle }
;1- = yadp*
;1- = htnomp*
{ )]21[]pael[batyad > yadraey && 21 > i( fi
;]i[]pael[batyad =- yadraey
)++i ;]i[]pael[batyad > yadraey ;1 = i( rof
0 == 004 % raey || 0 =! 001 % raey && 0 == 4 % raey = pael
}
;nruter
;1- = yadp*
;1- = htnomp*
{ )1 < raey( fi
;pael ,i tni
{
)yadp* tni ,htnomp* tni ,yadraey tni ,raey tni(yad_htnom diov
/* raey fo yad morf yad ,htnom tes :yad_htnom */
}
;yad nruter
;]i[]pael[batyad =+ yad
)++i ;htnom < i ;1 = i( rof
;1- nruter
)]htnom[]pael[batyad > yad || 1 < yad( fi
;1- nruter
)21 > htnom || 1 < htnom( fi
;0 == 004 % raey || 0 =! 001 % raey && 0 == 4 % raey = pael
;pael ,i tni
{
)yad tni ,htnom tni ,raey tni(raey_fo_yad tni
/* yad & htnom morf raey fo yad tes :raey_fo_yad */
;}
}13 ,03 ,13 ,03 ,13 ,13 ,03 ,13 ,03 ,13 ,92 ,13 ,0{
,}13 ,03 ,13 ,03 ,13 ,13 ,03 ,13 ,03 ,13 ,82 ,13 ,0{
{ = ]31[]2[batyad rahc citats
.tcefed siht ydemeR .yad_htnom ro raey_fo_yad ni gnikcehc rorre on si erehT
)R&K 211 egap( :8-5 esicrexE
511
.seulav
tcerroc deviecer yad_htnom noitcnuf eht esiwrehtO .1- ot yad dna htnom htob
tes ew dna eulav tcerrocni na htiw detrats yadraey ni eulav eht dna 31 htnom
htiw setanimret pool eht fI .21 deecxe ton seod )i xedni( htnom eht taht kcehc
ew elihw yadraey tnemerced ot deecorp ew nehT .osla raey_fo_yad ni kcehc fo
dnik siht dda ot tnaw yam uoY .raey evitagen rof kcehc tsrif ew yad_htnom nI
.1- snruter
noitcnuf eht ,htnom eht rof syad fo rebmun eht sdeecxe yad ro eno naht
611
:pael fo eulav eht no gnidneped batyad fo wor dnoces ro tsrif eht ot stniop p
}
;yadraey = yadp*
;)pael + batyad(* - p = htnomp*
;p* =- yadraey
)p++* > yadraey( elihw
;]pael[batyad = p
;0 == 004 % raey || 0 =! 001 % raey && 0 == 4 % raey = pael
}
;nruter
;1- = yadp*
;1- = htnomp*
{ )1 < raey( fi
;p* rahc
;pael ,i tni
{
)yadp* tni ,htnomp* tni ,yadraey tni ,raey tni(yad_htnom diov
/* raey fo yad morf yad ,htnom tes :yad_htnom */
}
;yad nruter
;p++* =+ yad
)htnom--( elihw
;]pael[batyad = p
;1- nruter
)]htnom[]pael[batyad > yad || 1 < yad( fi
;1- nruter
)21 > htnom || 1 < htnom( fi
;0 == 004 % raey || 0 =! 001 % raey && 0 == 4 % raey = pael
;p* rahc
;pael ,i tni
{
)yad tni ,htnom tni ,raey tni(raey_fo_yad tni
/* yad & htnom morf raey fo yad tes :raey_fo_yad */
;}
}13 ,03 ,13 ,03 ,13 ,13 ,03 ,13 ,03 ,13 ,92 ,13 ,0{
,}13 ,03 ,13 ,03 ,13 ,13 ,03 ,13 ,03 ,13 ,82 ,13 ,0{
{ = ]31[]2[batyad rahc citats
.gnixedni
fo daetsni sretniop htiw yad_htnom dna raey_fo_yad senituor eht etirweR
)R&K 411 egap( :9-5 esicrexE
711
.enituor yad_htnom desiver eht ni
;p* =- yadraey
)p++* > yadraey( elihw
;]pael[batyad = p
stnemetats eht ot tnelaviuqe si
;]i[]pael[batyad =- yadraey
)++i ;]i[]pael[batyad > yadraey ;1 = i( rof
enituor yad_htnom lanigiro eht ni pool rof ehT
.enituor raey_fo_yad desiver eht ni
;p++* =+ yad
)htnom--( elihw
pool elihw eht ot tnelaviuqe si
;]i[]pael[batyad =+ yad
)++i ;htnom < i ;1 = i( rof
enituor raey_fo_yad lanigiro eht ni pool rof ehT
;]pael[batyad = p
811
)0.0 =! 2po( fi
;)(pop = 2po
:'/' esac
;kaerb
;)2po - )(pop(hsup
;)(pop = 2po
:'-' esac
;kaerb
;))(pop * )(pop(hsup
:'*' esac
;kaerb
;))(pop + )(pop(hsup
:'+' esac
;kaerb
;))s(fota(hsup
:REBMUN esac
{ ))s(poteg( hctiws
/* tnemugra na hsup */ ;)vgra++*(stegnu
/* tnemugra fo dne hsup */ ;)" "(stegnu
{ )0> cgra--( elihw
;2po elbuod
;]POXAM[s rahc
{
) ][vgra* rahc ,cgra tni(niam
/* enil dnammoc sesu ;rotaluclac hsiloP esrever */
;)diov(pop elbuod
;)elbuod(hsup diov
;)][ rahc(poteg tni
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
/* rotarepo ro dnarepo fo ezis xam */ 001 POXAM enifed#
/* )(fota rof */ >h.htam< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.)4+3( x 2 setaulave
* + 4 3 2 rpxe
,elpmaxe
roF .tnemugra etarapes a si dnarepo ro rotarepo hcae erehw ,enil dnammoc
eht morf noisserpxe hsiloP esrever a setaulave hcihw ,rpxe margorp eht etirW
)R&K 811 egap( :01-5 esicrexE
911
.setanimret tsil tnemugra eht nehw tluser
siht tnirp ew dna kcats eht fo pot no si noisserpxe dilav a rof tluser ehT
.sdne margorp eht dna eslaf semoceb
)0 > cgra--( elihw
pool elihw ehT
.1 ot tes si cgra ,stnemugra eht ni gnidaer elihw rucco dluohs rorre na fI
.dnarepo ciremun ro rotarepo txen eht steg dna sretcarahc daer
ot hcteg sekovni poteg .degnahcnu poteg esu nac ew yaw sihT .reffub tupni eht
otno tnemugra na dna rekram tnemugra fo dne na hsup ot stegnu esu eW
.)R&K 77 egap( pop dna hsup senituor eht sesu
tI .R&K 67 egap no rotaluclac hsiloP evreser eht no desab si noitulos sihT
}
;0 nruter
}
;))(pop ,"n¥g8.%t¥"(ftnirp
}
;kaerb
;1 = cgra
;)s ,"n¥s% dnammoc nwonknu :rorre"(ftnirp
:tluafed
;kaerb
;)"n¥roisivid orez:rorre"(ftnirp
esle
;))2po ,)(pop(domf(hsup
)0.0 =! 2po( fi
;)(pop = 2po
:'%' esac
;kaerb
;)"n¥rosivid orez :rorre"(ftnirp
esle
;)2po / )(pop(hsup
021
;)' '(rahctup
)--bn ;0 > bn ; ( rof
/* )s(knalb tuptuo */ esle
;0 = bn
/* )s(knalb eht tegrof */ )'t¥' == c( fi
/* )s(sbat tuptuo */ ;)'t¥'(rahctup
)--tn ;0 > tn ; ( rof
{ esle }
}
/* bat erom eno */ ;tn++
/* sknalb fo # teser */ ;0 = bn
{ esle
/* sknalb fo # tnemercni */ ;bn++
)ON == )bat ,sop(sopbat( fi
{ )' ' == c( fi
)++sop ;FOE =! ))(rahcteg = c( ;1 = sop( rof
/* yrassecen sbat fo # */ ;0 = tn tni
/* yrassecen sknalb fo # */ ;0 = bn tni
;sop ,c tni
{
)bat* rahc(batne diov
/* sknalb dna sbat htiw sknalb fo sgnirts ecalper :batne */
}
;0 nruter
/* bat /w sknalb ecalper */ ;)bat(batne
/* spots bat ezilaitini */ ;)bat ,vgra ,cgra(battes
;]1+ENILXAM[bat rahc
{
)][vgra* rahc ,cgra tni(niam
/* sbat htiw sknalb fo sgnirts ecalper */
;)bat* rahc ,sop tni(sopbat tni
;)bat* rahc(batne diov
;)bat* rahc ,][vgra* rahc ,cgra tni(battes diov
0 ON enifed#
1 SEY enifed#
/* ezis tnemercni bat tluafed */ 8 CNIBAT enifed#
/* ezis enil mumixam */ 001 ENILXAM enifed#
>h.oidts< edulcni#
.stnemugra on era
ereht fi sgnittes bat tluafed eht esU .stnemugra sa spots bat fo t sil a tpecca
ot )1 retpahC ni sesicrexe sa nettirw( bated dna batne smargorp eht yfidoM
)R&K 811 egap( :11-5 esicrexE
121
esle
;SEY nruter
)ENILXAM > sop( fi
{
)bat* rahc ,sop tni(sopbat tni
/* pots bat a ta si sop fi enimreted :sopbat */ 1 SEY enifed#
/* ezis enil mumixam */ 001 ENILXAM enifed#
:c.sopbat elif ecruos ehT
}
}
}
;SEY = ]sop[bat
)ENILXAM =< sop && 0 > sop( fi
;)vgra++*(iota = sop
/* tsil tnemugra hguorht klaw */ { )0 > cgra--( elihw
/* spots bat lla ffo nrut */ ;ON = ]i[bat
)++i ;ENILXAM =< i ;1 = i( rof
{ esle
;ON = ]i[bat esle
;SEY = ]i[bat
)0 == CNIBAT % i( fi
)++i ;ENILXAM =< i ;1 = i( rof
/* spots bat tluafed */ )1 =< cgra( fi
;sop ,i tni
{
)bat* rahc ,][vgra* rahc ,cgra tni(battes diov
/* bat yrarra ni spots bat tes :battes */
0 ON enifed#
1 SEY enifed#
/* ezis tnemercni bat tluafed */ 8 CNIBAT enifed#
/* ezis enil mumixam */ 001 ENILXAM enifed#
>h.bildts< edulcni#
:c.battes elif ecruos ehT
}
}
;sop++
)SEY =! )bat ,sop(sopbat( elihw
)'t¥' == c( fi esle
;0 = sop
)'n¥' == c( fi
;)c(rahctup
221
;1=sop
;)c(rahctup
/* retcarahc enilwen */ { )'n¥' == c( fi esle }
;)SEY =! )bat ,++sop(sopbat( elihw
;)' '(rahctup
od
/* retcarahc bat */ { )'t¥' == c( fi
)FOE =! ))(rahcteg = c(( elihw
;1 = sop ,c tni
{
)bat* rahc(batted diov
/* knalb htiw bat ecalper :batted */
}
;0 nruter
/* sknalb /w bat ecalper */ ;)bat(battes
/* spots bat ezilaitini */ ;)bat ,vgra ,cgra(battes
;]1 + ENILXAM[bat rahc
{
)][vgra* rahc ,cgra tni(niam
/* sknalb htiw sbat ecalper */
;)bat* rahc ,sop tni(sopbat tni
;)bat* rahc(batted diov
;)bat* rahc ,][vgra* rahc ,cgra tni(battes diov
0 ON enifed#
1 SEY enifed#
/* ezis tnemercni bat tluafed */ 8 CNIBAT enifed#
/* ezis enil mumixam */ 001 ENILXAM enifed#
>h.oidts< edulcni#
.]sop[bat snruter ti esiwrehto ,ENILXAM sdeecxe sop
fi SEY snruter tI .pots bat a si noitisop eht fi senimreted sopbat enituor ehT
.12-1rexE ot ralimis si batne enituor ehT
.meht seificeps resu eht sa spots bat eht tes ew neht ,stnemugra era ereht fI
.noitisop CNIBAT yreve pots bat a tup ew neht ,)1 slauqe cgra(
stnemugra on era ereht fI .battes enituor eht ni dezilaitini era spots bat ehT
.ON slauqe ]i[bat esiwrehto
;SEY slauqe ]i[bat tnemele gnidnopserroc eht neht ,pots bat a si noitisop
eht fI .)1 slauqe sop(enil eht nihtiw noitisop tsrif eht ot sdnopserroc ]1[bat
,.e.i ,enil eht nihtiw noitisop a ot sdnopserroc bat yarra eht ni tnemele hcaE
}
;]sop[bat nruter
321
.02-1 esicrexE ot ralimis si batted enituor ehT
.esicrexe
siht fo trap tsrif eht ni sa emas eht era battes dna sopbat senituor ehT
.)6791 ,yelseW-nosiddA( slooT erawtfoS
,regualP & nahginreK ni margorp bated eht si noitulos siht rof krowemarf ehT
}
}
;sop++
;)c(rahctup
/* retcarahc rehto lla */ { esle }
421
;ON = ]i[bat
esle
;SEY = ]i[bat
)0 == CNIBAT % i( fi
)++i ;ENILXAM =< i ;1 = i( rof
/* spots bat tluafed */ )1 =< cgra( fi
;sop ,cni ,i tni
{
)bat* rahc ,][vgra* rahc ,cgra tni(battese diov
/* bat yarra ni spots bat tes :battese */
0 ON enifed#
1 SEY enifed#
/* ezis tnemercni bat tluafed */ 8 CNIBAT enifed#
/* ezis enil mumixam */ 001 ENILXAM enifed#
>h.bildts< edulcni#
:c.battese elif ecruos ehT
}
;0 nruter
/* sknalb /w bat ecalper */ ;)bat(batne
/* spots bat ezialitini */ ;)bat ,vgra ,cgra(battese
;]1 + ENILXAM[bat rahc
{
)][vgra* rahc ,cgra tni(niam
/* sbat htiw sknalb fo sgnirts ecalper */
;)bat* rahc(batne diov
;)bat* rahc ,][vgra* rahc ,cgra tni(battese diov
0 ON enifed#
1 SEY enifed#
/* ezis tnemercni bat tluafed */ 8 CNIBAT enifed#
/* ezis enil mumixam */ 001 ENILXAM enifed#
>h.oidts< edulcni#
.roivaheb tluafed )resu eht rof(
tneinevnoc esoohC .m nmuloc ta gnitrats ,snmuloc n yreve spots bat naem ot
n+ m- batne
dnahtrohs eht tpecca ot bated dna batne dnetxE
)R&K 811 egap( :21-5 esicrexE
521
/* sknalb htiw sbat ecalper */
;)bat* rahc(bated diov
;)bat* rahc ,][vgra* rahc ,cgra tni(battese diov
0 ON enifed#
1 SEY enifed#
/* ezis tnemercni bat tluafed */ 8 CNIBAT enifed#
/* ezis enil mumixam */ 001 ENILXAM enifed#
>h.oidts< edulcni#
.noitisop cni yreve ta rucco dna sop ta nigeb spots bat eht ,eroferehT
.ezis tnemercni eht ot lauqe cni tes dna pots bat tsrif eht ot lauqe sop tes
;)]1[)vgra++*(&(iota = cni
;)]1[)vgra++*(&(iota = sop
stenemetats ehT .n+ m- noitaton dnahtrohs eht stpecca battese
.)battes
dednetxe( battese yb decalper saw battes enituor eht taht si noitacifidom
ylno ehT .11-5 esicrexE ni margorp batne ot ralimis si noitulos sihT
.)6791 ,yelseW-nosiddA( slooT erawtfoS
,regualP & nahginreK ni margorp batne eht si noitulos siht rof krowemarf ehT
}
}
}
;SEY = ]sop[bat
)ENILXAM =< sop &&
)0 > sop( fi
;)vgra++*(iota = sop
/* tsil tnemugra hguorht klaw */ { )0 > cgra--( elihw
/* spots bat lla ffo nrut */ ;ON = ]i[bat
)++i ;ENILXAM =< i ;1 = i( rof
/* spots bat dedivorp resu */ { esle }
}
;cni =+ sop
;SEY = ]i[bat
{ esle
;ON = ]i[bat
)sop =! i( fi
)++i ;ENILXAM =< i ;1 = i( rof
;)]1[)vgra++*(&(iota = cni
;)]1[)vgra++*(&(iota = sop
{ )'+' == ]2[vgra* && '-' == ]1[vgra*
/* egnar dedivorp resu */ && 3 == cgra( fi esle
621
.esicrexe siht fo trap tsrif eht morf battese enituor
eht sesu dna 11-5 esicrexE ni margorp bated eht ot ralimis si noitulos sihT
.)6791 ,yelseW-nosiddA( slooT erawtfoS
,regualP & nahginreK ni margorp bated eht si noitulos siht rof krowemarf ehT
}
;0 nruter
/* sknalb /w bat ecalper */ ;)bat(bated
/* spots bat ezilaitini */ ;)bat ,vgra ,cgra(battese
;]1 + ENILXAM[bat rahc
{
)][vgra* rahc ,cgra tni(niam
721
;ENILXAM * SENIL + fub = dnefub
;)"reffub etacolla tonnac :liat"(rorre
)LLUN == ))ENILXAM * SENIL(collam = fub = p(( fi
;LLUN = ]i[rtpenil
)++i ;SENIL < i ;0 = i( rof
;SENIL = n
/* n fo eulav elbanosaernu */ )SENIL > n || 1 < n( fi
;)"]n-[ liat :egasu"(rorre
esle
;)1 + ]0[vgra(iota = n
)'-' == ]0[)vgra++*( && 2 == cgra( fi esle
/* senil fo # tluafed esu */ ;SENILFED = n
/* tneserp tnemugra on */ )1 == cgra( fi
;seniln ,n ,nel ,tsal ,i ,tsrif tni
/* daer ot senil ot sretniop */ ;]SENIL[rtpenil* rahc
/* enil tupni tnerruc */ ;]NELXAM[enil rahc
/* reffub eht fo dne */ ;dnefub* rahc
/* reffub egral ot retniop */ ;fub* rahc
;p* rahc
{
)][vgra* rahc ,cgra tni(niam
/* tupni eht fo senil n tsal tnirp */
;)tni ,* rahc(enilteg tni
;)* rahc(rorre diov
/* enil tupni na fo htgnel xam */ 001 NELXAM enifed#
/* tnirp ot senil fo # xam */ 001 SENIL enifed#
/* tnirp ot senil fo # tluafed */ 01 SENILFED enifed#
>h.gnirts< edulcni#
>h.bildts< edulcni#
>h.oidts< edulcni#
.ezis dexif fo yarra lanoisnemid-owt a ni ton ,6.5 noitceS fo margorp
gnitros eht ni sa derots eb dluohs senil ;egarots elbaliava fo esu tseb eht
sekam ti taht os margorp eht etirW .n fo eulav eht ro tupni eht elbanosaernu
woh rettam on yllanoitar evaheb dluohs margorp ehT .senil n tsal eht stnirp
n– liat
taht os ,tnemugra lanoitpo na yb degnahc eb nac ti tub ,yas su tel ,01 si
n .tluafed yB .tupni sti fo senil n tsal eht stnirp hcihw .liat margorp eht etirW
)R&K 811 egap( :31-5 esicrexE
821
.enil tnerruc eht ypoc ot tfel moor
hguone ton si ereht nehw reffub eht fo gninnigeb eht ot p retniop eht steser
;fub = p
)dnefub => 1 + nel + p( fi
tnemetats ehT
.reffub detacolla eht ni ecaps sesu margorp eht daer enil
hcae roF .tupni sti fo dne eht sdnif )61-1rexe(enilteg litnu emit a ta enil a steg
)0 > ))NELXAM ,enil(enilteg = nel(( elihw
pool ehT
.2 naht retaerg eb ot cgra rof rorre na si tI .enil dnammoc
eht morf deniatbo si n rof eulav eht ,2 si cgra nehW .SENILFED eulav tluafed
eht sah n ,1 si cgra nehW .tupni sti fo senil n tsal eht stnirp margorp ehT
}
;)1(tixe
;)s ,"n¥s%"(ftnirp
{
)s* rahc(rorre diov
/* tixe dna egassem rorre tnirp : rorre */
}
;0 nruter
;)]i[rtpenil ,"s%"(ftnirp
)SENIL % )1 + i( = i ;0 > --n ;tsrif = i( rof
;SENIL =+ tsrif
/* tsil eht dnuora parw did ti */ )0 < tsrif( fi
;n - tsal = tsrif
;seniln = n
/* .cer naht erom senil.qer */ )seniln > n( fi
}
;++seniln
;1 + nel =+ p
/* dnuora parw reffub ot srtp */ ;0 = tsal
)SENIL => tsal++( fi
;)enil ,]tsal[rtpenil(ypcrts
;p = ]tsal[rtpenil
/* dnuora parw reffub */ ;fub = p
)dnefub => 1 + nel + p( fi
{ )0 > ))NELXAM ,enil(enilteg = nel(( elihw
/* daer senil fo rebmun */ ;0 = seniln
/* daer enil tsal fo xedni */ ;0 = tsal
921
.noitidnoc rorre na gnitacidni 1 snruter tixe .srucco rorre na nehw margorp
eht setanimret )R&K 361 egap( tixe noitcnuf yrarbil dradnats ehT
SENIL % )1 + i( = i
:1-SENIL dna
0 eulav eht neewteb i sniatniam rotarepo )redniamer ( suludom ehT .dnuora
parw yam ti ,stnemele n rof seog dna tsrif fo eulav eht htiw strats i ecniS
;)]i[rtpenil ,"s%"(ftnirp
)SENIL % )1 + i( = i ;0 > --n ;tsrif = i( rof
:senil n tsal eht stnirp neht margorp ehT
;SENIL =+ tsrif
)0 < tsrif( fi
:detsujda eb ot sah xedni gnitrats eht dna
dnuora sparw tsal xedni eht .SENIL sdeecxe senil fo rebmun latot eht fI
;seniln = n
)seniln > n( fi
:deviecer senil fo rebmun eht deecxe tonnac detseuqer senil fo rebmun eht
os ,senil n tsal eht stnirp margorp ehT .seniln si senil fo rebmun latot ehT
.desuer neht era sreffub rieht dna rtpenil
fo stnemele eht dna dnuora sparw ti SENIL ot lauqe semoceb tsal nehW
.tsal elbairav eht si yarra siht rof xedni ehT .raf os daer
senil SENIL tsal eht :sretcarahc ot tniop rtpenil yarra eht fo stnemele ehT
031
,1 - seniln ,0 ,rtpenil )**diov((trosq
)CIREMUN & noitpo( fi
{ )0 > ))SENIL ,rtpenil(senildaer = seniln(( fi
esle
;)"n¥ rn- tros :egasu"(ftnirp
)cgra( fi
}
;kaerb
;1- = cr
;1 = cgra
;)c ,"n¥c% noitpo lagelli:tros"(ftnirp
:tluafed
;kaerb
;RCED =| noitpo
/* redro gnisaerced ni tros */ :'r' esac
;kaerb
;CIREMUN =| noitpo
/* tros ciremun */ :'n' esac
{ )c( hctiws
)]0[vgra++* = c( elihw
)'-' == ]0[)vgra++*( && 0 > cgra--( elihw
;0 = cr ,c tni
/* daer senil tupni fo rebmun */ ;seniln tni
/* senil txet ot sretniop */ ;]SENIL[rtpenil* rahc
{
)][vgra* rahc ,cgra tni(niam
/* senil tupni tros */
;0 = noitpo rahc citats
;)* rahc ,* rahc(pmcmun tni
;))* diov
,* diov()pmoc*( tni ,thgir tni ,tfel tni ,][rtpenil* diov(trosq diov
;)rced tni ,seniln tni ,][rtpenil* rahc(seniletirw diov
;)seniln tni ,][rtpenil* rahc(senildaer tni
/* detros eb ot senil fo # xam */ 001 SENIL enifed#
/* redro gnisaerced ni tros */ 2 RCED enifed#
/* tros ciremun */ 1 CIREMUN enifed#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.n- htiw skrow r - taht erus eB .redro )gnisaerced(
esrever ni gnitros setacidni hcihw ,galf r- a eldnah ot margorp tros eht yfidoM
)R&K 121 egap( :41-5 esicrexE
131
1 = gnihtyna RO 1
ecniS .yranib ni 01000000 ot tnelaviuqe si 2 rebmun lamiced ehT
;2 | noitpo = noitpo
ot tnelaviuqe si
;RCED =| noitpo
tnemetats ehT .noitpo elbairav eht ni tib etairporppa eht
stes )|(rotarepo RO evisulcni esiwtib eht neht ,tneserp noitpo na si ereht fI
)r-( redro gnisaerced ni tros 1 =
redro gnisaercni ni tros 0 = tib ts1
)n-( tros ciremun 1 =
tros gnirts retcarahc 0 = tib ht0
.detseuqer era
snoitpo hcihw enimreted noitpo elbairav retcarahc citats eht fo stib ehT
}
;)]i[rtpenil ,"n¥s%"(ftnirp
)++i ;seniln < i ;0 = i( rof
/* redro gnisaercni ni tnirp */ esle
;)]i[rtpenil ,"n¥s%"(ftnirp
)--i ;0 => i ;1 - seniln = i( rof
/* redro gnisaerced ni tnirp */ )rced( fi
;i tni
{
)rced tni ,seniln tni ,][rtpenil* rahc(seniletirw diov
/* senil tuptuo etirw :seniletirw */
}
;cr nruter
}
;1- = cr
;)"n¥tros ot gib oot tupni"(ftnirp
{ esle }
;)RCED & bnoitpo ,seniln ,rtpenil(seniletirw
;)pmcrts ))*diov,*diov()*( tni(
,1 - seniln ,0 ,rtpenil )**diov((trosq
esle
;)pmcmun ))*diov,*diov()*( tni(
231
.)R&K 911 egap( margorp tros eht
ni desu esoht era senildaer dna,trosq ,paws ,pmcmun ,pmcrts senituor ehT
.redro gnisaercni ro gnisaerced ni detnirp eb ot si tsil detros
eht rehtehw senimreted hcihw ,RCED & noitpo noisserpxe eht fo tluser eht si
rced elbairav ehT .rced ,tnemugra driht a tpecca ot deifidom saw seniletirw
.detseuqer ton si noitpo r- eht fi eslaf dna detseuqer si noitpo r- eht fi eurt si
RCED & noitpo
noisserpxe ehT
.rotarepo )&( DNA esiwtib eht esu ew tes si noitpo na fi enimreted oT
.)tfel ot thgir morf ....3,2,1,0 derebmun era stib ehT(.1
ot noitpo elbairav retcarahc eht ni tib ts1 eht stes tnemetats C evoba ehT
331
)cgra( fi
}
;kaerb
;1- = cr
;1 = cgra
;)c ,"n¥c% noitpo lagelli:tros"(ftnirp
:tluafed
;kaerb
;RCED =| noitpo
/* redro gnisaerced ni tros */ :'r' esac
;kaerb
;CIREMUN =| noitpo
/* tros ciremun */ :'n' esac
;kaerb
;DLOF =| noitpo
/* esac rewol dna reppu dlof */ :'f' esac
{ )c( hctiws
)]0[vgra++* = c( elihw
)'-' == ]0[)vgra++*(&& 0 > cgra--( elihw
;0 = cr ,c tni
/* daer senil tupni fo rebmun */ ;seniln tni
/* senil txet ot sretniop */ ;]SENIL[rtpenil* rahc
{
)][vgra* rahc ,cgra tni(niam
/* senil tupni tros */
;0 = noitpo rahc citats
;))* diov ,* diov()pmoc*( tni ,thgir tni ,tfel tni ,][v* diov(trosq diov
;)redro tni ,seniln tni ,][rtpenil* rahc(seniletirw diov
;)senilxam tni ,][rtpenil* rahc(senildaer tni
;)* rahc ,* rahc(pmcmun tni
;)* rahc ,* rahc(pmcrahc tni
/* detros eb ot senil fo # xam */ 001 SENIL enifed#
/* sesac rewol dna reppu dlof */ 4 DLOF enifed#
/* redro gnisaerced ni tros */ 2 RCED enifed#
/* tros ciremun */ 1 CIREMUN enifed#
>h.epytc< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.lauqe erapmoc A dna a ,elpmaxe rof ;gnitros gnirud edam ton era snoitcnitsid
esac taht os ,rehtegot esac rewol dna reppu dlof ot f- noitpo eht ddA
)R&K 121 egap( :51-5 esicrexE
431
.41-5 esicrexE ni
desu esoht era seniletirw dna ,senildaer ,trosq ,paws,pmcmun senituor ehT
.meht
serapmoc dna ,noitpo DLOF eht troppus ot ,esac rewol ot sretcarahc strevnoc
tI .)R&K 601 egap( pmcrts ekil sgnirts serapmoc pmcrahc noitcnuf ehT
.) tfel ot thgir morf
....,3,2,1,0 derebmun era stib eht( yranib ni 00100000 si )4 lamiced(DLOF
;DLOF =| noitpo
:1 ot lauqe
tes eb tsum noitpo ni tib dnoces eht , noitpo dlof eht detseuqer resu eht fI
)f-( gnidlof 1 =
gnidlof on 0 = tib dn2
.41-5 esicrexE si noitulos siht rof krowmarf ehT
}
;)t*(rewolot - )s*(rewolot nruter
;0 nruter
)'0¥' == s*( fi
)++t ,++s ;)t*(rewolot == )s*(rewolot ; ( rof
{
)t* rahc ,s* rahc(pmcrahc tni
/* t > s fi 0 > ,t == s fi 0 ,t < s fi 0 < nruter :pmcrahc */
}
;cr nruter
}
;1- = cr
;)"n¥tros ot gib oot tupni"(ftnirp
{ esle }
;)RCED & bnoitpo ,seniln ,rtpenil(seniletirw
;)pmcrts ))* diov ,* diov()*( tni(
,1 - seniln ,0 ,rtpenil )**diov((trosq
esle
;)pmcmun ))* diov ,* diov()*( tni(
,1 - seniln ,0 ,rtpenil )**diov((trosq
)CIREMUN & noitpo( fi
{ )0 > ))SENIL ,rtpenil(senildaer = seniln(( fi
esle
;)"n¥ rnf- tros :egasu"(ftnirp
531
;)c ,"n¥c% noitpo lagelli:tros"(ftnirp
:tluafed
;kaerb
;RCED =| noitpo
/* redro gnisaerced ni tros */ :'r' esac
;kaerb
;CIREMUN =| noitpo
/* tros ciremun */ :'n' esac
;kaerb
;DLOF =| noitpo
/* esac rewol dna reppu dlof */ :'f' esac
;kaerb
;RID =| noitpo
/* redro yrotcerid */ :'d' esac
{)c( hctiws
)]0[vgra++* = c( elihw
)'-' == ]0[)vgra++*(&& 0 > cgra--( elihw
;0 = cr ,c tni
/* daer senil tupni fo rebmun */ ;seniln tni
/* senil txet ot sretniop */ ;]SENIL[rtpenil* rahc
{
)][vgra* rahc ,cgra tni(niam
/* senil tupni tros */
;0 = noitpo rahc citats
;)redro tni ,seniln tni ,][rtpenil* rahc (seniletirw diov
;))* diov ,* diov()pmoc*( tni ,thgir tni ,tfel tni ,][v* diov(trosq diov
;)redro tni ,seniln tni ,][rtpenil* rahc(seniletirw diov
;)senilxam tni ,][rtpenil* rahc(senildaer tni
;)* rahc ,* rahc(pmcmun tni
;)* rahc ,* rahc(pmcrahc tni
/* detros eb ot senil fo # xam */ 001 SENIL enifed#
/* redro yrotcerid */ 8 RID enifed#
/* sesac rewol dna reppu dlof */ 4 DLOF enifed#
/* redro gnisaerced ni tros */ 2 RCED enifed#
/* tros ciremun */ 1 CIREMUN enifed#
>h.epytc< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
,f- htiw noitcnujnoc ni skrow ti erus ekaM .sknalb dna ,srebmun
,srettel no ylno snosirapmoc sekam hcihw ,noitpo )"redro yrotcerid"( d- eht ddA
)R&K 121 egap( :61-5 esicrexE
631
.51-5 dna 41-5 esicrexE si noitulos siht rof krowemarf ehT
}
;b - a nruter
;)b == a( elihw }
;0 nruter
)'0¥' == a && b == a( fi
;++t
;t* : )t*(rewolot ? dlof = b
;++s
;s* : )s*(rewolot ? dlof = a
}
;++t
)'0¥'=! t* && ' ' =! t* && )t*(munlasi!( elihw
;++s
)'0¥'=! s* && ' ' =! s* && )s*(munlasi!( elihw
{ )rid( fi
{ od
;0 : 1 ? )RID & noitpo( = rid tni
;0 : 1 ? )DLOF & noitpo( = dlof tni
;b ,a rahc
{
)t* rahc ,s* rahc(pmcrahc tni
/* t > s fi 0 > ,t == s fi 0 ,t < s fi 0 < nruter :pmcrahc */
}
;cr nruter
}
;1- = cr
;)"n¥tros ot gib oot tupni"(ftnirp
{ esle }
;)RCED & bnoitpo ,seniln ,rtpenil(seniletirw
;)pmcrts ))* diov,* diov()*( tni(
,1 - seniln ,0 ,rtpenil )**diov((trosq
esle
;)pmcmun ))* diov,* diov()*( tni(
,1 - seniln ,0 ,rtpenil )**diov((trosq
)CIREMUN & noitpo( fi
{ )0 > ))SENIL ,rtpenil(senildaer = seniln(( fi
esle
;)"n¥ rnf- tros :egasu"(ftnirp
)cgra( fi
}
;kaerb
;1- = cr
;1 = cgra
731
.41-5 esicrexE ni desu
esoht era seniletirw dna ,senildaer ,trosq ,paws ,pmcmun senituor ehT
.snoitcnuf
erom gnitaerc fo daetsni pmcrahc etacilpmoc ot esohc eW .pmcahc tnerruc
eht retsaf eb dluow noitcnuf laudividni hcaE .redro yrotcerid rof sretcarahc
erapmoc dluow pmcrid .51-5 esicrexE ni pmcrahc sa sretcarahc erapmoc
dna dlof dluow pmcdlof .pmcriddlof dna ,pmcrid ,pmcdlof :pmcrahc fo daetsni
snoitcnuf eerht detaerc dna hcaorppa rehtona nekat evah dluoc eW
.sretcarahc owt eht serapmoc pmcrahc enituor eht ,t ni dnuof si knalb
ro ,rebmun ,rettel a dna s ni dnuof si knalb ro ,rebmun ,rettel a nehW
.sknalb dna ,srebmun ,srettel ton era
taht sretcarahc esoht revo spiks dna t gnirts eht ni retcarahc hcae senimaxe
;++t
)'0¥' =! t* && ' ' =! t* && )t*(munlasi!( elihw
pool elihw txen ehT
.orez si )s*(munlasi
esiwrehto;oreznon si )s*(munlasi neht tigid a ro retcarahc citebahpla na si s*
fI .)9-0(tigid dna )Z-A,z-a (sretcarahc citebahpla rof stset munlasi .>h.epytc<
ni denifed si munlasi orcam ehT .sknalb dna ,srebmun ,srettel ton era
taht sretcarahc esoht revo spiks dna s gnirts eht ni retcarahc hcae senimaxe
;++s
)'0¥' =! s* && ' ' =! s* && )s*(munlasi!( elihw
pool elihw eht neht noitpo yrotcerid eht stseuqer resu eht fI
.noitpo yrotcerid dna noitpo
dlof eht htob eldnah ot deifidom saw )51-5 esicrexE( enituor pmcrahc ehT
.)tfel ot thgir morf...,3,2,1,0
derebmun era stib eht(noitaton yranib ni 00010000 si )8 lamiced( RID
;RID =| noitpo
.1 ot tes si noitpo ni tib driht eht ,noitpo yrotcerid eht stseuqer resu eht fi
)d-( redro yrotcerid 1 =
redro yrotcerid on 0 = tib dr3
831
;)"n¥ tros ot gib oot tupni"(ftnirp
{ esle
}
;)RCED & noitpo ,seniln ,rtpenil(seniletirw
;)pmcrahc))* diov ,* diov()*( tni(
,1 - seniln ,0 ,rtpenil)** diov((trosq
esle
;)pmcmun))* diov ,* diov()*( tni(
,1 - seniln ,0 ,rtpenil)** diov((trosq
)CIREBMUN & noitpo( fi
{ )0 > ))SENIL ,rtpnil(senildaer = seniln(( fi
;)vgra ,cgra(sgradaer
;0 = cr tni
/* daer senil tupni fo rebmun */ ;seniln tni
/* senil txet ot sretniop */ ;]SENIL[rtpenil* rahc
{
)][vgra* rahc ,cgra tni(niam
/* senil tupni tros */
/* 2sop erofeb tsuj gnidne */ ;0 = 2sop tni
/* 1sop htiw gninnigeb dleif */ ;0 = 1sop tni
;0 = noitpo rahc
;))* diov ,* diov()pmoc*( tni ,thgir tni ,tfel tni ,][v* diov(trosq diov
;)redro tni ,seniln tni ,][rtpenil* rahc(seniletirw diov
;)senilxam tni ,][rtpenil* rahc(senildaer tni
;)][vgra* rahc ,cgra tni(sgradaer diov
;)* rahc ,* rahc(pmcmun tni
;)s* rahc(rorre diov
;)* rahc ,* rahc(pmcrahc tni
/* detros eb ot senil fo # xam */ 001 SENIL enifed#
/* redro yrotcerid */ 8 RID enifed#
/* sesac rewol dna reppu dlof */ 4 DLOF enifed#
/* redro gnisaerced ni tros */ 2 RCED enifed#
/* tros ciremun */ 1 CIREMUN enifed#
>h.epytc< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
).srebmun
egap eht rof n- dna yrogetac xedni eht rof fd- htiw detros saw koob siht
rof xedni ehT( .snoitpo fo tes tnednepedni na ot gnidrocca detros dleif hcae
.senil nihtiw sdleif no enod eb yam gnitros os ,ytilibapac gnildnah-dleif a ddA
)R&K 121 egap( :71-5 esicrexE
931
001 RTSXAM enifed#
>h.gnirts< edulcni#
>h.epytc< edulcni#
>h.htam< edulcni#
:c.pmcmun elif ecruos ehT
}
;)"]2sop-[ ]1sop+[ rnfd- tros:egasU"(rorre
)2sop > 1sop || cgra( fi
}
;)"]2sop-[ ]1sop+[ rnfd- tros:egasU"(rorre
)0 < ))1 + ]0[vgra(iota = 1sop(( fi esle
;)1 + ]0[vgra(iota = 2sop
)'-' == c( fi esle
}
;kaerb
;)"]2sop-[ ]1sop+[ rnfd- tros:egasU"(rorre
;)c ,"n¥c% noitpo lagelli:tros"(ftnirp
:tluafed
;kaerb
;RCED =| noitpo
/* redro gnisaerced ni tros */ :'r' esac
;kaerb
;CIREMUN =| noitpo
/* tros ciremun */ :'n' esac
;kaerb
;DLOF =| noitpo
/* esac rewol dna reppu dlof */ :'f' esac
;kaerb
;RID =| noitpo
/* redro yrotcerid */ :'d' esac
{ )c( hctiws
)]0[vgra++* = c( elihw
)))1 + ]0[vgra(*(tigidsi! && '-' == c( fi
{ )'+' == c || '-' == ]0[)vgra++*(&& 0 > cgra--( elihw
;)* rahc(iota tni
;c tni
{
)][vgra* rahc ,cgra tni(sgradaer diov
/* stnemugra margorp daer :sgradaer */
}
;cr nruter
}
;1- = cr
041
{ )sopdne < j && sopdne < i( fi
}
;++j
)'0¥' =! ]j[t && ' ' =! ]j[t
&& )]j[t(munlasi! && sopdne < j( elihw
;++i
)'0¥' =! ]i[s && ' ' =! ]i[s
&& )]i[s(munlasi! && sopdne < i( elihw
{ )rid( fi
{ od
;)t(nelrts = sopdne
))t(nelrts > ))s(nelrts = sopdne(( fi esle
;2sop = sopdne
)0 > 2sop( fi
;1sop = j = i
;0 : 1 ? )RID & noitpo( = rid tni
;0 : 1 ? )DLOF & noitpo( = dlof tni
;2sop ,1sop tni nretxe
;noitpo rahc nretxe
;sopdne ,j ,i tni
;b ,a rahc
{
)t* rahc ,s* rahc(pmcrahc tni
/* t > s fi 0 >,t = s fi 0 ,t < s fi 0 < nruter :pmcrahc */
/* redro yrotcerid */ 8 RID enifed#
/* esac rewol dna reppu dlof */ 4 DLOF enifed#
}
;0 nruter
esle
;1 nruter
)2v > 1v( fi esle
;1- nruter
)2v < 1v( fi
;)rts(fota = 2v
;)RTSXAM ,rts ,2s(rtsbus
;)rts(fota = 1v
;)RTSXAM ,rts ,1s(rtsbus
;]RTSXAM[rts rahc
;2v ,1v elbuod
{
)2s* rahc ,1s* rahc (pmcmun tni
/* yllacirebmun 2s dna 1s erapmoc :pmcmun */
;)rtsxam tni ,t* rahc ,s* rahc(rtsbus diov
141
tnemetats fi tsrif ehT
.ngis sunim a yb
dedecerp si tnemugra eht dna stnemugra era ereht elihw eurt si sgradaer ni
pool elihw ehT .stnemugra enil dnammoc eht sdaer sgradaer enituor ehT
.yek tros eht si enil eritne eht dna 0 ot lauqe
era 2sop dna 1sop esiwrehtO .2sop erofeb tsuj sdne dna 1sop ta snigeb tros
eht ;2sop dna 1sop yficeps nac uoy senil nihtiw dleif na tros ot tnaw uoy fI
]2sop-[ ]1sop+[ rnfd- tros
si dnammoc tros eht fo xatnys ehT
.61-5 dna ,51-5 ,41-5 esicrexE si noitulos siht rof krowemarf ehT
}
;'0¥' = ]j[rts
;]i[rts = ]j[rts
)++j,++i ;nel < i ;1sop = i ,0 = j( rof
;)"trohs oot gnirts :rtsbus"(rorre
)2sop < nel && 0 > 2sop( fi esle
;2sop = nel
)2sop > nel && 0 > 2sop( fi
;)s(nelrts = nel
;2sop ,1sop tni nretxe
;nel ,j ,i tni
{
)rts* rahc ,s* rahc(rtsbus diov
/* rts ni tup dna s fo gnirtsbus a teg :rtsbus */
;)* rahc(rorre diov
>h.gnirts< edulcni#
:c.rtsbus elif ecruos ehT
}
;b - a nruter
;)sopdne < j && sopdne < i && b == a( elihw }
}
;0 nruter
)'0¥' == a && b == a( fi
;++j
;]j[t : )]j[t(rewolot ? dlof = b
;++i
;]i[s : )]i[s(rewolot ? dlof = a
241
.31-5 esicrexE morf noitcnuf eht si rorre .41-5 esicrexE
ni desu esoht era seniletirw dna ,senildaer ,rorre ,trosq ,paws senituor ehT
.fota ekil noitcnuf desu ylhgih
a fo ecafretni eht egnahc ot naht rehtar rtsbus enituor wen a tnevni ot refas
si tI .stnemugra sa htgnel dna nigiro ekat ton seod fota ecnis rtsbus enituor
wen a seriuqer tub noisrev suoiverp eht ekil srebmun serapmoc pmcmun
.sdleif seldnah noisrev sihT
.sesicrexe suoiverp eht ni noitcnuf eht fo noisrev deifidom a si pmcrahc
.orez naht
retaerg si ti erus sekam dna 1sop+ sessecorp tnemetats fi esle lanif ehT
.2sop- lanoitpo eht si deificeps tnemugra eht fi ylno eurt si
)'-'==t( fi esle
tnemetats fi esle txen ehT
.61-5 dna
,51-5 ,41-5 esicrexE ni sa yaw emas eht stnemugra eseht sessecorp tnemtats
hctiws ehT .tigid-non a ub dewollof ngis sunim a si tnemugra eht fi eurt si
)))1+]0[vgra(*(tigidsi! && '-' == c( fi
341
)STEKCARB == epyt || SNERAP == ))(nekotteg = epyt(( elihw
;)"n¥)lcd( ro eman detcepxe :rorre"(gsmrre
esle
;)nekot ,eman(ypcrts
/* eman elbairav */ )EMAN == epytnekot( fi esle }
;)"n¥) gnissim :rorre"(ftnirp
)')' =! epytnekot( fi
;)(lcd
/* )lcd( */ { )'(' == epytnekot( fi
;epyt tni
{
)diov(lcdrid diov
/* niotaralced tcerid a esrap :lcdrid */
}
;)"ot retniop",tuo(tacrts
)0 > --sn( elihw
;)(lcdrid
;++sn
/* s'* tnuoc */ );'*' == )(nekotteg ;0 = sn( rof
;sn tni
{
)diov(lcd diov
/* rotaralced a esrap :lcd */
;nekotverp tni nretxe
;][tuo rahc nretxe
/* eman reifitnedi */ ;][eman rahc nretxe
/* gnirts nekot tsal */ ;][nekot rahc nretxe
/* nekot tsal fo epyt */ ;epytnekot tni nretxe
;)diov(nekotteg tni
;)* rahc(gsmrre diov
;)diov(lcdrid diov
;)diov(lcd diov
;} SEY ,ON { mune
;} STEKCARB ,SNERAP ,EMAN { mune
>h.epytc< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.srorre tupni morf revocer lcd ekaM
)R&K 621 egap( :81-5 esicrexE
441
;'(' = epytnekot nruter
;)c(hctegnu
{ esle
}
;SNERAP = epytnekot nruter
;)")(" ,nekot(ypcrts
{ )')' == ))(hcteg = c(( fi
{ )'(' == c( fi
;)'t¥' == c || ' ' == ))(hcteg = c(( elihw
}
;epytnekot nruter
;ON = nekotverp
{ )SEY == nekotverp( fi
;nekot = p* rahc
;)tni(hctegnu diov
;)diov(hcteg ,c tni
{
)diov(nekotteg tni
/* nekot txen nruter :nekotteg */
/* nekot suoiverp on si ereht */ ;ON = nekotverp tni
/* gnirts nekot tsal */ ;][nekot rahc nretxe
/* nekot tsal fo epyt */ ;epytnekot tni nretxe
;} SEY ,ON { mune
;} STEKCARB ,SNERAP ,EMAN { mune
>h.gnirts< edulcni#
>h.epytc< edulcni#
:c.nekotteg elif ecruos ehT
}
;SEY = nekotverp
;)gsm ,"n¥s%"(ftnirp
{
)gsm* rahc(rorre diov
/* nekot .liava etacidni dna egassem rorre tnirp :gsmrre */
}
}
;)"fo " ,tuo(tacrts
;)nekot ,tuo(tacrts
;)"yarra " ,tuo(tacrts
{ esle
;)"gninruter noitcnuf " ,tuo(tacrts
)SNERAP == epyt( fi
541
.ytilibapac gnildnah
rorre devorpmi na sah ti tub ,foorp-tellub ton si noisrev deifidom ruO
.tey eno wen a teg ton od elbaliava nekot a si ereht fi ,si tahT
}
;epytnekot nruter
;ON = nekotverp
{ )SEY == nekotverp( fi
:gninnigeb eht ta tnemetats
fi wen a sah nekotteg .elbaliava ydaerla si nekot a taht nekotteg ot etacidni
ot nekotverp stes dna egassem rorre eht syalpsid gsmrre .ftnirp fo daetsni
gsmrre ekovni ew snekot eseht fo rehtien si ti fI .eman a ro lcd ot llac a retfa ')'
a :snekot owt fo eno stcepxe noitcnuf siht esuaceb elttil a lcdrid deifidom eW
}
;c = epytnekot nruter
esle
}
;EMAN = epytnekot nruter
;)c(hctegnu
;'0¥' = p*
;c = ++p*
) ;))(hcteg = c(munlasi ;c = ++p*( rof
{ ))c(ahplasi( fi esle
}
;STEKCARB = epytnekot nruter
;'0¥' = p*
;
) ;']' =! ))(hcteg = ++p*( ;c = ++p*( rof
{ )'[' == c( fi esle
}
}
641
}
;0 nruter
}
;)tuo,"n¥s%"(ftnirp
;)nekot ,"n¥s% ta tupni dilavni"(ftnirp
esle }
;)pmet ,tuo(ypcrts
;)tuo ,nekot ,"s% s%" ,pmet(ftnirps
{ )EMAN == epyt( fi esle }
;)pmet ,tuo(ypcrts
;)tuo ,"s%*" ,pmet(ftnirps
esle
;)tuo ,")s%*(" ,pmet(ftnirps
)STEKCARB == epyt
|| )SNERAP == ))(nekottxen = epyt(( fi
{ )'*' == epyt( fi esle
;)nekot ,tuo(tacrts
)STEKCARB == epyt || SNERAP == epyt( fi
)'n¥' =! ))(nekotteg = epyt(( elihw
;)nekot ,tuo(ypcrts
{ )FOE =! )(nekotteg( elihw
;]NEKOTXAM[pmet rahc
;epyt tni
{
)(niam
/* snoitaralced ot snoitpircsed drow trevnoc :lcdnu */
;]0001[tuo rahc
/* gnirts nekot tsal */ ;]NEKOTXAM[nekot rahc
/* nekot tsal fo epyt */ ;epytnekot tni
;)diov(nekottxen tni
;)diov(nekotteg tni
;)diov(lcdrid diov
;)diov(lcd diov
;} STEKCARB ,SNERAP ,EMAN { mune
001 NEKOTXAM enifed#
>h.epytc< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.snoitaralced ot sesehtnerap tnadnuder dda ton seod ti taht os lcdnu yfidoM
)R&K 621 egap( :91-5 esicrexE
741
eht ][ ro )( si ti fI .][ ro )( si nekot txen eht fi kcehc ot lcdnu deifidom eW
.tnadnuder era sesehtnerap eht emit sihT
)]31[batyad*( tni
secudorp lcdnu dna
tni * ]31[ batyad
si tupni eht
,"tni ot sretniop ]31[ fo yarra na si batyad" ,dnah rehto eht nO .tcerroc si hcihw
]31[)batyad*( tni
secudorp lcdnu dna
tni ]31[ * batyad
si
lcdnu rof tupni eht ,"tni ]31[ fo yarra na ot retniop a si batyad,elpmaxe roF
.][ ro )( rehtie si nekot txen eht nehw
ylno deriuqer era sesehtnerap eht,tcaf nI .tnadnuder era sesehtnerap ehT
)x*( rahc
secudorp lcdnu dna
rahc * x
si lcdnu ot tupni eht ,"rahc ot retniop a si x" noitpircsed eht roF
}
;epyt nruter
;SEY = nekotverp
;)(nekotteg = epyt
;nekotverp tni nretxe
;epyt tni
{
)diov(nekottxen tni
/* kcab ti hsup dna nekot txen eht teg :nekottxen */
;)diov(nekotteg tni
;} SEY ,ON { mune
841
]31[batyad* tni
si
tni * ]31[ batyad
r o f d nA
]31[)batyad*( tni
si
tni ]31[ * batyad
roF
x* rahc
secudorp lcdnu deifidom eht
rahc * x
tupni eht rof
,elpmaxe xoF .sesehtnerap tnadnuder ecudorp ton seod lcdnu deifidom ehT
.tupni eht morf eno wen a steg ti erofeb elbaliava ydaerla
nekot a si ereht fi skcehc taht 81-5 esicrexE morf noitcnuf eht si nekotteg
.epyt nekot eht snruter dna ,elbaliava nekot a si ereht taht tcaf eht sdrocer
,nekotteg sekovni taht nekottxen dellac noitcnuf elpmis a detaerc eW
.sesehtnerap gnidda tuoba noisiced ekam ew erofeb nekot eno daeha kool eW
.tnadnuder era sesehtnerap eht esiwrehto ,yrassecen era sesehtnerap
941
/* eman elbairav */ { )EMAN == epytnekot( fi esle }
;)"n¥) gnissim :rorre"(gsmrre
)')' =! epytnekot( fi
;)(lcd
/* )lcd( */ { )'(' == epytnekot( fi
;)diov(lcdmrap diov
;epyt tni
{
)diov(lcdrid diov
/* niotaralced tcerid a esrap :lcdrid */
}
;)"ot retniop",tuo(tacrts
)0 > --sn( elihw
;)(lcdrid
;++sn
/* s'* tnuoc */ );'*' == )(nekotteg ;0 = sn( rof
;sn tni
{
)diov(lcd diov
/* rotaralced a esrap :lcd */
;nekotverp tni nretxe
;][tuo rahc nretxe
/* cte ,tni ,rahc = epyt atad */ ;][epytatad rahc nretxe
/* eman reifitnedi */ ;][eman rahc nretxe
/* gnirts nekot tsal */ ;][nekot rahc nretxe
/* nekot tsal fo epyt */ ;epytnekot tni nretxe
;)diov(nekotteg tni
;)* rahc(gsmrre diov
;)diov(lcdrid diov
;)diov(lcd diov
;} SEY ,ON { mune
;} STEKCARB ,SNERAP ,EMAN { mune
001 NEKOTXAM enifed#
>h.epytc< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.no os dna ,tsnoc ekil
sreifilauq ,sepyt tnemugra noitcnuf htiw snoitaralced eldnah ot lcd dnapxE
)R&K 611 egap( :02-5 esicrexE
051
/* cte ,tni ,rahc = epyt atad */ ;][epytatad rahc nretxe
/* eman reifitnedi */ ;][eman rahc nretxe
/* gnirts nekot tsal */ ;][nekot rahc nretxe
/* nekot tsal fo epyt */ ;epytnekot tni nretxe
;)diov(nekotteg tni
;)** rahc,** rahc(erapmoc tni
;)diov(lauqepyt tni
;)diov(cepsepyt tni
;)gsm* rahc(gsmrre diov
;)diov(lcd diov
;} SEY ,ON { mune
;} STEKCARB ,SNERAP ,EMAN { mune
001 NEKOTXAM enifed#
>h.epytc< edulcni#
>h.bildts< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
:c.lcdmrap elif ecruos ehT
}
;SEY=nekotverp
;)gsm,"n¥s%"(ftnirp
{
)gsm* rahc(rorre diov
/* nekot .liava etacidni dna egassem rorre tnirp :gsmrre */
}
}
;)"fo " ,tuo(tacrts
;)nekot ,tuo(tacrts
;)"yarra " ,tuo(tacrts
{ esle }
;)"gninruter dna" ,tuo(tacrts
;)(lcdmrap
;)"gnitcepxe noitcnuf" ,tuo(tacrts
{ )'(' == epyt( fi esle
;)"gninruter noitcnuf " ,tuo(tacrts
)SNERAP == epyt( fi
)'(' == epyt || STEKCARB == epyt
|| SNERAP == ))(nekotteg = epyt(( elihw
;SEY = nekotverp
esle }
;)nekot ,eman(ypcrts
)'0¥' == ]0[eman( fi
151
,"tni"
,"rahc"
{ = ][epyt* rahc citats
{
)diov(cepsepyt tni
/* reificeps-epyt a si nekot fi SEY nruter :cepsepyt */
}
;)"," ,tuo(tacrts
)',' == epytnekot( fi
;)pmet ,tuo(tacrts
;
)')' =! epytnekot && ',' =! epytnekot( elihw }
;)"n¥tsil retemarap ni epyt nwonknu"(gsmrre
esle
}
;)(nekotteg
;)nekot,pmet(tacrts
;)" " ,pmet(tacrts
{ )SEY == )(lauqepyt( fi esle
}
;)(nekotteg
;)nekot,pmet(tacrts
;)" " ,pmet(tacrts
{ )SEY == )(cepsepyt( fi esle
}
;)(lcd
;SEY = nekotverp
{ )EMAN =! epytnekot( fi
{ od
;)(nekotteg
;]NEKOTXAM[pmet rahc
{
)diov(cepslcd diov
/* noitacificeps noitaralced :cepslcd */
}
;)"n¥noitaralced retemarap ni ) gnissim"(gsmrre
)')' =! epytnekot( fi
;)',' == epytnekot( elihw }
;)(cepslcd
{ od
{
)diov(lcdmrap diov
/* rotaralced retemarap a esrap :lcdmrap */
;nekotverp tni nretxe
;][tuo rahc nretxe
251
sebircsed taht rammarg eht fo trap eht fo noisrev detaiverbba na si sihT
ceps-lcd lauq-epyt
ceps-lcd ceps-epyt :cepslcd
lcd ceps-lcd ,lcd-mrap :lcd-mrap
]ezis lanoitpo[ lcd-tcerid
)lcd-mrap lanoitpo( lcd-tcerid
)lcd(
e man :lcd-tcerid
lcd-tcerid s'* lanoitpo :lcd
:srotaralced
retemarap edulcni ot R&K 221 egap no rammarg eht dednapxe eW
}
;)t*,s*(pmcrts nruter
{
)t** rahc ,s** rahc(erapmoc tni
/* hcaresb rof sgnirts owt erapmoc :erapmoc */
}
;SEY nruter
esle
;ON nruter
)LLUN == )erapmoc ,)* rahc(foezis
,)* rahc(foezis / )qepyt(foezis ,qepyt ,tp&(hcraesb( fi
;nekot = tp* rahc
;}
"elitalov"
,"tsnoc"
{ = ][qepyt* rahc citats
{
)diov(lauqepyt tni
/* reifilauq-epyt a si nekot fi SEY nruter :lauqepyt */
}
;SEY nruter esle
;ON nruter
)LLUN == )erapmoc ,)* rahc(foezis
,)* rahc(foezis / )sepyt(foezis ,sepyt ,tp&(hcraesb( fi
;nekot = tp* rahc
;}
"diov"
351
.hcraes yranib smrofrep taht enituor yrarbil dradnats a si hcraesb
.ti esu dna niaga nekot
emas taht seveirter ,resrap eht ni erehwesle ,nekotteg ot llac txen eht ;kcab
ti hsup ew os tey esu tonnac ew taht elbaliava nekot a evah ew semitemoS
.ekat ot noitca tahw ediced ew erofeb nekot a ta keep ot deen ew semitemoS
.81-5 esicrexE rof depoleved ew ytilicaf daehakool eht esu eW
.cepslcd dna lcdmrap snoitcnuf eht dedda dna lcdrid noitcnuf eht deifidom eW
diov ot retniop gninruter dna tni gninruter noitcnuf ot retniop
,rahc ot retniop ,tni ot retniop gnitcepxe noitcnuf ot retniop :pmoc
secudorp
))()cnf*( tni ,* rahc ,* tni()pmoc*(* diov
:elpmaxe roF
.R&K 112 egap no debircsed sreificeps-epyt wef a ezingocer eW .snoitaralced
451
;)(tnemmoc = c
)'*' == ))(hcteg = d(( fi
)'/' == c ( fi esle }
;kaerb
)FOE == w*( fi esle }
;kaerb
;++w
{ )c == w*( fi esle
;)(hcteg = w++*
)'¥¥' == ))(hcteg = w*(( fi
)++w ;0 > mil-- ;( rof
{ )'"' == c || ''¥' == c( fi esle }
}
;kaerb
;)w*(hctegnu
{ )'_'=! w* && ))(hcteg = w*(munlasi!( fi
)++w ;0 > mil-- ; ( rof
{ )'#' == c || '_' == c || )c(ahplasi( fi
;c = ++w*
)FOE =! c( fi
;
)))(hcteg = c(ecapssi( elihw
;drow = w* rahc
;d ,c tni
{
)mil tni ,drow* rahc(drowteg tni
/* tupni morf retcarahc ro drow txen teg :drowteg */
>h.epytc< edulcni#
>h.oidts< edulcni#
.noisrev retteb a etirW .senil lortnoc rossecorperp ro ,stnemmoc
,stnatsnoc gnirts ,serocsrednu eldnah ylreporp ton seod drowteg fo noisrev ruO
)R&K 631 egap( :1-6 esicrexE
serutcurtS .6 retpahC
551
.42-1 esicrexE ot ralimis si edoc
eht fo trap sihT .retcarahc hsals gnidne eht nruter dna stnemmoc erongi eW
.FOE ro etouq gnisolc eht dnif ew litnu sretcarahc rehtag ew etouq
a tceted ew ecnO .setouq elbuod ro elgnis nihtiw raeppa yam stnatsnoc gnirtS
.drow eht fo
trap sa detaert era wollof taht serocsrednu dna sretcarahc ciremunahpla ehT
)'#' == c || '_' == c || )c(ahplasi( fi
ot
))c(ahpla!( fi
degnahc ew sdnammoc rossecorperp dna serocsrednu eldnah oT
}
;c nruter
;)c(hctegnu
esle
;kaerb
)'/' == ))(hcteg = c(( fi
)'*' == c( fi
)FOE =! ))(hcteg = c(( elihw
;c tni
{
)diov(tnemmoc tni
/* retcarahc a nruter dna tnemmoc revo piks :tnemmoc */
}
;c nruter
;'0¥' = w*
;)d(hctegnu
esle
651
;)diov(collat* edont tcurts
}
;)(rahcteg
;)toor(tnirpxeert
}
;ON = dnuof
;)dnuof& ,mun ,drow ,toor(xeertdda = toor
)mun => )drow(nelrts && )]0[drow(ahplasi( fi
{ )FOE =! )DROWXAM ,drow(drowteg( elihw
;LLUN = toor
;6 : )1+]0[vgra(iota ? )'-' == ]0[)vgra++*( && cgra--( = mun
/* srahc .tnedi tsrif eht fo rebmun */ ;mun tni
/* dnuof saw hctam fi SEY */ ;ON = dnuof tni
;]DROWXAM[drow rahc
;toor* edont tcurts
{
)][vgra* rahc ,cgra tni(niam
/* )6 tluafed( sretcarahc mun tsrif eht ni lacitnedi */
/* seman elbairav fo puorg hcae redro citebahpla ni tnirp */
;)tni ,* rahc(drowteg tni
;)* edont tcurts(tnirpxeert diov
;)* tni ,tni ,* rahc ,* edont tcurts(xeertdda* edont tcurts
0 ON enifed#
1 SEY enifed#
001 DROWXAM enifed#
;}
/* dlihc thgir */ ;thgir* edont tcurts
/* dlihc tfel */ ;tfel* edont tcurts
/* dnuof hctam */ ;hctam tni
/* txet eht ot stniop */ ;drow* rahc
/* edon eert eht */ { edont tcurts
>h.bildts< edulcni#
>h.gnirts< edulcni#
>h.epytc< edulcni#
>h.oidts< edulcni#
.enil dnammoc eht morf tes eb nac taht retemarap a 6 ekaM .stnemmoc
dna sgnirts nihtiw sdrow tnuoc t'noD .retfaereht erehwemos tnereffid tub
,sretcarahc 6 tsrif eht ni lacitnedi era taht seman elbairav fo puorg
hcae redro lacitebahpla ni stnirp dna margorp C a sdaer taht margorp a etirW
)R&K 341 egap( :2-6 esicrexE
751
enil dnammoc eht ni deificeps ton si sretcarahc fo rebmun eht fI .sretcarahc
mun tsrif eht ni lacitnedi era taht seman elbairav stnirp margorp ehT
}
}
;)thgir>-p(tnirpxeert
;)drow>-p ,"n¥s%"(ftnirp
)hctam>-p( fi
;)tfel>-p(tnirpxeert
{ )LLUN =! p( fi
{
)p* edont tcurts(tnirpxeert diov
/* SEY == hctam>-p fi p eert fo tnirp redro-ni :tnirpxeert */
}
;t* - s* nruter
}
;SEY = hctam>-p
;SEY = dnuof*
/* ? srahc mun tsrif ni lacitnedi */ { )mun => i ( fi
;0 nruter
)'0¥' == s*( fi
)++t ,++s ,++i ;t* == s* ;0 = i( rof
;drow>-p = t* rahc
;i tni
{
)dnuof* tni ,mun tni ,p* edont tcurts ,s* rahc(erapmoc tni
/* hctam>-p etadpu dna sdrow erapmoc :erpamoc */
}
;p nruter
;)dnuof ,mun ,w ,thgir>-p(xeertdda = thgir>-p
)0 > dnoc( fi esle
;)dnuof ,mun ,w ,tfel>-p(xeertdda = tfel>-p
)0 < ))dnuof ,mun ,p ,w(erapmoc = dnoc(( fi esle
}
;LLUN = thgir>-p = tfel>-p
;dnuof* = hctam>-p
;)w(pudrts = drow>-p
/* edon wen a ekam */ ;)(collat = p
/* devirra sah drow wen a */ { )LLUN == p( fi
;dnoc tni
{
)dnuof* tni ,mun tni ,w* rahc ,p* edont tcurts(xeertdda* edont tcurts
/* p woleb ro ta ,w htiw edon a dda :xeertdda */
;)* tni ,tni ,* edont tcurts ,* rahc(erapmoc tni
851
.drow rehto eno tsael ta ot sretcarahc mun tsrif
eht ni ,lacitnedi era taht eert eht ni sdrow eht stnirp tnirpxeert enituor ehT
}
;SEY = hctam>-p
;SEY = dnuof*
{ )mun => i( fi
.SEY ot lauqe tes era eert eht
ni drow eht ot gnidnopserroc )hctam>-p( rebmem hctam eht dna dnuof* neht
,sretcarahc mun tsrif eht ni hctam a si ereht fI .eert eht ni ydaerla
drow a ot eert eht ni decalp gnieb drow eht serapmoc erapmoc enituor ehT
.eert eht ni drow a sllatsni
,)R&K 141 egap( eertdda fo noitacifidom a si hcihw ,xeertdda enituor ehT
.1-6 esicrexE
morf noitcnuf eht si drowteg .mun ot lauqe ro naht retaerg si htgnel sti
dna citebahpla si retcarahc tsrif sti fi eert eht ni drow a secalp margorp ehT
.esiwrehto ON slauqe dna eert eht ni drow a ot sretcarahc mun
ni lacitnedi si drow eht fi SEY slauqe dnuof .naeloob a si dnuof elbairav ehT
;6 : )1+]0[(vgra(iota ? )'-' == ]0[)vgra++*( && cgra--( = mun
:6 ot tes si ti neht
951
}
;)(rahcteg
;)toor(tnirpxeert
;++munenil
)'n¥' == ]0[drow( fi esle }
;)munenil ,drow ,toor(xeertdda = toor
;)drow ,"n¥s% = drow"(ftnirp
{ )1- == )drow(drowesion && )]0[drow(ahplasi( fi
)FOE =! )DROWXAM ,drow(drowteg( elihw
;LLUN = toor
;1 = munenil tni
;]DROWXAM[drow rahc
;toor* edont tcurts
{
)(niam
/* recnerefer-ssorc */
;)* edont tcurts(tnirpxeert diov
;)* rahc(drowesion tni
;)tni ,* rahc(drowteg tni
;)tni ,* rahc ,* edont tcurts(xeertdda* edont tcurts
;}
/* dlihc thgir */ ;thgir* edont tcurts
/* dlihc tfel */ ;tfel* edont tcurts
/* srebmun enil */ ;senil* tsilknil tcurts
/* txet eht ot stniop */ ;drow* rahc
/* :edon eert eht */ { edont tcurts
;}
;rtp* tsilknil tcurts
;munl tni
/* srebmun enil fo tsil deknil */ { tsilknil tcurts
001 DROWXAM enifed#
>h.bildts< edulcni#
>h.epytc< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.no os dna ".dna" ",eht" ekil sdrow esion evomeR
.srucco ti hcihw no srebmun enil eht fo tsil a drow hcae
rof dna tnemucod a ni sdrow lla fo tsil a stnirp taht recnerefer-ssorc a etirW
)R&K 341 egap( :3-6 esicrexE
061
;)drow>-p ,"n¥s01%"(ftnirp
;)tfel>-p(tnirpxeert
{ )LLUN =! p( fi
;pmet* tsilknil tcurts
{
)p* edont tcurts(tnirpxeert diov
/* p eert fo tnirp redro-ni :tnirpxeert */
}
}
;LLUN = rtp>-rtp>-pmet
;munenil = munl>-rtp>-pmet
;)(collal = rtp>-pmet
{ )munenil =! munl>-pmet( fi
;rtp>-pmet = pmet
)munenil =! munl>-pmet && LLUN =! rtp>-pmet( elihw
;senil>-p = pmet
;pmet* tsilknil tcurts
{
)munenil tni ,p* edont tcurts(nldda diov
/* tsil deknil eht ot rebmun enil a dda :nldda */
}
;p nruter
;)munenil ,w ,thgir>-p(xeertdda = thgir>-p
esle
;)munenil ,w ,tfel>-p(xeertdda = tfel>-p
)0< dnoc( fi esle
;)munenil ,p(nldda
)0== ))drow>-p ,w(pmcrts = dnoc(( fi esle
}
;LLUN = thgir>-p = tfel>-p
;LLUN = rtp>-senil>-p
;munenil = munl>-senil>-p
;)(collal = senil>-p
;)w(pudrts = drow>-p
/* drow wen a ekam */ ;)(collat = p
/* devirra sah drow wen a */ { )LLUN == p( fi
;dnoc tni
{
)munenil tni ,w* rahc ,p* edont tcurts(xeertdda* edont tcurts
/* p woleb ro ta ,w htiw edon a dda :xeertdda */
;)tni ,* edont tcurts(nldda diov
;)diov(collal* tsilknil tcurts
;)diov(collat* edont tcurts
161
sniatnoc edon hcaE .drow tcnitsid rep edon eno sniatnoc eert ehT
}
;1- nruter
}
;dim nruter
esle
;1 + dim = wol
)0 > dnoc( fi esle
;1- dim = hgih
)0 < ))]dim[wn ,w(pmcrts = dnoc(( fi
;2 / )hgih + wol( = dim
{ )hgih =< wol( elihw
;1 - )* rahc(foezis / )wn(foezis = hgih tni
;0 = wol tni
;dim ,dnoc tni
;}
"ot"
,"siht"
,"eht"
,"taht"
,"ro"
,"fo"
,"si"
,"ni"
,"era"
,"dna"
,"na"
,"a"
{ =][wn* rahc citats
{
)w* rahc(drowesion tni
/* drow esion a sa drow yfitnedi :drowesion */
}
;))tsilknil tcurts(foezis(collam )* tsilknil tcurts( nruter
{
)diov(collal* tsilknil tcurts
/* edon tsilknil a ekam :collal */
}
}
;)thgir>-p(tnirpxeert
;)"n¥"(ftnirp
;)munl>-pmet ," d4%"(ftnirp
)rtp>-pmet = pmet ;LLUN =! pmet ;senil>-p = pmet( rof
261
.1- snruter noitcnuf eht neht ,sdrow esion eht fo eno ton si drow a fI
.sdrow esion fo yarra citats a ni drow a sehcraes taht noitcnuf a si drowesion
.srucco drow eht erehw srebmun enil lla dna drow eht stnirp enituor siht
,eert eht ni drow hcae roF .redro lacitebahpla ni eert eht
stnirp tnirpxeert .)R&K 241 egap( tnirpeert fo noisrev deifidom a si tnirpxeert
}
;LLUN = rtp>-rtp>-pmet
;munenil = munl>-rtp>-pmet
;)(collal = rtp>-pmet
{ )munenil =! munl>-pmet( fI
:tsil deknil eht fo dne
eht ta rebmun enil eht sdda enituor eht ,tsil eht ni ton si rebmun enil eht fI
;rtp>-pmet = pmet
)munenil =! munl>-pmet && LLUN =! rtp>-pmet( elihw
:LLUN ro rebmun
enil emas eht fo ecnerrucco na rof gnikool tsil deknil eht sesrevart nidda
.tsil deknil eht ot rebmun enil eht sdda nidda enituor eht neht
)0 == ))drow>-p ,w(pmcrts = dnoc((
eert eht ni si ydaerla drow a fI
;munenil = munl>-senil>-p
:rebmun enil
eht dengissa steg tsil deknil eht ni tnemele tsrif eht neht ,drow wen a si ti fI
.tsil deknil gnidnopserroc
eht ni rebmun enil eht sllatsni dna eert eht ni drow eht sllatsni xeertdda
.)R&K 141 egap( eertdda fo noisrev deifidom a si xeertdda enituor ehT
.LLUN si retniop eht ,tsil eht ni stnemele erom on era ereht nehW
.tsil deknil eht
ni tnemele txen eht ot retniop a dna rebmun enil a sniatnoc erutcurts hcaE
.tsilknil epyt fo erutcurts a si srebmun enil fo tsil deknil eht fo tnemele hcaE
)thgir( edon dlihc thgir eht ot retniop a
)tfel( edon dlihc tfel eht ot retniop a
)senil( srebmun enil fo tsil deknil a ot retniop a
)drow( drow eht fo txet eht ot retniop a
361
;
)'n¥' =! c && ))(hcteg = c(ecapssi( el1hw
:srebmun enil fo kcart peek nac ew taht os 'n¥' nruter ot drowteg deifidom eW
.redro IICSA gnidnecsa
detros ni yarra eht peek uoy sa gnol sa ][wn ot sdrow nwo ruoy dda nac uoY
461
{
)p* edont tcurts(erotseert diov
/* sedon eert ot sretniop ][tsil ni erots :erotseert */
}
;)(rahcteg
;)drow>-]i[tsil ,tnuoc>-]i[tsil ,"n¥s02%:d2%"(ftnirp
)++i ;ntn < i ;0 = i( rof
;)(tsiltros
;)toor(erotseert
;)drow ,toor(eertdda = toor
))]0[drow(ahplasi( fi
)FOE =! )DROWXAM ,drow(drowteg( elihw
;LLUN = toor
;i tni
;]DROWXAM[drow rahc
;toor* edont tcurts
{
)(niam
/*.qerf fo redro gnisaerced ni detros sdrow tcnitsid tnirp */
/* sedon eert fo rebmun */ ;0 = ntn tni
/* sedon eert ot sretniop */ ;]TCNITSIDN[tsil* edont tcurts
;)* edont tcurts(erotseert diov
;)diov(tsiltros diov
;)tni ,* rahc(drowteg tni
;)* rahc ,* edont tcurts(eertdda* edont tcurts
;}
/* dlihc thgir */ ;thgir* edont tcurts
/* dlihc tfel */ ;tfel* edont tcurts
/* secnerrucco fo rebmun */ ;tnuoc tni
/* txet eht ot stniop */ ;drow* rahc
/* :edon eert eht */ { edont tcurts
0001 TCNITSIDN enifed#
001 DROWXAM enifed#
>h.gnirts< edulcni#
>h.epytc< edulcni#
>h.oidts< edulcni#
.tnuoc sti yb drow hcae edecerP .ecnerrucco fo ycneuqerf fo redro gnisaerced
otni detros tupni sti ni sdrow tcnitsid eht stnirp taht margorp a etirW
)R&K 341 egap( :4-6 esicrexE
561
.ecnerrucco fo ycneuqerf fo redro gnisaerced ni tsil yarra eht
stros tsiltros .)R&K 26 egap( trosllehs fo noitacifidom a si tsiltros enituor ehT
.tsil yarra eht ni edont ot retniop hcae serots neht
erotseert enituor ehT .eert eht ni ti secalp dna drow hcae sdaer margorp ehT
.sedon eert fo rebmun eht sniatnoc
ntn elbairav ehT .edont epyt fo erutcurts a ot stniop retniop hcae erehw
,sretniop fo yarra na si tsil .R&K 041 egap no desu eno eht si
edont erutcurts ehT .TCNlTSlDN si sdrow tcnitsid fo rebmun mumixam ehT
}
}
;pmet = ]pag+j[tsil
;]pag+j[tsil = ]j[tsil
/* */ ;]j[tsil = pmet
;kaerb
))tnuoc>-]pag+j[tsil( => )tnuoc>-]j[tsil(( fi
{ )pag =- j ;0 => j ;pag-i = j( rof
)++i ;ntn < i ;pag = i( rof
)2 =/ pag ;0 > pag ;2/ntn = pag( rof
;pmet* edont tcurts
;j ,i ,pag tni
{
)diov(tsiltros diov
/* sedon eert ot sretniop fo tsil tros :tsiltros */
}
}
;)thgir>-p(erotseert
;p = ]++ntn[tsil
)TCNITSIDN < ntn( fi
;)tfel>-p(erotseert
{ )LLUN =! p( fi
661
:]h[bathsah
ta gnitrats tsil deknil eht ni yrtne tsrif eht si pn neht LLUN si verp nehW
.pn gnidecerp yrtne na ot stniop verp dna devomer eb ot yrtne eht ot stniop pn
.tsil deknil a fo gninnigeb eht ot stniop bathsah ni yrtne nA .elbat
eht morf devomer eb ot noitinifed a dna eman a si ereht LLUN ton si pn fI
.LLUN semoceb
pn retniop eht nehw setanimret pool rof eht ,elbat eht ni ton si s gnirts eht fI
;kaerb
)0 == )eman>-pn ,s(pmcrts( fi
:pool eht stixe ti s gnirts
eht sdnif fednu nehW .elbat eht ni sgnirts eht rof skool fednu enituor ehT
}
}
/* erutcurts detacolla eerf */ ;)pn )* diov((eerf
;)nfed>-pn )* diov((eerf
;)eman>-pn )* diov((eerf
;txen>-pn = txen>-verp
/* tsil hsah eht ni erehwesle */ esle
;txen>-pn = ]h[bathsah
/* ?tsil hsah eht ni tsrif */ )LLUN == verp( fi
/* eman dnuof */ { )LLUN =! pn( fi
}
/* yrtne suoiverp rebmemer */ ;pn = verp
;kaerb
)0 == )eman>-pn ,s(pmcrts( fi
{ )txen>-pn = pn ;LLUN =! pn ;]h[bathsah = pn( rof
/* s gnirts fo eulav hsah */ ;)s(hsah = h
;LLUN = verp
;pn* ,verp* tsiln tcurts
;h tni
{
)s* rahc(fednu diov
/* elbat eht morf snoitinifed dna eman a evomer :fednu */
;)* rahc(hsah dengisnu
.llatsni dna pukool yb deniatniam
elbat eht morf noitinifed dna eman a evomer lliw taht fednu noitcnuf a etirW
)R&K 541 egap( :5-6 esicrexE
761
;)pn )* diov((eerf
;)nfed>-pn )* diov((eerf
;)eman>-pn )* dlov((eerf
:)R&K 761 egap .eerf( deerf si flesti erutcurts eht dna
,noitinifed eht ,eman eht rof detacolla ecaps eht ,yrtne pn eht gnivomer retfA
;txen>-pn = txen>-verp
esle
;txen>-pn = ]h[bathsah
)LLUN == verp( fi
861
)LLUN =! ]i[bathsah( fi
)i++ ;EZISHSAH < i ;0 = i( rof
/* */
/* noitinifed hsup */ ;)nfed>-p(stegnu
esle
/* denifed ton */ ;)w ,"s%"(ftnirp
)LLUN == ))w(pukool = p (( fi esle
/* denifed eb tonnac */ ;)w ,"s%"(ftnirp
))]0[w(ahplasi!( fi esle
;)(fedteg
/* .tcerid fo gninnigeb */ )0 == )"#" ,w(pmcrts( fi
)FOE =! )DROWXAM ,w(drowteg( elihw
;i tni
;p* tsiln tcurts
;]DROWXAM[w rahc
{
)(niam
/* rossecorp enifed# fo noisrev elpmis */
;)* rahc(stegnu diov
;)tni(hctegnu diov
;)* rahc(fednu diov
;)diov(sknalbpiks diov
;)* rahc(pukool* tsiln tcurts
;)* rahc ,* rahc(llatsni* tsiln tcurts
;)tni ,* rahc(drowteg tni
;)diov(fedteg diov
;)diov(hcteg tni
;)* rahc ,tni(rorre diov
;}
/* txet tnemecalper */ ;nfed* rahc
/* eman denifed */ ;eman* rahc
/* niahc eht ni yrtne txen */ ;txen* tsiln tcurts
/* :yrtne elbat */ { tsiln tcurts
001 DROWXAM enifed#
>h.gnirts< edulcni#
>h.epytc< edulcni#
>h.oidts< edulcni#
.lufpleh hctegnu dna hcteg dnif osla yam uoY
.noitces siht fo senituor eht no desab ,smargorp C htiw esu rof elbatius
)stnemugra on ,.e.i( rossecorp enifed# eht fo noisrev elpmis a tnemelpmI
)R&K 541 egap( :6-6 esicrexE
961
}
;)(hcteg = c
)'n¥' =! c && FOE =! c( elihw
;)s ,"n¥s% :rorre"(ftnirp
{
)s* rahc ,c tni(rorre diov
/* enil eht fo tser eht piks dna egassem rorre tnirp :rorre */
}
;)"# retfa evitcerid a gnitcepxe :fedteg" ,]0[rid(rorre
esle
}
;)eman(fednu
esle
;)"fednu ni ahpla-non :fedteg" ,]0[eman(rorre
)))DROWXAM ,eman(drowteg(ahplasi!( fi
;)(sknalbpiks
{ )0 == )"fednu" ,rid(pmcrts( fi esle
}
}
;)fed ,eman(llatsni
/* noitinifed llatsni */ esle
;)"enifed etelpmocni :fedteg" ,'n¥'(rorre
/* ?noitinifed on */ )0 =< i( fi
;'0¥' = ]i[fed
/* noitinifed fo dne */ ;kaerb
)'n¥' == ]i[fed || FOE == ))(hcteg = ]i[fed(( fi
)++i ;1- DROWXAM < i ;0 = i( rof
;)(sknalbpiks
{ esle
;)"detcepxe eman - ahpla-non :fedteg" ,]0[eman(rorre
)))DROWXAM ,eman(drowteg(ahplasi!( fi
;)(sknalbpiks
{ )0 == )"enifed" ,rid(pmcrts( fi esle
;)"# retfa evitcerid a gnitcepxe :fedteg" ,]0[rid(rorre
)))DROWXAM ,rid(drowteg(ahplasi!( fi
;)(sknalbpiks
;]DROWXAM[eman ,]DROWXAM[rid ,]DROWXAM[fed rahc
;i tni
{
)diov(fedteg diov
/* ti llatsni dna noitinifed teg :fedteg */
}
;)(rahcteg
;)nfed>-p ,eman>-p ,"n¥s%=nfed s%=eman"(ftnirp
)txen>-p = p ;LLUN=!p ;]i[bathsah=p( rof
071
.atad
tupni eht selbmeser tuptuo eht taht os secaps nruter ot drowteg deifidom eW
.)5-6 esicrexE( elbat eht morf devomer eb ot eman a sesuac evitcerid fednu nA
.)R&K 541
egap( noitcnuf llatsni eht gnisu elbat eht ni ti sllatsni fedteg ,stsixe noitinifed
a fI .elif fo dne ro enil eht fo dne eht sdnif ti litnu noitinifed eht srehtag
;kaerb
)'n¥' == ]i[fed
|| FOE == ))(hcteg = ]i[fed(( fi
)++i ;1 - DROWXAM < i ;0 = i( rof
pool eht , enifed a nI
.ciremunahpla eb ot detcepxe si eman ehT
eman fednu#
noitinifed eman enifed#
:sevitcerid eht seldnah f ed teg noitcnuf ehT
.maerts tupni
eht otno redro esrever ni kcab ti sehsup )7-4 esicrexE( stegnu noitcnuf eht
,stsixe noitinifed
a nehW .drow eht rof noitinifed elbissop a rof sehcraes margorp eht esiwrehtO
.drow eht stnirp margorp eht dna denifed neeb evah
ton dluoc drow eht neht ,retcarahc citebahpla na nruter ton seod drowteg fI
.taht sevloser fedteg noitcnuf eht dna # a wollof ot detcepxe era )fednu ,enifed(
sevitceriD .rossecorp elpmis siht fo ydob eht sniatnoc margorp niam ehT
171
.>h.epytc< morf reppuot dna rewolot sesu margorp ehT
.eman
margorp eht si ]0[vgra ,tnemugra tsrif eht si ]1[vgra esuaceb CP no skrow
)0 == )"rewol" ,]1[vgra(pmcrts( fi
tnemetats ehT
.rewol gnirts eht si ]1[vgra nehw orez snruter pmcrts
.reppu ot esac rewol strevnoc ti esiwrehtO .esac rewol
ot esac reppu strevnoc ti ,rewol eman eht htiw dekovni si margorp eht nehW
}
;0 nruter
;))c(reppuot(rahctup
)FOE =! ))(rahcteg = c(( elihw
esle
;))c(rewolot(rahctup
)FOE =! ))(rahcteg = c(( elihw
)0 == )"rewol" ,]1[vgra(pmcrts( fi
;c tni
{
)][vgra* rahc ,cgra tni(niam
/* esac reppu ot esac rewol strevnoc :reppu */
/* esac rewol ot esac reppu strevnoc :rewol */
>h.epytc< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.]0[vgra ni dnuof sa ,htiw dekovni si ti eman eht no gnidneped
,reppu ot esac rewol ro esac rewol ot esac reppu strevnoc taht margorp a etirW
)R&K 351 egap( :1-7 esicrexE
tuptuO dna tupnI .7 retpahC
271
ni denifed si lrtncsi orcam ehT .ENILXAM si enil tuptuo na fo htgnel ehT
}
}
;n nruter
;)'n¥'(rahctup
{ esle
;n+sop nruter
)ENILXAM < n + sop( fi
{
)n tni ,sop tni(cni tni
/* tuptuo rof retnuoc noitisop tnemercni :cni */
}
;0 nruter
}
;)c(rahctup
;)1 ,sop(cni = sop
/* retcarahc cihparg */ { esle
}
}
;)'n¥'(rahctup
;0 == sop
{ )'n¥' == c( fi
/* ? retcarahc enilwen */
;)c," o30%¥¥ "(ftnirp
;)NELTCO ,sop(cni = sop
/* knalb ro cihparg-non */
{ )' ' == c || )c(lrtncsi( fi
)FOE =! ))(rahcteg = c(( elihw
/* enil eht ni noitisop */ ;0 = sop
;)n tni ,sop tni(cni tni
;sop ,c tni
{
)(niam
/* yaw elbisnes a ni tupni yrartibra tnirp */
/* eulav latco na fo htgnel */ 6 NELTCO enifed#
/* enil eno ni srahc fo rebmun xam */ 001 ENILXAM enifed#
>h.epytc< edulcni#
>h.oidts< edulcni#
.senil txet gnol kaerb dna ,motsuc lacol ot gnidrocca
lamicedaxeh ro latco ni sretcarahc cihparg-non tnirp dluohs ti ,muminim
a sA .yaw elbisnes a ni tupni yrartibra tnirp lliw taht margorp a etirW
)R&K 551 egap( :2-7 esicrexE
371
.tuptuo rof elbaliava secalp n ton
era ereht fi enil a skaerb dna desu noitisop tsal eht snruter cni noitcnuf ehT
}
;)'n¥'(rahctup
;0 == sop
{ )'n¥' == c( fi
:sop steser retcarahc enilwen A .snoitisop NELTCO gnisu )knalb
a dna 'o' a yb dewollof dna ¥ a dna knalb a yb dedecerp(latco ni detnirp era
sretcarahc cihparg-noN .sretcarahc cihparg-non deredisnoc osla era sknalB
.)040 latco naht ssel(sretcarahc lortnoc yranidro dna )7710
latco(retcarahc eteled eht ,sretcarahc cihparg-non eht sdnif lrtncsi .>h.epytc<
471
;kaerb
;)lavd ,"f%"(ftnirp
;)elbuod ,pa(gra_av = lavd
:'f' esac
;kaerb
;)lavu ,tmflacol(ftnirp
;)dengisnu,pa(gra_av = lavu
:'o' esac
:'u' esac
:'X' esac
:'x' esac
;kaerb
;)lavi ,"d%"(ftnirp
;)tni ,pa(gra_av = lavi
:'i' esac
:'d' esac
/* rettel tamrof */ { )p++*( hctiws
;'0¥' = ]i[tmflacol
/* rettel tamrof */ ;)1 + p(* = ]++i[tmflacol
/* srahc tcelloc */ ;p++* = ]++i[tmflacol
)))1 + p(*(ahplasi! && )1 + p(*( elihw
/* tmf lacol trats */ ;'%' = ]++i[tmflacol
;0 = i
}
;eunitnoc
;)p*(rahctup
{ )'%' =! p*( fi
{ )++p ;p* ;tmf = p( rof
/* gra demannu ts1 ot tniop pa ekam */ ;)tmf ,pa(trats_av
;lavd elbuod
;lavu dengisnu
;lavi ,i tni
;]TMFLACOL[tmflacol rahc
;lavs* ,p* rahc
/* nrut ni gra demannu hcae ot stniop */ ;pa tsil_av
{
)... ,tmf* rahc(ftnirpnim diov
/* tsil tnemugra elbairav htiw ftnirp laminim :ftnirpnim */
001 TMFLACOL enifed#
>h.gradts< edulcni#
>h.epytc< edulcni#
>h.oidts< edulcni#
.ftnirp fo seitilicaf rehto eht fo erom eldnah ot ftnirpnim esiveR
)R&K 651 egap( :3-7 esicrexE
571
.ftnirp rof tnemugra tamrof eht si tmflacol
.rettel tamrof eht―retcarahc citebahpla na litnu sretcarahc rehto yna dna
% eht tmflacol ni tcelloc ew ftnirp fo seitilicaf rehto eht fo erom eldnah oT
.detroppus seitilicaf eht rof gnitnirp
lautca eht seod ftnirp dna tsil tnemugra eht gnola sklaw ftnirpnim
}
/* pu naelc */ ;)pa(dne_av
}
}
;kaerb
;)p*(rahctup
:tluafed
;kaerb
;)lavs*(rahctup
)++lavs ;lavs* ;)* rahc ,pa(gra_av = lavs( rof
:'s' esac
671
;kaerb
;)lavd ,"f%"(fnacs
;)* elbuod ,pa(gra_av = lavd
:'f' esac
;kaerb
;)lavu,tmflacol(fnacs
;)* dengisnu,pa(gra_av=lavu
:'o' esac
:'u' esac
:'X' esac
:'x' esac
;kaerb
;)lavi ,"d%"(fnacs
;)* tni ,pa(gra_av = lavi
:'i' esac
:'d' esac
/* rettel tamrof */ { )p++*( hctiws
;'0¥' = ]i[tmflacol
/* rettel tamrof */ ;)1 + p(* = ]++i[tmflacol
/* srahc tcelloc */ ;p++* = ]++i[tmflacol
)))1 + p(*(ahplasi! && )1 + p(*( elihw
/* tmf lacol trats */ ;'%' = ]++i[tmflacol
}
;eunitnoc
/* rahc tcelloc */ ;p* = ]++i[tmflacol
{ )'%' =! p*( fi
{ )++p ;p* ;tmf = p( rof
/* gra demannu ts1 ot tniop pa ekam */ ;)tmf ,pa(trats_av
;0 = i
;lavd elbuod
;lavu dengisnu
;lavi ,i tni
;]TMFLACOL[tmflacol rahc
;lavs* ,p* rahc
/* nrut ni gra demannu hcae ot stniop */ ;pa tsil_av
{
)... ,tmf* rahc(fnacsnim diov
/* tsil tnemugra elbairav htiw fnacs laminim :fnacsnim */
001 TMFLACOL enifed#
>h.gradts< edulcni#
>h.epytc< edulcni#
>h.oidts< edulcni#
.noitces
suoiverp eht morf ftnirpnim ot suogolana fnacs fo noisrev etavirp a etirW
)R&K 951 egap( :4-7 esicrexE
771
.elbairav s'resu eht otni eulav a sdaer neht
fnacs .fnacs llac ew dna retniop lacol a ot ti ypoc dna retniop eht fo eulav eht
teg ot gra-av esu eW .fnacs morf eulav eht seviecer taht elbairav eht ot retniop
a dna gnirts tamrof a ot retniop a :sretniop era fnacs ot stnemugra ehT
.retniop etairporppa eht htiw gnola fnacs ot dessap tmflacol
eht si tahT .% a retfa retcarahc citebahpla na sdnif ti litnu gnirts tamrof eht
morf sretcarahc stcelloc noitcnuf sihT .ftnirpnim ot ralimis si fnacsnim
}
/* pu naelc */ ;)pa(dne_av
}
/* xedni teser */ ;0 = i
}
;kaerb
;)tmflacol(fnacs
:tluafed
;kaerb
;)lavs ,tmflacol(fnacs
;)* rahc ,pa(gra_av = lavs
:'s' esac
871
.)gnirts a stcepxe fnacss( daer
retcarahc tsal eht srebmemer taht yarra citats tnemele owt a si ctsal .rebmun
a gniwollof retcarahc eht si poteg ot sllac neewteb rebmemer ot gniht enO
.deifidom enituor ylno eht si )R&K 87 egap( poteg noitcnuf ehT
}
;REBMUN nruter
;c = ]0[ctsal
)FOE =! cr( fi
;'0¥' = ]i[s
;)FOE =! cr( elihw }
;kaerb
))c = ]i++[s(tigidsi!( fi
;)c& ,"c%"(fnacs = cr
{ od
/* trap noitcarf tcelloc */ )'.' == c( fi
;)FOE =! cr( elihw }
;kaerb
))c = ]i++[s(tigidsi!( fi
;)c& ,"c%"(fnacs = cr
{ od
/* trap regetni tcelloc */ ))c(tigidsi( fi
;0 = i
/* rebmun a ton */ ;c nruter
)'.' =! c && )c(tigidsi!( fi
;'0¥' = ]1[s
;FOE = c
)FOE == )c& ,"c%"(fnacs( fi
)'t¥' == c || ' ' == )c = ]0[s(( elihw
/* retcarahc tsal raelc */ ;' ' = ]0[ctsal
;)c& ,"c%" ,ctsal(fnacss
;" " = ][ctsal rahc citats
;cr ,i ,0 = c tni
{
)][s rahc(poteg tni
/* dnarepo ciremun ro rotarepo txen teg :poteg */
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
>h.epytc< edulcni#
>h.oidts< edulcni#
.noisrevnoc rebmun dna tupni
eht od ot fnacss ro/dna fnacs esu ot 4 retpahC fo rotaluclac xiftsop eht etirweR
)R&K 951 egap( :5-7 esicrexE
971
;cr ,c tni
{
)][s rahc(poteg tni
/* dnarepo ciremun ro rotarepo txen teg :poteg */
/* dnuof saw rebmun a taht langis */ '0' REBMUN enifed#
>h.epytc< edulcni#
>h.oidts< edulcni#
:si noitulos elbissop rehtonA
.fnacs htiw emit a
ta retcarahc eno daer ew nehw poteg lanigiro eht evorpmi pleh ton seod fnacs
FOE =! cr
rof tset ew yhw s'tahT .c elbairav
eht retla ton did yltneuqesn oc dna FOE dnuof fnac> taht elbissop si tI
.tigid a rof tset
neht dna ,s gnirts eht ot retcarahc eht ngissa ,fnacs ekovni ot evah ew esuaceb
; kaerb
))c = ]i++[s(tigidsi!( fl
;)c& ,"c%"(fnacs = cr
otni
))(hcteg = c = ]i++[s(tigidsi
noisserpxe eht degnahc osla eW
.elif fo dne no FOE snruter ti dnA .)R&K 751 egap(
smeti tupni dengissa dna dehctam yllufsseccus fo rebmun eht snruter f nacs
.daetsni
]0[ctsal = c
esu dluoc uoY .]0[ctsal ni tup retcarahc eht sdaer
)c& ,"c%" ,ctsal(fnacss
llac ehT
081
.s ni gnirts retcarahc a otni f fo eulav
eht trevnoc ot ftnirps esu ew ,eulav tniop-gnitaolf a sa rebmun eht snruter po
teg ecniS .rebmun eht daer ew nehT .ctegnu noitcnuf yrarbil eht gnisu tupni
eht otno kcab ti hsup ew ,tniop lamiced a ro tigid a rehtie si retcarahc eht fI
.elif fo dne ot eud etanimret osla yam pool ehT .bat
a ron knalb a rehtien si taht eno dnif ew litnu emit a ta retcarahc a daer eW
}
;REBMUN nruter
;)f ,”f%“ ,s(ftnirps
;)f& ,”f%“(fnacs
;)nidts ,c(ctegnu
;c nruter
)'.' =! c && )c(tigidsi!( fi esle
;FOE nruter
)FOE == cr( fi
;'0¥' = ]1[s
;kaerb
)’t¥‘ =! c && ‘ ‘ =! )c = ]0[s(( fi
)FOE =! ))c& ,"c%"(fnacs = cr(( elihw
;f taolf
181
}
;LLUN = 2pl = 1pl
;)1enil ,"n¥s%n¥enil ni ecnereffid tsrif"(ftnirp
{ )0 =! )2enil ,1enil(pmcrts( fi
{ )2enil == 2pl && 1enil == 1pl( fi
;)2pf ,ENILXAM ,2enil(stegf = 2pl
;)1pf ,ENILXAM ,1enil(stegf = 1pl
{ od
;2pl* ,1pl* rahc
;]ENILXAM[2enil ,]ENILXAM[1enil rahc
{
)2pf* ELIF ,1pf* ELIF(pmocelif diov
/* emit a ta enil a - selif owt erpamoc :pmocelif */
}
}
}
;)0(tixe
;)2pf(esolcf
;)1pf(esolcf
;)2pf ,1pf(pmocelif
/* derapmoc eb ot selif denepo dna dnuof */ { esle }
;)1(tixe
;)vgra* ,"n¥s% nepo t’nac :pmoc" ,rredts(ftnirpf
{ )LLUN == ))"r" ,vgra++*(nepof = 2pf(( fi esle }
;)1(tixe
;)vgra* ,"n¥s% nepo t’nac :pmoc" ,rredts(ftnirpf
{ )LLUN == ))"r" ,vgra++*(nepof = 1pf(( fi
{ esle }
;)1(tixe
;)"n¥seman elif owt deen :pmoc" ,rredts(ftnirpf
/* ? stnemugra fo rebmun tcerrocni */ { )3 =! cgra( fi
;2pf* ,1pf* ELIF
{
)][vgra* rahc ,cgra tni(niam
/* enil tnereffid tsrif gnitnirp ,selif owt erapmoc :pmoc */
001 ENILXAM enifed#
>h.gnirts< edulcni#
>h.bildts< edulcni#
>h.oidts< edulcni#
.reffid yeht erehw enil tsrif eht gnitnirp .selif owt erapmoc ot margorp a etirW
)R&K 561 egap( :6-7 esicruE
281
.reffid ton od selif eht dna )FOE(
dedne evah selif htob ,senil evitcepser rieht ot tniop ton od 2pl dna 1pl htob fI
.reffid selif eht dna )FOE(
dedne sah selif eht fo eno ,enil evitcepser sti ot tniop ton seod 2pl ro 1pl fI
.reffid yeht erehw enil eht stnirp pmocelif ,hctam ton od senil eht nehW
.senil owt eht serapmoc pmocenil dna dedne sah elif rehtien
,senil evitcepser rieht ot tniop 2pl dna 1pl fI .elif fo dne no LLUN ro daer enil
eht ot retniop a snruter ategf noitcnuf ehT .elif hcae morf enil a sdaer pmocelif
.emit a ta enil a meht serapmoc pmocel 1 f dna selif eht snepo margorp ehT
.seman elif owt dna eman margorp :eerht eb dluohs stnemugra fo rebmun ehT
}
;)2enil == 2pl && 1enil == 1pl( elihw }
;)1enil ,"n¥s%n¥enil ta elif dnoces fo dne"(ftnirp
)2enil =! 2pl && 1enil == 1pl( fi esle
;)2enil ,"n¥s%n¥enil ta elif dnoces fo dne"(ftnirp
)2enil == 2pl && 1enil =! 1pl( fi esle }
381
}
;)1(tixe
;)vgra* ,"n¥s% nepo t’nac :dnif" ,rredts(ftnirpf
{ )LLUN == ))"r" ,vgra++*(nepof = pf(( fi
/* elif deman a teg */ )0 > cgra--( elihw
esle
;)rebmun ,tpecxe ,nrettap ,"" ,nidts(tapf
/* tupni dradnats daer */ )1 == cgra( fi
}
;)1(tixe
;)"n¥]... elif[ nrettap ]n-[ ]x-[ dnif :egasU"(ftnirp
{ esle
;)vgra* ,nrettap(ypcrts
)1 => cgra( fi
}
;kaerb
;)c ,"n¥c% noitpo lagelli :dnif"(ftnirp
:tluafed
;kaerb
;1 = rebmun
:'n' esac
;kaerb
;1 = tpecxe
:'x' esac
{ )c( hctiws
)]0[vgra++* =c( elihw
)'-' == ]0[)vgra++*( && 0 > cgra--( elihw
;)rebmun tni ,tpecxe tni
,nrettep* rahc ,emanf* rahc ,pf* ELIF(tapf diov
;pf* ELIF
;0 = rebmun ,0 = tpecxe ,c tni
;]ENILXAM[nrettap rahc
{
)][vgra* rahc ,cgra tni(niam
/* tnemugra ts1 morf nrettap hctam taht senil tnirp :dnif */
/* htgnel enil tupni mumixam */ 0001 ENILXAM enifed#
>h.bildts< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
?dnuof si enil gnihctam a nehw detnirp eb eman elif eht dluohS
.tupni dradnats eht morf .stnemugra sa deman era selif on fi ,ro selif deman fo
tes a morf tupni sti ekat ot 5 retpahC fo margorp gnidnif-nrettap eht yfidoM
)R&K 561 egap( :7-7 esicrexE
481
.flesti enil eht dna .rof deksa saw ti fi rebmun enil eht ,)tupni dradnats eht si
ti sselnu( eman elif eht stnirp tap f ,eurt si noisserpxe taht fo tluser eht nehW
eslaf )deificeps( 1 =! )nrettap dnuof( 1
eurt )deificeps( 1 =! )nrettap dnif ton did( 0
eurt )deificeps ton( 0 =! )nrettap dnuof( 1
eslaf )deificeps ton( 0 =! )"rettap dnif ton did( 0
tluser tpecxe =! )LLUN =! )nrettap ,enil(rtsrts(
:era seitilibissop ehT .enil hcae ni nrettap deificeps eht rof skool tapf
.LLUN snruter )R&K 561 egap( stegf litnu emit a ta enil a sdaer tI
.margorp niam lanigiro eht ni edoc eht ot ralimis si t ap f noitcnuf eht fo tsoM
.tap f sekovni ti ,esac rehtie nI .elif deman a snepo ti
,esiwrehtO .tupni dradnats eht sesu ti ,nrettap eht wollof ton od seman elif fI
.nrettap eht-tnemugra erom eno tsael ta stcepxe ti ,taht retfA .)R&K 711
egap( 5 retpahC ni sa stnemugra lanoitpo eht sessecorp margorp niam ehT
}
}
}
;)onenil ," :d4%"(ftnirp
/* rebmun enil tnirp */ )rebmun( fi
;)emanf ," - s%"(ftnirp
/* eman elif a evah */ )emanf*( fi
{ )tpecxe =! )LLUN =! )nrettap ,enil(rtsrts(( fi
;onenil++
{ )LLUN =! )pf ,ENILXAM ,enil(stegf( elihw
;0 = onenil gnol
;]ENILXAM[enil rahc
{
)rebmun tni ,tpecxe tni ,nrettap* rahc ,emanf* rahc ,pf* ELIF(tapf diov
/* nrettap dnif :tapf */
}
;0 nruter
}
;)rebmun ,tpecxe ,nrettap ,vgra* ,pf(tapf
/* denepo neeb sah elif deman */ { esle
581
}
;)++onegap ,emanf(gnidaeh = onenil
;)"f¥" ,tuodts(ftnirpf
{ )1 == onenil( fi
{ )LLUN =! )pf ,ENILXAM ,enil(stegf( elihw
;)++onegap ,emanf(gnidaeh = onenil
;]ENILXAM[enil rahc
;1 = onegap ,onenil tni
{
)emanf* rahc ,pf* ELIF(tnirpelif diov
/* emanf elif tnirp :tnirpelif */
}
;0 nruter
}
;)pf(esolcf
;)vgra* ,pf(tnirpelif
{ esle
}
;)1(tixe
;)vgra* ,"n¥s% nepo t’nac :ftnirp" ,rredts(ftnirpf
{ )LLUN == ))"r" ,vgra++*(nepof = pf(( fi
)0 > cgra--( elihw
/* )s(elif tnirp */ esle
;)" " ,nidts(tnirpelif
/* tupni dradnats tnirp :sgra on */ )1 == cgra( fi
;pf* ELIF
{
)][vgra* rahc ,cgra tni(niam
/* egap wen a no eno wen hcae - selif tnirp :tnirp */
;)tni ,* rahc(gnidaeh tni
;)* rahc ,* ELIF(tnirpelif diov
/* egap eno no senil # mumixam */ 66 EGAPXAM enifed#
/* enil eno fo ezis mumixam */ 001 ENILXAM enifed#
/* egap fo daeh ta senil # mumixam */ 5 RDHXAM enifed#
/* egap mottob ta senil # mumixam */ 3 TOBXAM enifed#
>h.bildts< edulcni#
>h.oidts< edulcni#
.elif hcae rof tnuoc egap gninnur a dna eltit a htiw
,egap wen a no eno wen hcae gnitrats ,selif fo tes a tnirp ot margorp a etirW
)R&K 561 egap( :8-7 esicrexE
681
.egap eht fo mottob eht ta senil knalb fo rebmun eht si TOBXAM
.egap
eht fo pot eht ta senil RDHXAM era ereht taht os sretcarahc enilwen hguone
stup neht rebmun egap dna eman elif eht stnirp g n 1 daeh noitcnuf ehT
.elif hcae fo egap
tsal eht fo dne eht ta deef mrof a tup osla eW .anen i 1 steser dna ,gnidaeh
wen a ,deef mrof a stup tnirpelif ,1 ot lauqe si onenil nehW .EGAPXAM
si htgnel egap ehT .egap a no senil fo rebmun eht stnuoc a n enil elbairav ehT
.deef mrof eht si

retcarahc ehT
.senil stnirp dna sdaer tnirpelif
.)tupni dradnats eht si elif eht nehw gnirts ytpme na( eman elif eht ot retniop
a dna elif nepo na ot retniop a :stnemugra owt sekat tnirpelif noitcnuf ehT
.)R&K 361 egap( tac ot ralimis si margorp ehT
}
;nl nruter
;)"n¥" ,tuodts(ftnirpf
)RDHXAM < ++nl( elihw
;)onegap ,emanf ,"n¥d% egap s%" ,tuodts(ftnirpf
;)"n¥n¥" ,tuodts(ftnirpf
;3 = nl tni
{
)onegap tni ,emanf* rahc(gnidaeh tni
/* senil knalb hguone dna gnidaeh tup :gnidaeh */
}
/* elif eht retfa tceje egap */ ;)"f¥" ,tuodts(ftnirpf
}
;1 = onenil
)TOBXAM - EGAPXAM > onenil++( fi
;)tuodts ,enil(stupf
781
si noitulos elbissop enO .stluser
tcerrocni ot sdael p retniop eht fo tnemercni dnoces detcepxenu siht yllamroN
.ecno detaulave si noitcnuf eht ot tnemugra eht esuaceb
noitcnuf a si reppusi nehw neppa h ton lliw tnemercni dnoces siht taht
etoN .eciwt p retniop eht tnemercni lliw ,p* fo eulav eht no gnidneped ,hcihw
;0 : 1 ? )'Z' =< )++p*( && 'A' => )++p*((
otni sdnapxe orcam ahT
...
))++p*(reppusi( fi
;"gnirts a si sihT" = p* rahc
,elpmaxe roF
.eciwt detaulave
si tnemugra eht fi melborp laitnetop eht si dnim ni peek ot gniht rehtonA
.dekovni si ti emit yreve enil ni dednapxe si orcam eht esuaceb ecaps erom
sesu ti dna llac noitcnuf eht fo daehrevo on si ereht esuaceb emit sevas tI
.ecaps erom sesu dna emit sevas reppusi fo noisrev sihT
0 : 1 ? )'Z' =< )c( && 'A' => )c(( )c(reppusi enifed#
.ecaps sevas reppusi fo noisrev sihT .)eslaf( 0 snruter ti esiwrehto ,)eurt(
1 snruter ti srettel esac reppu IICSA eht fo egnar eht nihtiw si retcarahc eht fI
.retcarahc a stset taht noitcurtsnoc esle-fi elpmis a si reppusi fo noisrev sihT
}
;0 nruter
esle
;1 nruter
)'Z' =< c && 'A' => c( fi
{
)c rahc(reppusi tni
/* rettel esac reppu na si c fi )eurt( 1 nruter :reppusi */
.seitilibissop htob erolpxE
. emit evas ot ro ecaps evas ot detnemelpmi eb nac reppusi ekil snoitcnuF
)R&K 861 egap( :9-7 esicrexE
881
.>h.epytc< ni rewolot dna reppuot sorcam eht era selpmaxE .ecno
naht erom tnemugra eht etaulave yam taht sorcam fo erawa eb ot evah uoY
;++p
...
))p*(reppusi( fi
;"gnirts a si sihT" = p* rahc
981
;n tni
{
)dfo tni ,dfi tni(ypocelif diov
/* dfo ot dfi elif ypoc :ypocelif */
}
;0 nruter
}
;)df(esolc
;)1 ,df(ypocelif
{ esle
;)vgra* ,"s% nepo t'nac:tac"(rorre
)1- == ))YLNODR_O ,vgra++*(nepo = df((fi
)0 > cgra--(elihw
esle
;)1 ,0(ypocelif
/* tupni dradnats ypoc :sgra on */ )1 == cgra(fi
;)dfo tni ,dfi tni(ypocelif diov
;df tni
{
)][vgra* rahc,cgra tni(niam tni
/* esolc/nepo/etirw/daer - selif etanetacnoc :tac */
;)...,tmf* rahc(rorre diov
>h.ltncf<edulcni#
>h.oidts<edulcni#
.snoisrev owt eht fo sdeeps evitaler eht enimreted ot stnemirepxe mrofreP
.stnelaviuqe yrarbil dradnats rieht fo daetsni
esolc dna ,nepo ,etirw ,daer gnisu 7 retpahC morf tac margorp eht etirweR
)R&K 471 egap( :1-8 esicrexE
ecafretnI metsyS XINU ehT .8 retpahC
091
.R&K 7 retpahC ni noisrev lanigiro eht sa tsaf sa eciwt tuoba si noisrev sihT
.R&K 471 egap no noitcnuf eht si rorre
.derrucco sah rorre na esiwrehto ,setyb n setirw etirw noitcnuf ehT
.rorre na setacidni 1- a dna elif
fo dne setacidni 0 a ;srorre on era ereht 0 naht retaerg si tnuoc etyb eht elihW
.daer yllautca sretcarahc eht fo tnuoc etyb a snruter daer
.dfi rotpircsed elif eht gnisu sretcarahc ZISFUB sdaer ypocelif noitcnuf ehT
.srucco rorre na fi 1-
a snruter ti ;)regetni na( rotpircsed elif a snruter dna gnidaer rof elif a snepo
)1- == ))YLNODR_O ,vgra++*(nepo = df(( fi
tnemetats ehT
}
;)"rorre etirw:tac"(rorre
)n =! )n ,fub ,dfo(etirw( fi
)0 > ))ZISFUB ,fub ,dfi(daer = n(( elihw
;]ZISFUB[fub rahc
191
}
;pf nruter
}
;1 = etirw_si.galf>-pf
;0 = daer_si.galf>-pf
/* etirw */ { esle }
;0 = etirw_si.galf>-pf
;1 = daer_si.galf>-pf
/* daer */ { )'r' == edom*( fi
;0 = rre_si.galf>-pf
;0 = foe_si.galf>-pf
;1 = fub_si.galf>-pf
;0 = fubnu_si.galf>-pf
;LLUN = esab>-pf
;0 = tnc>-pf
;df = df>-pf
;LLUN nruter
/* eman ssecca t'ndluoc */ )1- == df( fi
;)0 ,YLNODR_O ,eman(nepo = df
esle }
;)2 ,L0 ,df(keesl
;)SMREP ,eman(taerc = df
)1- == ))0 ,YLNORW_O ,eman(nepo = df(( fi
{ )'a' == edom*( fi esle
;)SMREP ,eman(taerc = df
/* elif etaerc */ )'w' == edom*( fi
;LLUN nruter
/* stols eerf on */ )XAM_NEPO + boi_ => pf( fi
/* tols eerf dnuof */ ;kaerb
)0 == ))ETIRW_ | DAER_( & galf>-pf(( fi
)++pf ;XAM_NEPO + boi_ < pf ;boi_ = pf( rof
;LLUN nruter
)'a' =! edom* && 'w' =! edom* && 'r' =! edom*( fi
;pf* ELIF
;df tni
{
)edom* rahc ,eman* rahc(nepof* ELIF
/* srehto ,puorg ,renwo rof WR */ 6660 SMREP enifed#
"h.sllacsys" edulcni#
>h.ltncf< edulcni#
.deeps noitucexe dna ezis edoc erapmoC
.snoitarepo tib ticilpxe fo daetsni sdleif htiw fubllif_ dna nepof etirweR
)R&K 871 egap( :2-8 esicrexE
291
:rehtegot de'RO era ETIRW_ dna DAER_ seulav eht
i k eerb
)0 == ))ETIRW_ | DAER_( & galf>-pf(( fi
tnemetats eht nI
;}
;1 : rre_si dengisnu
;1 : foe_si dengisnu
;1 : fub_si dengisnu
;1 : fubnu_si dengisnu
;1 : etirw_si dengisnu
;1 : daer_si dengisnu
{ dleif_galf tcurts
:sdleif tib fo smret ni denifeder si galf elbairav ehT
;galf tni
si fuboi_ fo
srebmem eht fo enO .R&K 671 egap no sraeppa fuboi_ tcurts rof fedepyt ehT
}
;++rtp>-pf* )rahc dengisnu( nruter
}
;FOE nruter
;0 = tnc>-pf
;RRE_ =| galf>-pf
esle
;FOE_ =| galf>-pf
)1- == tnc>-pf( fi
{ )0 < tnc>-pf--( fi
;)ezisfub ,rtp>-pf ,df>-pf(daer = tnc>-pf
;esab>-pf = rtp>-pf
/* reffub teg t'nac */ ;FOE nruter
)LLUN == ))ezisfub(collam )* rahc( = esab>-pf(( fi
/* tey reffub on */ )LLUN == esab>-pf( fi
;ZISFUB : 1 ? )FUBNU_ & galf>-pf( = ezisfub
;FOE nruter
)DAER_ =! ))RRE_FOE_|DAER_(&galf>-pf(( fi
;ezisfub tni
{
)pf* ELIF(fubllif_ tni
/* reffub tupni llif dna etacolla :fubllif_ */
391
)DAER_ =! ))RRE_|FOE_|DAER_( & galf>-pf(( fi
detceted
neeb sah rorre na ro ,deneppah ydaerla elif fo dne na ,gnidaer rof nepo ton
saw elif eht :snoitautis gniwollof eht rof FOE na snruter fubllif _ noitcnuf ehT
.ylralimis segnahc fubllif _ noitcnuf ehT
}
;1 = etirw_si.galf>-pf
;0 = daer_si.galf>-pf
{ esle }
;0 = etlrw_si.galf>-pf
;1 = daer_si.galf>-pf
{ )'r' == edom*( fi
:1 ot tes si tib
etirw_si eht ,ton fI .1 ot tes si deer_si tib eht ,'r' si edom eht fi ,sdleif tib htiW
.ETIRW_ ot galf
stes ti esiwrehto ,DAER_ ot galf stes ti ,'r' si ti fI .edom ot gnidrocca galf stes
;ETIRW_ : DAER_ ? )'r' == edom*( ? galf>-pf
,txeN
;0 = rre_si.galf>-pf
;0 = foe_si.galf>-pf
;1 = fub_si.galf>-pf
;0 = fubnu_si.galf>-pf
:stib eht stes ylticilpxe noitacifidom txen ehT
;kaerb
)0 == etirw_si.galf>-pf && 0 == deer_si.galf>-pf( fi
:noitidnoc siht rof tset ylticilpxe sdleif tiB
.etirw ro daer rof desu gnieb ton si boi_ ni yrtne na taht seifirev tI
.)etirw ron daer rehtien( ffo
era galf fo stib redro rewol htob nehw eurt si tnemetats fi eht taht snaem sihT
tluser 11
yranib 01 | 10
latco 20 | 10
)ETIRW_ | DAER_(
491
.noitucexe nwod wols yam dna tnedneped enihcam era sdleif tiB
.rewols
erew snoitcnuf eht dna regral saw noitcnuf deifidom eht fo ezis edoc ehT
;1 = rre_si.galf>-pf
esle
;1 = foe_si.galf>-pf
semoceb
;RRE_ =| galf>-pf
esle
;FOE_ =| galf>-pf
d nA
;ZISFUB : 1 ? )1 == fubnu_si.galf>-pf( = ezisfub
ot segnahc
;ZISFUB : 1 ? )FUBNU_ & galf>-pf( = ezisfub
,txeN
)1 == rre_si.galf>-pf
|| 1 == foe_si.galf>-pf
|| 0 == daer_si.galf>-pf( fi
:sdleif tib htiw detset si noitidnoc sihT
591
)(hsulff tni
/* pf elif htiw detaicossa reffub hsulf - hsulff */
}
;cr nruter
}
;)ETIRW_ | DAER_(~ =& galf>-pf
;LLUN = esab>-pf
;0 = tnc>-pf
;LLUN = rtp>-pf
/* reffub detacolla eerf */ ;)esab>-pf(eerf
/* ? hsulf ot gnihtyna */ { )FOE =! ))pf(hsulff = cr(( fi
/* edoc nruter */ ;cr tni
{
)pf* ELIF(esolcf tni
/* elif esolc - esolcf */
}
;x nruter
;1 - ezisfub = tnc>-pf
/* rahc tcerruc evas */ ;x)rahc( = ++rtp>-pf*
/* reffub fo gninnigeb */ ;esab>-pf = rtp>-pf
}
}
/* FOE nruter :rorre */ ;FOE nruter
;RRE_ =| galf>-pf
{ )cn =! )cn ,esab>-pf ,df>-pf(etirw( fi
;esab>-pf - rtp>-pf = cn
/* stsixe ydaerla reffub */ { esle }
}
/* reffub teg t’nac */ ;FOE nruter
;RRE_ =| galf>-pf
{ )LLUN == )eizfub(collam)* rahc( = esab>-pf(( fi
/* tey reffub on */ { )LLUN == esab>-pf( fi
;ZISFUB : 1 ? )FUBNU_ & galf>-pf( = ezisfub
}
/* retniop dilavni :rorre */ ;FOE nruter
{ )XAM_NEPO + boi_ => pf || boi_ < pf( fi
/* colla reffub fo ezis */ ;ezisfub tni
/* hsulf ot srahc fo */ ;cn dengisnu
{
)pf* ELIF ,x tni(fubhsulf_ tni
.esolcf dna ,hsulff ,fubhsulf_ etirw dna ngiseD
)R&K 971 egap( :3-8 esicrexE
691
.cr snruter neht ,tnc dna rtp steser neht hsulff .gnitirw
rof nepo saw elif eht fi fubhsulf_ sllac dna retniop elif dilav a rof skcehc hsulff
.tsixe srorre on fi 0 si edoc nruter ehT .tols eerf a ni seulav sselgninaem
retnuocne ton lliw nepof taht os erutcurts fuboi_ eht fo srebmem steser esolcf
.sretcarahc emos hsulf ot yrassecen eb
thgim ti gnitirw rof denepo saw elif eht fI .hsulff sekovni esolcf noitcnuf ehT
.devas tsuj retcarahc eht fo esuaceb ezis reffub eht
naht ssel eno neht si )tnc>-pf( reffub eht ni sretcarahc elbissop fo rebmun ehT
;x )rahc( = ++rtp>-pf*
:reffub eht ni tnemugra eht evas ot si pets txen ehT
.dehsulf era sretcarahc sti neht ,stsixe reffub eht fI
.)R&K 871 egap( fubhsulf_ ni sa detacolla si eno ,tey reffub on si ereht fI
;FOE nruter
)ETIRW =! ))RRE_ | ETIRW_( & galf>-pf(( fi
:derrucco
sah rorre na ro gnitirw rof nepo ton saw elif eht fi FOE na snruter fubhsulf_
}
;cr nruter
;ZISFUB : 1 ? )FUBNU_ & galf>-pf( = tnc>-pf
;esab>-pf = rtp>-pf
}
;)pf ,0(fubhsulf_ = cr
{ )ETIRW_ & galf>-pf( fi
}
/* retniop dilavni :rorre */ ;FOE nruter
{ )XAM_NEPO + boi_ => pf || boi_ pf( fi
;0 = cr tni
{
791
)1 == nigiro( fi
:reffub eht ni ydaerla sretcarahc
eht tnuocca otni sekat keesf ,noitisop tnerruc eht morf tesffo eht erusaem oT
.)elif eht fo dne eht morf detnuoc si tesffo eht ,2 nigiro ;elif
eht fo gninnigeb eht morf detnuoc si tesffo eht ,0 nigiro :era sesac rehto eht(
noitisop tnerruc eht
morf detnuoc si tesffo eht ,1 si nigiro eht dna gnidaer rof nepo si elif eht nehW
.gnitirw
rof nepo si ti ro gnidaer rof nepo si elif eht : keesf ni snoitautis owt era erehT
.srucco rorre na nehw 1- ot tes si tI .edoc nruter eht sniatnoc cr elbairav ehT
}
;0 : 1- ? )1- == cr( nruter
}
;)nigiro ,tesffo ,df >- pf( keesl = cr
/* ? tey srorre on */ )1- =! cr( fi
;1- = cr
)cn =! )cn ,esab>-pf ,df>-pf(etirw( fi
)0 > )esab>-pf - rtp>-pf = cn(( fi
{ )ETIRW_ & galf>-pf( fi esle }
/* dereffub sretcarahc on */ ;0 = tnc>-pf
;)nigiro ,tesffo ,df>-pf(keesl = cr
/* reffub eht ni srahc rebmemer */ ;tnc>-pf =- tesffo
/* ? noitisop tnerruc morf */ )1 == nigiro( fi
{ )DAER_ & galf>-pf( fi
/* edoc nruter */ ;0 = cr gnol
/* hsulf ot sretcarahc fo # */ ;cn dengisnu
{
)nigiro tni ,tesffo gnol ,pf* ELIF(keesf tni
/* retniop elif a htiw kees :keesf */
"h.sllacsys" edulcni#
.yrarbil eht fo snoitcnuf rehto eht rof enod gnireffub
eht htiw ylreporp setanidrooc keesf ruoy taht erus ekaM .keesf etirW
.noitisop a ton ,sutats tni na si eulav nruter eht dna
rotpircsed elif a fo daetsni retniop elif a si pf taht tpecxe keesl ot lacitnedi si
)nigiro tni ,tesffo gnol ,pf* ELIF(keesf tni
noitcnuf yrarbil dradnats ehT
)R&K 971 egap( :4-8 esicrexE
891
.skees reporp rof 0 snruter keesf noitcnuf ehT
;)nigiro ,tesffo ,df>-pf(keesl = cr
)1- =! cr( fi
:keesl sllac keesf ,srorre on era ereht fI
;1- = cr
)cn =! )cn ,sab>-pf ,df>-pf(etirw( fi
)0 > )eseb>-pf - rtp>-pf = cn(( fi
:yna fi sretcarahc dereffub sehsulf tsrif keesf ,gnitirw rof nepo si elif eht nehW
;0 = tnc>-pf
;)nigiro ,tesffo ,df>-pf(keesl = cr
:sretcarahc dereffub eht sdracsid dna keesl sekovni neht keesf
;tnc>-pf =- tesffo
991
.R&K 281 egap no sraeppa klawrid noitcnuf ehT
.uoy ot
tnacifingis si tahw no sdneped ti―noitamrofni erom tnirp ot esoohc yam uoY
.eman elif eht dna ,ezis elif eht ,elif eht ot sknil fo rebmun
eht ,latco ni edom elif eht ,rebmun edoni eht tnirp ot ezisf deifidom eW
}
;)eman,ezis_ts.fubts,kniln_ts.fubts
,edom_ts.fubts,oni_ts.fubts ,"n¥s% dl8% o6% u5%"(ftnirp
;)ezisf,eman(klawrid
)RIDFI_S == )TMFI_S & edom_ts.fubts((fi
}
;nruter
;)eman,"n¥ s% ssecca t'nac :ezisf",rredts(ftnirpf
{ )1- == )fubts&,eman(tats(fi
;fubts tats tcurts
{
)eman* rahc(ezisf diov
/* "eman" elif fo ezis dna sknil,edom # edoni tnirp :ezisf */
;))* rahc()ncf*( diov,* rahc(klawrid diov
;)* tats tcurts,* rahc(tats tni
"h.tnerid" edulcni#
/* tats yb denruter erutcurts */ >h.tats/sys< edulcni#
/* sfedepyt */ >h.sepyt/sys< edulcni#
/* etirw dna daer rof galf */ >h.ltncf< edulcni#
>h.gnirts< edulcni#
>h.oidts< edulcni#
.yrtne
edoni eht ni deniatnoc noitamrofni rehto eht tnirp ot margorp ezisf eht yfidoM
)R&K 481 egap( :5-8 esicrexE
002
.aera egarots
dezilaitini dna detacolla eht fo gninnigeb eht ot retniop a snruter collac
;0 = ++p*
)++i ;bn < i ;0 = i( rof
:0 ot dezilaitini era detacolla setyb bn eht ,lufsseccus saw noitacolla eht fI
.aera egarots detacolla siht fo gninnigeb eht rebmemer
q dna p sretniop ehT .setyb bn fo aera egarots a ot retniop a snruter collam
;ezis = n = bn
:bn si detacolla eb ot
setyb fo rebmun latot ehT .e zis ezis fo stcejbo n setacolla collac noitcnuf ehT
}
;q nruter
;0 = ++p*
)++i ;bn< i ;0 = i(rof
)LLUN =! ))bn(collam = q = p((fi
;ezis * n = bn
;q*,p* rahc
;bn,i dengisnu
{
)ezis dengisnu,n dengisnu(collac* diov
/* ezis ezis fo stcejbo n etacolla :collac */
.ti gniyfidom yb ro collam gnillac yb ,collac etirW
.orez ot dezilaitini egarots eht htiw ,ezis ezis
fo stcejbo n ot retniop a snruter )ezis ,n(collac noitcnuf yrarbil dradnats ehT
)R&K 981 egap( :6-8 esicrexE
102
;LLUN nruter
)LLUN == ))stinu(erocerom = p(( fi
/* tsil eerf dnuora depparw */ )peerf == p( fi
}
;)1+p()* diov( nruter
;)pverp(peerf
}
;stinun = ezis.s>-p
;ezis.s>-p =+ p
;stinun =- ezis.s>-p
{ esle
;rtp.s>-p = rtp.s>-verp
)stinun == ezis.s>-p( fi
{ )tinun => ezis.s>-p(fi
{ )rtp.s>- p = p,p = pvverp ; ; rtp.s>-pverp = p( rof
}
;0 = ezis.s.esab
;esab& = pverp = peerf = trp.s.esab
{ )LLUN == )peerf = pverp(( fi
;1+ )redaeH(foezis / )1- )redaeH(foezis + etybn( = stinun
}
;LLUN nruter
;)SETYBXAM,"n¥setyb u% naht erom etacolla t'nac :colla"
,rredts(ftnirpf
/* SETYBXAM naht erom ton */ { )SETYBXAM > setybn( fi
;stinun dengisnu
;)dengisnu(erocerom* redaeH citats
;pverp* ,p* redaeH
{
)setybn dengisnu(collam* diov
/* rotacolla egarots esoprup lareneg :collam */
/* tsil eerf fo trats*/ ;LLUN = peerf* redaeH citats
/* detrats teg ot tsil ytpme */ ;esab redaeH citats
/* detacolla stinu fo rebmun xam */ ;collaxam dengisnu citats
04201)dengisnu( SETYBXAM enifed#
"h.sllacsys" edulcni#
.gnikcehc rorre htiw sniap erom ekat yeht os senituor eseht evorpmI
.dleif ezis dilav a sniatnoc eerf ot deksa si ti kcolb eht taht
seveileb eerf ;ytilibisualp sti gnikcehc tuohtiw tseuqer ezis a stpecca collam
)R&K 981 egap( :7-8 esicrexE
202
.metsys ruoy rof tseb
skrow taht SETYBXAM rof eulav a tceleS .SETYBXAM tnatsnoc yrartibra
emos tsniaga detseuqer setyb fo rebmun eht skcehc noitcnuf collam ehT
}
;p = peerf
;pb = rtp.s>-p
esle }
;rtp.s>-pb = rtp.s>-p
;ezis.s>-pb =+ ezis.s>-p
/* rbn rewol ot nioj */ { )pb == ezis>-p + p( fi
;rtp.s>-p = rtp.s>-pb
esle }
;rtp.s>-rtp.s>-p = rtp.s>-pb
;ezis.s>-rtp.s>-p =+ ezis.s>-pb
/* rbn reppu ot nioj */ { )rtp.s>-p == ezis>-pb + pb( fi
/* anera fo dne ro trats ta kcolb deerf */ ;kaerb
))rtp.s>-p < pb || p > pb( && rtp.s>-p => p( fi
)rtp.s>-p = p ;)rtp.s>-p < pb && p > pb(! ;peerf = p( rof
/* redaeh kcolb ot tniop */ ;1 - pa)* redaeH( = pb
;p* ,pb* redaeH
{
)pa* diov(eerf diov
/* tsil eerf ni pa kcolb tup :eerf */
}
;peerf nruter
;))1+pu()* diov((eerf
;un = ezis.s>-pu
;pc )* redaeH( = pu
;LLUN nruter
/* lla ta ecaps on */ )1- )* rahc( == pc( fi
;))redaeH(foezis * un(krbs = pc
;COLLAN = un
)COLLAN < un( fi
;pu* redaeH
;)tni(krbs* ,pc* rahc
{
)un dengisnu(erocerom* redaeH citats
/* yromem erom rof metsys ksa :erocerom */
/* tseuqer ot stinu# muminim */ 4201 COLLAN enifed#
}
}
302
.detacolla kcolb tsegral eht naht regral
ton si ti dna 0 ton si ezis fo eulav eht taht yfirev nac eerf noitcnuf eht yaw sihT
.raf os desu kcolb tsegral eht fo ezis eht
srebmemer collaxam elbairav citats eht ,kcolb wen a setacolla erocerom nehW
402
.stinu )redaeH(foezls ni kcolb eht fo ezis
eht snruter ti esiwrehto ,llams oot si kcolb eht fi 0 snruter eerfb enituor ehT
.) *
diov( epyt ot ti tsac dna ,seod erocerom sa ,)1+ph( esu ew ,aera redaeh eht tsap
tsuj eb ot retniop eht stcepxe eerf ecniS .eerf noitcnuf eht sllac pets tsal ehT
;)redaeH(foezis / n = ezls.s>-ph
:si )redaeH(foezis fo stinu ni kcolb eht fo ezis ehT
;p )* redaeH( = ph
:ph ot dengissa dna epyt redaeH ot tsac si p retniop ehT
.0 snruter ti esiwrehto
,)redaeH(foezis tsael ta si ezis sti fi ylno kcolb eht eerf lliw tI .n sretcarahc
fo rebmun a dna p retniop a :stnemugra owt sekat eerfb enituor ehT
}
;sedils.s>-on nruter
;))1+ph()* diov((eerf
;)redaeH(foezis / n = ezis.s>-ph
;p)* redaeH( = ph
/* lufesu eb ot llams oot */ ;0 nruter
))redaeH(foezis < n(fi
;ph* redaeH
{
)n dengisnu ,p* rahc(eerfb dengisnu
"h.sllacsys" edulcni#
.emit
yna ta tsil eerf eht ot yarra lanretxe ro citats a dda nac resu a ,eerfb gnisu yB
.eerf dna collam yb deniatniam tsil eerf eht otni
sretcarahc n fo p kcolb yrartibra na eerf lliw taht )n ,p(eerfb enituor a etirW
)R&K 981 egap( :8-8 esicrexE

You might also like