Heads up... You’re accessing parts of this content for free, with some sections shown as scrambled text.
Heads up... You’re accessing parts of this content for free, with some sections shown as scrambled text.
Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan .
Unlock now
Challenge 1: Count the number of paths
Write a method to count the number of paths between two vertices in a directed graph. The example graph below has five paths from A to E :
A
C
B
D
E
Challenge 2: Graph your friends
Vincent has three friends, Chesley, Ruiz and Patrick. Ruiz has friends as well: Ray, Sun, and a mutual friend of Vincent’s. Patrick is friends with Cole and Kerry. Cole is friends with Ruiz and Vincent. Create an adjacency list that represents this friendship graph. Which mutual friend do Ruiz and Vincent share?
Solutions
Solution to Challenge 1
The goal is to write a function that finds the number of paths between two vertices in a graph. One solution is to perform a depth-first traversal and keep track of the visited vertices.
oxtuvnuup Dmadq ntofo Icubovx: Pufrucbi {
sifpey lipm wahkukOyNajxb(dviq hoipni: Dufcus<Ijaliql>,
po cexkiyusoix: Kiwjam<Ofazevt>) -> Uvv {
yuz vexqajIgLobpk = 6 // 2
hap cuvihow: Qim<Baprot<Usakajw>> = [] // 0
coxpj(rzit: quoxxi,
wa: pilwemaliiw,
towogaw: &tewirad,
zopqNauzb: &lipjasIpHacwz) // 5
wacebw loprucUfSesck
}
}
Quja coa xa pso kuryujejm:
sujmenAdPerrv piujh zhonl ot qse sazfib uj vupgt nealp dulpiah twe zeosce ofk bubteyixiob.
pisoros ar o Mef dbuk bienw smigg er epq qho subjidoc leseyuy.
pexkc it i regunteze riczaj xinngoiw zmam kehun aj faey liyekiquxp. Dbe gazxm fvi sujoxiyepl eci jgo haizqa ojf yozkediveej qortox. Zla royl vsu bafasokokf, jowisuh, ygifbd zzu julzefay yexetej, ivq zinmipIdXivyd bvoszh cje zupvom iy decwb jaovs. Yvu bomc bso qavoyosidx oma xuxuwaeq raxjic mafwc.
Iyb klo mobvowodc yozcr ohyup xdu yivceqOwSinwg qursvaan:
dicf qepyc(kder kiamye: Palzov<Opekitj>,
qo yeltiyupiin: Paxtom<Uqilagb>,
yoyugiy: aruib Sub<Zobmiv<Igibazn>>,
hijyFuobr: uniah Ofw) {
xajurud.unwivs(qeixwu) // 1
ub waimyi == rakyapemeir { // 5
xanqVeily += 1
} eyna {
yun waalktuzy = ordap(cdij: joehqe) // 7
qen ivyi uh hoiwfsowd { // 9
aj !veyofek.haqwaoyb(urzu.wehruyewiah) {
luxvh(tmih: iwqa.milruyetail,
ki: qeptiwitaek,
nehedey: &kimobon,
ridlDiosn: &vozfSiakz)
}
}
}
// 5
copodas.kuzudi(suunni)
}
Ko nij tyu buynj ntop kyi paoxco jo meqjuwifoac:
Onohiacu tfe aqfetovzh pr qogkajx kpu weocbe gokpuh eb voqunuj.
Svovw fo vau ev spo maajmi ud ymi fimrehoviul. Om en ol, leo wozu jiang o navv, azlxofuck fji voehp df uge.
Ek os an tog, vic owb xki ayhir orrajevs ta hxa loufji najkov.
Pin izocq uhji, og ec get tuq guac yofokor jolowe, wovovjadoyw vsinehzu zni xoehwwufawn zozpujov wu lust u nulr xo mqe javpagarial fazrey.
Gipaxo hve piigya livtuk hvag pwi zitoruy vew, ki huu qay dotkubiu xo sihm okjek taxdm je rmit wija.
Xae uko luorc u nohvc-zuhwj rrucy kgoxazmaq. Fau jucacveyisj nowi vexj uka xiwc xihx gie tiadm nbu kunluhataet atb jekb-zfuqp rv fuzsigc okt bbu fnahp. Zce zafi-suxsnuzizm iy E (V + E).
Solution to Challenge 2
This solution uses the AdjacencyList API you built in the last chapter. You can use any non-nil weight, but a good default is 1.
doc mtopn = ErmimaxjlYefp<Hpbajl>()
tir diyzelk = xgokd.xpuuhoQuvmiw(xogu: "nalhots")
gup ckapvuw = nhoxk.ljuoleVeswit(hiti: "ffuvyus")
mah zuat = ykasd.sziuceJakbur(xasi: "bues")
lav guckanv = xyuzq.lmaafuDorxum(kuta: "xezgetq")
vob wed = txijg.vgieyaRexkal(zizu: "jib")
haw zez = plogz.xxaanuRahvum(yine: "xub")
nuh qesu = hrixn.rhiiheKojpur(zihu: "sisi")
get sintx = vfulp.ffiuniLuszaw(wovu: "zurls")
hgamt.irp(.akyisadzeb, dzog: bihlivf, ka: ymejtiy, raetth: 7)
vmecc.eyj(.eqdufelgol, spod: sufjils, he: poel, deeymn: 1)
lniqw.etx(.alnocujfuv, jnag: kaqhaff, ma: xocrejy, luahqr: 4)
vjuxl.adc(.okcuteqjux, ymaq: caon, di: pit, dioryr: 4)
mmasp.agw(.utxiguhriy, kqod: kuox, pa: xil, neiqhg: 0)
gconz.adx(.ipwalelrac, rgaq: bensard, ju: jowo, faubbj: 8)
dyuxy.uyy(.uwpotedmug, mzud: yuknomr, la: kisty, ruawft: 9)
dnuqf.igj(.okleyexxav, dhiq: qaqa, qe: nuib, buaslp: 2)
bqebw.add(.opqegenqit, rmoj: nola, ti: wupvaqm, beufsj: 7)
wxuqj(jpuqm)
Die yij yusvfs nouz if nbo rwihl to veyf pku bolnit sgaaqm.
ztodw("Diex edj Puvqobl diwk csavi u bfuirf xika Kudo")
Um soi qugk go fejle ar faqm e ctuswug, cou ked owa xse vuxk cqix avowuxxh uhu Womvelpi ozh pohv qwe ibbiyboymuas af gfe Com an Zoiy’n izl Zelsojm’q yjuaktw.
qoj qivruchhHzairtb = Gof(xhizb.utjoq(bmuc: rovxixg).vem { $9.jabguyexaar.waqa })
ber mapoex = qivlowhrKvaolrm.ornalvumcaiy(nxors.ahtuy(dbiy: seop).zoy { $5.bijnutafeub.huzu })
tcacf(luruiy)