Skip to content

Instantly share code, notes, and snippets.

@paulofreitas
Last active September 30, 2023 17:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paulofreitas/1169990 to your computer and use it in GitHub Desktop.
Save paulofreitas/1169990 to your computer and use it in GitHub Desktop.
Full script for the Google Developer Day '11 Quiz
#!/usr/bin/env python3
# Google Developer Day Quiz
# Written by Paulo Freitas <me@paulofreitas.me>, updated for modern Python
class GooglonLexer(object):
def __init__(self, text: str) -> None:
self.words = text.split(' ')
def get_prepositions(self) -> list[str]:
return list(filter(
lambda word: len(word) == 3 and 'w' not in word and word[-1] in 'bwtnd',
self.words
))
def get_verbs(self) -> list[str]:
return list(filter(
lambda word: len(word) >= 6 and word[-1] in 'bwtnd',
self.words
))
def get_first_person_verbs(self) -> list[str]:
return list(filter(lambda word: word[0] in 'bwtnd', self.get_verbs()))
def get_vocabulary(self) -> list[str]:
return sorted(
set(self.words),
key=lambda word: ['zvqgfrbnjcptlswmxhkd'.index(c) for c in word]
)
def get_distinct_beautiful_numbers(self) -> list[int]:
numbers = map(
lambda word: sum(
'zvqgfrbnjcptlswmxhkd'.index(c) * (20 ** i) for i, c in enumerate(word)
),
self.words
)
return list(set(n for n in numbers if n >= 717326 and n % 3 == 0))
if __name__ == '__main__':
A = GooglonLexer('gwzz rtpqxxh jkvx bwb phf nfjphtz gvthxnl kzqwcdbr npkh bgwdkh jzc zlbfvss btlcffs gtwtnx sflvp wsfrlb txc tbd wzhkrfvf mqx xqfcg nntwgbjb zpwztqmt tcj lvk lqrqbsdc xkr jdpxfnmt mvv bgzbnv thcxktg pxqbxtp zlnnb rphs lvgsp glttt hknhj cgjsf dvcpcclf vcdcr cxlnq npphx pqzggqfz vknnh ksgpm llhvwk xccz rvz rqbjj pdk rttl mtjm ght cxdgwzx hflmfr mprqqxc gdb zdzlsh gqstlmmk tbq xjjx dcktjn pgfhf swkqzwpw fbm shvstdm jccknxq dfnpbzvk mpjzdjgw nlkwhtsl vltd fpl ddjzpxg qdz dpdzjwc lhtcx pqkrt kpmzjrg hqcptm xhmdjb phhvc hfrvt xlvrw mnp zdtjszhp jfndcc dttjtkh nmsgfpg wpxqmkk jhbjwp zzv tvcdbfzj fnq bnkgmr xbpgkk zdfgrg khsngg vqs lrmh ntnr wfznlqw bpzkpkj mklmbvc bztgq txm fnbdjzq klbnlj skjldq sfh rfdlqtlh pjd rmnss twp mgtdjvb nsvr nbwv sprzccbm zgnx jmrwxpn jscdvrn jgxbnjt gbfcndqv bgrgctjz bnc nnkgckj sdrxl jxpsj shkfxk shv spj dfggs jwjsrr kchx fvzftvxg lnvdwmb znsvf tskvvt qkp sst vvwzq zxrjr zdrlqk kgbfpb csxsp fgvz cvr qcxl kkkk rzjn qbrdz fgrj rppjfzt hvmnwf zqst flv sjg hwfgjjs nqpvzj chrldlps chhtlwl rlkgqp cfmzgw mqx zczbdkqd zrgbm whbn mzpwj phssjtq rsmdcfvm lkwghj njhfqrx rjwgmjlv lnkcr psmvbmk jtdd xqkfzr zqvc nsx fjpnkpv kjzqbl gxrj dkscfqq qkm qdscwtt kkghhbjp vrnwkdqb khccwj gbgtmrm khrp ttmzv gxdxrcx vtqctbq skrdk lzkkxzk zhrxgr blkzkxwp qcjrwp qtk sqggt qth jsgphw gpfxhcr cxlm tltklld fdnnptn bncwchtp fwzbm wmkvkt scjm tjpcd vqftx jjcjm qcsgmswx zvfqmp hdvmnjwt xwl ptbx jdqtf mjfq pnpd tncnfnk bbx qnvp xwk smzv hxwfv mjv rlngmhrd hpcvf hsphcvk bftgrtr skpvb jrn tvkjl sczx stsphspn zwjfrtz vlww cjsr wxbqmk nknds npzrv ngjkg vjjk xrhqc klmjqljt fkzdqk pxltppfm gqfwc zftfq xwgk dct ntkjz qxczgq wzr tdg zvb cwcc gzwd htghn sgwwgkgs zmp ljkjsmrf fmfm pzpdjjs rvkqhjdt gjfnfg mgr nznftcf xkhshkl cjz gkw rxzd xfmzsj rfnlnsrp wllpx zbghj gqffnkdp ntjx vblchdx mgsmblz dsdmtm dctqbmpj hct tkshsj ptmb mjrqzz wscrglqc mqzhlct lvpm tfkdbj pntgd glhzc jllvxrfk fmdkp nmkjvv ktsqf nbqlpp nzbdwzb szb qkkfzqds mfslmcm swql bslrzxc qnwq swcqd bpspw bvrnptv pnzv hqnncdqr hxcfjbj kmgj cgmpmwd dsjxw mmwmkwzt kqds lhvk fhrrjmhp hbfhkx mxzmg ndtjndp pdqhgm zthmnvkx hknbkrdj xzbsdb tdsfpgj crpq mqvmfxz rzwgqc sfhrxj rcnl pgnn jbjqn mgvqxv nnvrn hhhnwfw hwxjn wjr tbvvv mlv tqhfwvrr hbgb kpw zxhm vqxbdhfd htgwkmgh zvrzdlpd ktcjrrvk cwjtnc jlndsh jxxhzqz kpxtqq zkc ldqmnzpz pxmmhvn ksp rgs gcnd cntcc wgsv szlwdz nmfqwrhv wqnsnrx rwpgj gzxw gwzn hlcf xtgbqmjx ffbml rpd nkmbqfjb dfbbwkcb xjkddqwc lrgtnzjs pkvhsfmz jxdsxfd xdtb tcqhjqfl xmxc xrglnjpq mbckmdzw cpg clkgzb hdks lzhrrg qdl rfm kdsp rcbpzrw prjxk qzhnf bchl cmpxb sqlclh fzw pjbbbjhz llgmzdl dcnhtgl fwwchn tjhnmbw qrrnlknm xvg rtsvvfv hkqtzk wxgfdcts bhl fnhpj wpknxdks blrzt rqhxwz vctf zzsg zvqdv mdzdx rgf qdnc scg qlq smkpwzxv spsbkk rqf dnhf gnnfv rzhtqmbm ldwhlj rdknt nqm mbv qld jdrswppw fptn srdghs glq vwpncw tjnvm lrbg wff bwxwbkn dtpwxrk ksxbhhtt dlvx lvc bnhhhdm xrl chscm fbjbhqk mtjgrhn fcdb xctdn qcq cxzrw slff pwq szh wgkcrk gcjlfp jtvvpl rmh rxfkwtdz gmgpm vjw mhpqmcm tlxcv nzgwjt fsx jhvfqqxb hbj lcbzts qmlqr xzxxwxb mqjkwpl gxm hxg pdqhvstc mksxnpj cmknbbzk vpft fmh smldmzwc zkvqszc rmgwfdh dwtq pgfscwbf bkqq lmphtjvv tcgr nfgq qdqm hxst kwgbwmdd gpjfstjl xsd lvlmnx hwgpv kmfwz tkxmf ghxrcfgh fjhwn wfnzhfs gshc hrfmqz pmrh sqvvdk qpjmntc gbbqpv dszkf cwvkk vszrqksm pbbwj npdvrm btdgbfmz rwsxmkd wjcl xtbndnzw nnlxj svfm pqtf rgfbpx jfgvvzx hwrmxk bzg lhsbqvjf qbzn bctzvlj mlvkcp qgqwwq nlkl cgznnjwn hmrbvwgs lkckjm ckksrj rvkqkh cgfdl qxxqcrd mkmkzbkc jjqhqr fgb gqcxxqjs mpx vctgfnq lkrxmrk xjcjsg zmc zmgbx ghpgmx gmjlzr cfk wvdfkv qms fxcpvvkp rpnk ftkw brcvnpcb vqtg jpmxnkb nlqb pnzp fgrtk blthqgkz jbthpnj krhfs dfgxxmdk hszdjb rtnctgg slqpzxm dzlzgl tzgqfblf fsd zws hrczvjj gnhs tsxbjk zshwshg xcgcjtx nmjxgxw sxlk ghz mlrgzgk mzvrb xjdtdbrm jhc snrfdd lvsfbf clcmpm pltn xxxl fncbf zbqs xbdnjk nsvll fdrmdd mtzdms svcd mvqstscv lrshsxrr tnzcws rnvdfd klkqkkvt bzz pqtqwzlq')
print('Text A')
print(f' 1. {len(A.get_prepositions())} prepositions')
print(f' 2. {len(A.get_verbs())} verbs')
print(f' 3. {len(A.get_first_person_verbs())} 1st person verbs')
print(f' 4. Vocabulary: {" ".join(A.get_vocabulary())}')
print(f' 5. {len(A.get_distinct_beautiful_numbers())} distinct beautiful numbers')
print()
B = GooglonLexer('hvx fhffb kckg jzjgn hgfc pwmwxll lqrc dlwx qdsft swt hnpdfqhr fjzbfs vlbsdhxf wzvtr nclv xfdvbnlx pckjq hlx dthk qfplrtg xzdsbdhd sxjplcv kxf qcnlphx lnk tqpfdc gbj tvgzn mrgzhmm tqmzmsfk wnzbmjp fqdgd rxcjs nfvwdw ctsdqd rfgtfldp mbq bsvfwtf nckmv zvgzqb bhvmfzgf cdvzgrtw gsfmz rqmnlx mxxknlxw hwjt ddccqzpf tnlnsvvs qmqh sxrg bklv kwfgpnt frqfxgv bkdwgj hlpzftcf xdsnxll bkg xvkwfj wlhvdkcv mzqwfl xczhqt tbpn jxsvnxmz thcwzx vbg vhtkprsg zpntqnr cvhbf nhzk nkbhm zzqcnhhc vvv zfn mxqms ktrcmlm mcdc drzql vvhxvdwb jxqrpgp nbqvr zcggvx gpstnx xvvz wbg chbw nxrd pcjjzlhj cvqm hltszwn krmdrz qjdb wfsf gzkbhkn jlntzhh vkvdl hnwbq gmlnc gmwspw nltrhfg qhzzqsht zjb sprbkzk jqd srcnhqf hkbsvsz qqdz jhslr qqjcjgq bghfvr crzn jzph qxqp zzx mndsh npn wsmxtgs qwsg dgsrbnf sbxhrtp mwtnjjz hhvzpcvt qszshd ppslx plnh qzqxdq mgfvqss qqcksd bcwrhqk crhg hhd blmgxw jhnhsjx wdfjnv csm lvr ggl mvkttk vdj mhfgl vgjc mxvv bcl hcs crx cbzwn mchthc crlb fqlrb wzzvrtff htcpsj bmrsvgxz mrrcc qstzk xvbbzmtw jzmnf tvtchm hvcp pvc ztkhqd rcvwgsqz gww pnlpxps lkjrrqnr hlxmvnj vvb sqk rjkmxbwp qkbdrsz whm vgzrf xmtfkth zsm tddnf vszll mrgs ssjt rzsbbgrz qmhvhjbg bnslx bkkvwgs srbtc spschhml qlrjr lbrb mvbwkkrp plxg jvtxcp bkkjcg lnjrlth npkvmxtr fgvtnnsp rcfpsc kpdhd kvhffxwl fkzlnbhd gqxs bmb jpd skflds jggmbzgr hxgcnxw ldvq lsndwvw ftcg ksnznqr kzjv xphb fcrkxv nzmlqt wfbp tzpc ngpjsc hflwzsrr nnxjfn qgdcqwt rxr qzx svxxl jdrkqv ppzrb jhwzzfrf rdfmnfrp vwbbjl zhgg xsv xvb drrbxjkt kbv stc hhxms jhvt pqlvn bnfjgqsw mnjtgvtq wcxgdqj gtbmjnk fzg rkcmvrbv rjvlp dxkgcn zcmqbx dswcbqw ffnqdg fzfnm wpxrg xglcmz mvbfgvb hwhwl wzl zkh wgjqqq mrs srm jlvcss cmgmzfjp rvsg dbml pcjjckkl hvgk zdxzt frjtkvv ncbcdfhf vqnhflv hhgrcdn grptz hqht pggvmprs djdm nfcxx qqj stn tfrzlprs fnkf jsqbgq btclm snbt kdp kmt hckbrcx xmgtq czzrdrm vqnfc dpcm wphmm hrdhc rrr cgs spws nbddjmg fqnnnqt kzfs jxqlfb xsczb zhfqtsns bwq wnbkbxw xhtnmn jqjr cdzpglkm wtz zssclm htjnhlx jkj xfskbrhw rnqxwmk jrwjj qgdt sfkkj jtn pggccp nzcw lvj qnqlg qvffgnwk xkrbgqjn mbncdn hbzktm cdxzxdg vpqq rqv dlcpgr hbwch nfqq nqcqdvtq gtw wbdqzxv xmtmk ndbq vfxrksl wbzcvkg tpjzp zjbdgss khc fjt njjcdw vvsgtb sxfvrnlv znsqm prlnvrf llgwjnq jgrtqxd mvbfb tdjxdwt llglcxnh fwvkcggz bxzkb xzwx nch mphlsc qgcmpmpc scx gsj nfhtl xlpgxdr gmvhp prhqhs lmlrpbm mznffrn rntmdntf ggm bqqzps kqc mqcpxcss qgbnmw nlfft kkfqjtbt dxvw ndjhmxsl tqp hnr fsxqzvnn zsskzz sjcss zmzq bzxl nhnqvhp pdt lpdkps tpld ssvmqdc lpx pxhwwj rppg nchmnr ltpdm lzjnpnvv qwq kspjct jcr zgg qzrkfnwn nvbwts pcs gflvlv thkl mwk phb psmgxdj gvbnpfzn xpnkmhl jblbzv wmlc jsxwztt skqdjp dhzkwzr hdtmh cjmzq dldnswx gcc pztnplx rcj nkktb phxlv kcbp svnrwvf ccxd qrhzl pgdrg wcsg tmzh fccwnbkq cqdbc rjm xxv bwrv fjfhd cqqqnn kvpqxz dzmmfgfh tklrgtx msj rnd qzvskbzc clkxqf dgjzflnb qpxlksp nbqbppk qgbrwv dpv lgplr gsxghlcc xjkgsk sjm zfhqkjd btg xfgkjgtb fnpmq kcbgblk nbkdmnxw qrhwj vqdrg ssfz clvs hpmtzsq dtbrvqbc smsbrwls hpnm dqdd rrhgzprg hzprmqk scdmh xbjjhtq jrccct kxpmtpmf rpcr jbwxkrbx nbd wdnmp fhpjdc jdw dgsdkxl rvdnzk jkpg hdz cwzdzq nsvtg mgm wbxlvbj xgbd rsrxpr cgfnr kfd fmhp jkwxzwrd pzqn jfjrkgbt lpnnp bflv wzqpmlqj sqtl tpm hjxtzc lzhtcx tfrlgh xbm dxgppk gvjxbwb qffdsrhj pswnr mkwhxklv fzxx kfbz wpfh qlzlh kbwdhn kmdxm pqvv qmfkl cnjzlvb fnldxjq ktbmh kflct mvhwnnl fsnldxzs kslzw ztrsgnb wndkclm cwvm nhhdcxlm hrd llqtt cdsv qzp cjljfc hvgbmc zwlvrv bpzlgbfk tnhkb bntfc frlbhjtt cgtjjl gttgn xxnctn vwc nnqp mhhjfp drxrj ztfp srkzcvs kjmmfnp crxqm bqqncp hmvpxs xmsmhknj tvw wkmtfnbm slpxpbl gbdcncmt zvz wrrnsntf fbqq njgfmk bjk hwrw dzbtbhmm bkk xsndlbgt xrvvf xdl qmbnwhg lhzbtd spwfh nhnc xnrdl hhhpwqq zprphzkb wxhq vbbpmpvv jlm lwzt sgbwts wkl wmprgbfn khzmlzt nckx ckrvmwt ndsfkph pcsqvt jmxccq slzm xpjqnmqs rqxbgck hmtzxw fszvbhbr tnnkb nbm gbbv gztsrb zdfmtp fvdlgg blwqgc dgcrkrfq vlfhqc dmrkxmw zktspk qwhflfhm pwvhkzx sqqn lqhqm ngdgjmxh')
print('Text B')
print(f' 1. {len(B.get_prepositions())} prepositions')
print(f' 2. {len(B.get_verbs())} verbs')
print(f' 3. {len(B.get_first_person_verbs())} 1st person verbs')
print(f' 4. Vocabulary: {" ".join(B.get_vocabulary())}')
print(f' 5. {len(B.get_distinct_beautiful_numbers())} distinct beautiful numbers')
print()
Text A
1. 15 prepositions
2. 68 verbs
3. 15 1st person verbs
4. Vocabulary: zzv zzsg zvqdv zvfqmp zvrzdlpd zvb zqvc zqst zgnx zftfq zrgbm zbqs zbghj znsvf zczbdkqd zpwztqmt zthmnvkx zlbfvss zlnnb zshwshg zwjfrtz zws zmgbx zmc zmp zxrjr zxhm zhrxgr zkvqszc zkc zdzlsh zdfgrg zdrlqk zdtjszhp vvwzq vqftx vqtg vqs vqxbdhfd vrnwkdqb vblchdx vjjk vjw vctgfnq vctf vcdcr vpft vtqctbq vltd vlww vszrqksm vwpncw vknnh qzhnf qgqwwq qrrnlknm qbzn qbrdz qnvp qnwq qcq qcjrwp qcsgmswx qcxl qpjmntc qth qtk qlq qld qmlqr qms qxczgq qxxqcrd qkp qkm qkkfzqds qdz qdqm qdnc qdl qdscwtt gzwd gzxw gvthxnl gqffnkdp gqfwc gqcxxqjs gqstlmmk gbgtmrm gbfcndqv gbbqpv gnnfv gnhs gjfnfg gcnd gcjlfp gpfxhcr gpjfstjl gtwtnx glq glttt glhzc gshc gwzz gwzn gmgpm gmjlzr gxrj gxm gxdxrcx ghz ghpgmx ght ghxrcfgh gkw gdb fzw fvzftvxg fgvz fgrj fgrtk fgb ffbml fbjbhqk fbm fnq fnbdjzq fncbf fnhpj fjpnkpv fjhwn fcdb fptn fpl ftkw flv fsx fsd fwzbm fwwchn fmfm fmh fmdkp fxcpvvkp fhrrjmhp fkzdqk fdrmdd fdnnptn rzjn rzwgqc rzhtqmbm rvz rvkqhjdt rvkqkh rqf rqbjj rqhxwz rgf rgfbpx rgs rfnlnsrp rfm rfdlqtlh rnvdfd rjwgmjlv rcbpzrw rcnl rpnk rppjfzt rphs rpd rtnctgg rtpqxxh rttl rtsvvfv rlngmhrd rlkgqp rsmdcfvm rwpgj rwsxmkd rmgwfdh rmnss rmh rxzd rxfkwtdz rdknt bzz bzg bztgq bvrnptv bgzbnv bgrgctjz bgwdkh bftgrtr brcvnpcb bbx bnc bncwchtp bnhhhdm bnkgmr bctzvlj bchl bpzkpkj bpspw btlcffs btdgbfmz blrzt blthqgkz blkzkxwp bslrzxc bwb bwxwbkn bhl bkqq nzgwjt nzbdwzb nznftcf nqpvzj nqm ngjkg nfgq nfjphtz nbqlpp nbwv nnvrn nntwgbjb nnlxj nnkgckj njhfqrx npzrv npphx npkh npdvrm ntnr ntjx ntkjz nlqb nlkl nlkwhtsl nsvr nsvll nsx nmfqwrhv nmjxgxw nmsgfpg nmkjvv nknds nkmbqfjb ndtjndp jzc jgxbnjt jfgvvzx jfndcc jrn jbjqn jbthpnj jjqhqr jjcjm jccknxq jpmxnkb jtvvpl jtdd jlndsh jllvxrfk jsgphw jscdvrn jwjsrr jmrwxpn jxpsj jxxhzqz jxdsxfd jhvfqqxb jhbjwp jhc jkvx jdqtf jdrswppw jdpxfnmt cvr cgznnjwn cgfdl cgjsf cgmpmwd cfmzgw cfk crpq cntcc cjz cjsr cpg clcmpm clkgzb csxsp cwvkk cwjtnc cwcc cmpxb cmknbbzk cxzrw cxlnq cxlm cxdgwzx chrldlps chscm chhtlwl ckksrj pzpdjjs pqzggqfz pqtqwzlq pqtf pqkrt pgfscwbf pgfhf pgnn prjxk pbbwj pnzv pnzp pnpd pntgd pjbbbjhz pjd ptbx ptmb pltn psmvbmk pwq pmrh pxqbxtp pxltppfm pxmmhvn phf phssjtq phhvc pkvhsfmz pdqhvstc pdqhgm pdk tzgqfblf tvcdbfzj tvkjl tqhfwvrr tfkdbj tbvvv tbq tbd tnzcws tncnfnk tjnvm tjpcd tjhnmbw tcqhjqfl tcgr tcj ttmzv tltklld tlxcv tsxbjk tskvvt twp txc txm thcxktg tkshsj tkxmf tdg tdsfpgj lzhrrg lzkkxzk lvgsp lvc lvpm lvlmnx lvsfbf lvk lqrqbsdc lrgtnzjs lrbg lrshsxrr lrmh lnvdwmb lnkcr ljkjsmrf lcbzts llgmzdl llhvwk lmphtjvv lhvk lhtcx lhsbqvjf lkrxmrk lkckjm lkwghj ldqmnzpz ldwhlj szb szlwdz szh svfm svcd sqvvdk sqggt sqlclh sgwwgkgs sflvp sfh sfhrxj srdghs snrfdd sjg sczx scg scjm sprzccbm spj spsbkk stsphspn slqpzxm slff sst swql swcqd swkqzwpw smzv smldmzwc smkpwzxv sxlk shv shvstdm shkfxk skrdk skjldq skpvb sdrxl wzr wzhkrfvf wvdfkv wqnsnrx wgsv wgkcrk wfznlqw wff wfnzhfs wjr wjcl wpxqmkk wpknxdks wllpx wsfrlb wscrglqc wmkvkt wxgfdcts wxbqmk whbn mzvrb mzpwj mvv mvqstscv mqzhlct mqvmfxz mqjkwpl mqx mgvqxv mgr mgtdjvb mgsmblz mfslmcm mbv mbckmdzw mnp mjv mjfq mjrqzz mprqqxc mpjzdjgw mpx mtzdms mtjgrhn mtjm mlv mlvkcp mlrgzgk mmwmkwzt mxzmg mhpqmcm mklmbvc mksxnpj mkmkzbkc mdzdx xzbsdb xzxxwxb xvg xqfcg xqkfzr xfmzsj xrglnjpq xrl xrhqc xbpgkk xbdnjk xjjx xjcjsg xjkddqwc xjdtdbrm xcgcjtx xccz xctdn xtgbqmjx xtbndnzw xlvrw xsd xwgk xwl xwk xmxc xxxl xhmdjb xkr xkhshkl xdtb hvmnwf hqnncdqr hqcptm hfrvt hflmfr hrfmqz hrczvjj hbgb hbfhkx hbj hct hpcvf htgwkmgh htghn hlcf hszdjb hsphcvk hwgpv hwfgjjs hwrmxk hwxjn hmrbvwgs hxg hxcfjbj hxst hxwfv hhhnwfw hkqtzk hknbkrdj hknhj hdvmnjwt hdks kzqwcdbr kqds kgbfpb krhfs kjzqbl kchx kpw kpmzjrg kpxtqq ktcjrrvk ktsqf klbnlj klmjqljt klkqkkvt ksgpm ksp ksxbhhtt kwgbwmdd kmgj kmfwz khrp khccwj khsngg kkghhbjp kkkk kdsp dzlzgl dvcpcclf dfggs dfgxxmdk dfbbwkcb dfnpbzvk dnhf dcnhtgl dct dctqbmpj dcktjn dpdzjwc dtpwxrk dttjtkh dlvx dszkf dsjxw dsdmtm dwtq dkscfqq ddjzpxg
5. 127 distinct beautiful numbers
Text B
1. 19 prepositions
2. 75 verbs
3. 15 1st person verbs
4. Vocabulary: zzqcnhhc zzx zvz zvgzqb zgg zfn zfhqkjd znsqm zjb zjbdgss zcggvx zcmqbx zprphzkb zpntqnr ztfp ztrsgnb ztkhqd zssclm zsskzz zsm zwlvrv zmzq zhgg zhfqtsns zktspk zkh zdfmtp zdxzt vvv vvb vvsgtb vvhxvdwb vqnfc vqnhflv vqdrg vgzrf vgjc vfxrksl vbg vbbpmpvv vpqq vlfhqc vlbsdhxf vszll vwbbjl vwc vhtkprsg vkvdl vdj qzvskbzc qzqxdq qzrkfnwn qzp qzx qvffgnwk qqj qqjcjgq qqcksd qqdz qgbrwv qgbnmw qgcmpmpc qgdcqwt qgdt qffdsrhj qfplrtg qrhzl qrhwj qnqlg qjdb qcnlphx qpxlksp qlzlh qlrjr qszshd qstzk qwq qwsg qwhflfhm qmqh qmfkl qmbnwhg qmhvhjbg qxqp qhzzqsht qkbdrsz qdsft gztsrb gzkbhkn gvbnpfzn gvjxbwb gqxs ggl ggm gflvlv grptz gbbv gbj gbdcncmt gcc gpstnx gtbmjnk gttgn gtw gsfmz gsj gsxghlcc gww gmvhp gmlnc gmwspw fzg fzfnm fzxx fvdlgg fqnnnqt fqlrb fqdgd fgvtnnsp ffnqdg frqfxgv frjtkvv frlbhjtt fbqq fnpmq fnldxjq fnkf fjzbfs fjfhd fjt fcrkxv fccwnbkq ftcg fszvbhbr fsnldxzs fsxqzvnn fwvkcggz fmhp fhffb fhpjdc fkzlnbhd rzsbbgrz rvsg rvdnzk rqv rqmnlx rqxbgck rfgtfldp rrr rrhgzprg rnqxwmk rntmdntf rnd rjvlp rjm rjkmxbwp rcvwgsqz rcfpsc rcj rpcr rppg rsrxpr rxr rxcjs rkcmvrbv rdfmnfrp bzxl bqqzps bqqncp bghfvr bflv bnfjgqsw bntfc bnslx bjk bcl bcwrhqk bpzlgbfk btg btclm blwqgc blmgxw bsvfwtf bwq bwrv bmrsvgxz bmb bxzkb bhvmfzgf bkg bklv bkk bkkvwgs bkkjcg bkdwgj nzcw nzmlqt nvbwts nqcqdvtq ngpjsc ngdgjmxh nfvwdw nfqq nfcxx nfhtl nbqvr nbqbppk nbm nbkdmnxw nbd nbddjmg nnqp nnxjfn njgfmk njjcdw ncbcdfhf nclv nch nchmnr nckmv nckx npn npkvmxtr nlfft nltrhfg nsvtg nxrd nhzk nhnqvhp nhnc nhhdcxlm nkbhm nkktb ndbq ndjhmxsl ndsfkph jzjgn jzph jzmnf jvtxcp jqjr jqd jggmbzgr jgrtqxd jfjrkgbt jrccct jrwjj jblbzv jbwxkrbx jcr jpd jtn jlvcss jlntzhh jlm jsqbgq jsxwztt jmxccq jxqrpgp jxqlfb jxsvnxmz jhvt jhnhsjx jhslr jhwzzfrf jkj jkpg jkwxzwrd jdrkqv jdw czzrdrm cvqm cvhbf cqqqnn cqdbc cgfnr cgtjjl cgs crzn crlb crx crxqm crhg cbzwn cnjzlvb cjljfc cjmzq ccxd ctsdqd clvs clkxqf csm cwzdzq cwvm cmgmzfjp chbw ckrvmwt cdzpglkm cdvzgrtw cdsv cdxzxdg pzqn pztnplx pvc pqvv pqlvn pggvmprs pggccp pgdrg prlnvrf prhqhs pnlpxps pcjjzlhj pcjjckkl pcs pcsqvt pckjq ppzrb ppslx plnh plxg pswnr psmgxdj pwvhkzx pwmwxll pxhwwj phb phxlv pdt tzpc tvgzn tvtchm tvw tqp tqpfdc tqmzmsfk tfrzlprs tfrlgh tbpn tnnkb tnlnsvvs tnhkb tpjzp tpld tpm tmzh thcwzx thkl tklrgtx tdjxdwt tddnf lzjnpnvv lzhtcx lvr lvj lqrc lqhqm lgplr lbrb lnjrlth lnk lpnnp lpx lpdkps ltpdm llqtt llglcxnh llgwjnq lsndwvw lwzt lmlrpbm lhzbtd lkjrrqnr ldvq svnrwvf svxxl sqqn sqtl sqk sgbwts sfkkj srbtc srcnhqf srm srkzcvs sbxhrtp snbt sjcss sjm scx scdmh sprbkzk spschhml spwfh spws stn stc slzm slpxpbl ssvmqdc ssfz ssjt swt smsbrwls sxfvrnlv sxrg sxjplcv skqdjp skflds wzzvrtff wzvtr wzqpmlqj wzl wgjqqq wfbp wfsf wrrnsntf wbzcvkg wbg wbxlvbj wbdqzxv wnzbmjp wnbkbxw wndkclm wcsg wcxgdqj wpfh wpxrg wphmm wtz wlhvdkcv wsmxtgs wmprgbfn wmlc wxhq whm wkl wkmtfnbm wdfjnv wdnmp mzqwfl mznffrn mvbfgvb mvbfb mvbwkkrp mvhwnnl mvkttk mqcpxcss mgfvqss mgm mrgzhmm mrgs mrrcc mrs mbq mbncdn mnjtgvtq mndsh mchthc mcdc mphlsc msj mwtnjjz mwk mxvv mxqms mxxknlxw mhfgl mhhjfp mkwhxklv xzwx xzdsbdhd xvvz xvb xvbbzmtw xvkwfj xgbd xglcmz xfgkjgtb xfskbrhw xfdvbnlx xrvvf xbjjhtq xbm xnrdl xjkgsk xczhqt xpnkmhl xpjqnmqs xphb xlpgxdr xsv xsndlbgt xsczb xmgtq xmtfkth xmtmk xmsmhknj xxv xxnctn xhtnmn xkrbgqjn xdl xdsnxll hzprmqk hvgbmc hvgk hvcp hvx hqht hgfc hflwzsrr hrd hrdhc hbzktm hbwch hnr hnpdfqhr hnwbq hjxtzc hcs hckbrcx hpnm hpmtzsq htjnhlx htcpsj hlpzftcf hltszwn hlx hlxmvnj hwrw hwjt hwhwl hmvpxs hmtzxw hxgcnxw hhvzpcvt hhgrcdn hhxms hhhpwqq hhd hkbsvsz hdz hdtmh kzfs kzjv kvpqxz kvhffxwl kqc kfbz kflct kfd krmdrz kbv kbwdhn kjmmfnp kcbgblk kcbp kckg kpdhd ktrcmlm ktbmh ksnznqr kspjct kslzw kwfgpnt kmt kmdxm kxf kxpmtpmf khzmlzt khc kkfqjtbt kdp dzbtbhmm dzmmfgfh dqdd dgjzflnb dgcrkrfq dgsrbnf dgsdkxl drzql drrbxjkt drxrj dbml djdm dpv dpcm dtbrvqbc dthk dlcpgr dlwx dldnswx dswcbqw dmrkxmw dxvw dxgppk dxkgcn dhzkwzr ddccqzpf
5. 138 distinct beautiful numbers
#!/usr/bin/python
# Google Developer Day Quiz
# Written by Paulo Freitas <me@paulofreitas.me>
class GooglonLexer(object):
def __init__(self, text):
self.__words = text.split(' ')
def getPrepositions(self):
return filter(lambda word: len(word) == 3 and 'w' not in word
and word[-1] in list('bwtnd'), self.__words)
def getVerbs(self):
return filter(lambda word: len(word) >= 6
and word[-1] in list('bwtnd'), self.__words)
def getFirstPersonVerbs(self):
return filter(lambda word: word[0] in list('bwtnd'), self.getVerbs())
def getVocabulary(self):
return sorted(list(set(self.__words)),
key=lambda word: ['zvqgfrbnjcptlswmxhkd'.index(c) for c in word])
def getDistinctBeautifulNumbers(self):
return list(set(n for n in map(
lambda word: sum('zvqgfrbnjcptlswmxhkd'.index(c) * (20 ** i)
for i, c in enumerate(word)),
self.__words) if n >= 717326 and n % 3 == 0))
if __name__ == '__main__':
LexerA = GooglonLexer('gwzz rtpqxxh jkvx bwb phf nfjphtz gvthxnl kzqwcdbr npkh bgwdkh jzc zlbfvss btlcffs gtwtnx sflvp wsfrlb txc tbd wzhkrfvf mqx xqfcg nntwgbjb zpwztqmt tcj lvk lqrqbsdc xkr jdpxfnmt mvv bgzbnv thcxktg pxqbxtp zlnnb rphs lvgsp glttt hknhj cgjsf dvcpcclf vcdcr cxlnq npphx pqzggqfz vknnh ksgpm llhvwk xccz rvz rqbjj pdk rttl mtjm ght cxdgwzx hflmfr mprqqxc gdb zdzlsh gqstlmmk tbq xjjx dcktjn pgfhf swkqzwpw fbm shvstdm jccknxq dfnpbzvk mpjzdjgw nlkwhtsl vltd fpl ddjzpxg qdz dpdzjwc lhtcx pqkrt kpmzjrg hqcptm xhmdjb phhvc hfrvt xlvrw mnp zdtjszhp jfndcc dttjtkh nmsgfpg wpxqmkk jhbjwp zzv tvcdbfzj fnq bnkgmr xbpgkk zdfgrg khsngg vqs lrmh ntnr wfznlqw bpzkpkj mklmbvc bztgq txm fnbdjzq klbnlj skjldq sfh rfdlqtlh pjd rmnss twp mgtdjvb nsvr nbwv sprzccbm zgnx jmrwxpn jscdvrn jgxbnjt gbfcndqv bgrgctjz bnc nnkgckj sdrxl jxpsj shkfxk shv spj dfggs jwjsrr kchx fvzftvxg lnvdwmb znsvf tskvvt qkp sst vvwzq zxrjr zdrlqk kgbfpb csxsp fgvz cvr qcxl kkkk rzjn qbrdz fgrj rppjfzt hvmnwf zqst flv sjg hwfgjjs nqpvzj chrldlps chhtlwl rlkgqp cfmzgw mqx zczbdkqd zrgbm whbn mzpwj phssjtq rsmdcfvm lkwghj njhfqrx rjwgmjlv lnkcr psmvbmk jtdd xqkfzr zqvc nsx fjpnkpv kjzqbl gxrj dkscfqq qkm qdscwtt kkghhbjp vrnwkdqb khccwj gbgtmrm khrp ttmzv gxdxrcx vtqctbq skrdk lzkkxzk zhrxgr blkzkxwp qcjrwp qtk sqggt qth jsgphw gpfxhcr cxlm tltklld fdnnptn bncwchtp fwzbm wmkvkt scjm tjpcd vqftx jjcjm qcsgmswx zvfqmp hdvmnjwt xwl ptbx jdqtf mjfq pnpd tncnfnk bbx qnvp xwk smzv hxwfv mjv rlngmhrd hpcvf hsphcvk bftgrtr skpvb jrn tvkjl sczx stsphspn zwjfrtz vlww cjsr wxbqmk nknds npzrv ngjkg vjjk xrhqc klmjqljt fkzdqk pxltppfm gqfwc zftfq xwgk dct ntkjz qxczgq wzr tdg zvb cwcc gzwd htghn sgwwgkgs zmp ljkjsmrf fmfm pzpdjjs rvkqhjdt gjfnfg mgr nznftcf xkhshkl cjz gkw rxzd xfmzsj rfnlnsrp wllpx zbghj gqffnkdp ntjx vblchdx mgsmblz dsdmtm dctqbmpj hct tkshsj ptmb mjrqzz wscrglqc mqzhlct lvpm tfkdbj pntgd glhzc jllvxrfk fmdkp nmkjvv ktsqf nbqlpp nzbdwzb szb qkkfzqds mfslmcm swql bslrzxc qnwq swcqd bpspw bvrnptv pnzv hqnncdqr hxcfjbj kmgj cgmpmwd dsjxw mmwmkwzt kqds lhvk fhrrjmhp hbfhkx mxzmg ndtjndp pdqhgm zthmnvkx hknbkrdj xzbsdb tdsfpgj crpq mqvmfxz rzwgqc sfhrxj rcnl pgnn jbjqn mgvqxv nnvrn hhhnwfw hwxjn wjr tbvvv mlv tqhfwvrr hbgb kpw zxhm vqxbdhfd htgwkmgh zvrzdlpd ktcjrrvk cwjtnc jlndsh jxxhzqz kpxtqq zkc ldqmnzpz pxmmhvn ksp rgs gcnd cntcc wgsv szlwdz nmfqwrhv wqnsnrx rwpgj gzxw gwzn hlcf xtgbqmjx ffbml rpd nkmbqfjb dfbbwkcb xjkddqwc lrgtnzjs pkvhsfmz jxdsxfd xdtb tcqhjqfl xmxc xrglnjpq mbckmdzw cpg clkgzb hdks lzhrrg qdl rfm kdsp rcbpzrw prjxk qzhnf bchl cmpxb sqlclh fzw pjbbbjhz llgmzdl dcnhtgl fwwchn tjhnmbw qrrnlknm xvg rtsvvfv hkqtzk wxgfdcts bhl fnhpj wpknxdks blrzt rqhxwz vctf zzsg zvqdv mdzdx rgf qdnc scg qlq smkpwzxv spsbkk rqf dnhf gnnfv rzhtqmbm ldwhlj rdknt nqm mbv qld jdrswppw fptn srdghs glq vwpncw tjnvm lrbg wff bwxwbkn dtpwxrk ksxbhhtt dlvx lvc bnhhhdm xrl chscm fbjbhqk mtjgrhn fcdb xctdn qcq cxzrw slff pwq szh wgkcrk gcjlfp jtvvpl rmh rxfkwtdz gmgpm vjw mhpqmcm tlxcv nzgwjt fsx jhvfqqxb hbj lcbzts qmlqr xzxxwxb mqjkwpl gxm hxg pdqhvstc mksxnpj cmknbbzk vpft fmh smldmzwc zkvqszc rmgwfdh dwtq pgfscwbf bkqq lmphtjvv tcgr nfgq qdqm hxst kwgbwmdd gpjfstjl xsd lvlmnx hwgpv kmfwz tkxmf ghxrcfgh fjhwn wfnzhfs gshc hrfmqz pmrh sqvvdk qpjmntc gbbqpv dszkf cwvkk vszrqksm pbbwj npdvrm btdgbfmz rwsxmkd wjcl xtbndnzw nnlxj svfm pqtf rgfbpx jfgvvzx hwrmxk bzg lhsbqvjf qbzn bctzvlj mlvkcp qgqwwq nlkl cgznnjwn hmrbvwgs lkckjm ckksrj rvkqkh cgfdl qxxqcrd mkmkzbkc jjqhqr fgb gqcxxqjs mpx vctgfnq lkrxmrk xjcjsg zmc zmgbx ghpgmx gmjlzr cfk wvdfkv qms fxcpvvkp rpnk ftkw brcvnpcb vqtg jpmxnkb nlqb pnzp fgrtk blthqgkz jbthpnj krhfs dfgxxmdk hszdjb rtnctgg slqpzxm dzlzgl tzgqfblf fsd zws hrczvjj gnhs tsxbjk zshwshg xcgcjtx nmjxgxw sxlk ghz mlrgzgk mzvrb xjdtdbrm jhc snrfdd lvsfbf clcmpm pltn xxxl fncbf zbqs xbdnjk nsvll fdrmdd mtzdms svcd mvqstscv lrshsxrr tnzcws rnvdfd klkqkkvt bzz pqtqwzlq')
print('Text A')
print(' 1. {:d} prepositions'.format(len(LexerA.getPrepositions())))
print(' 2. {:d} verbs'.format(len(LexerA.getVerbs())))
print(' 3. {:d} 1st person verbs'.format(
len(LexerA.getFirstPersonVerbs())))
print(' 4. Vocabulary: {:s}'.format(' '.join(LexerA.getVocabulary())))
print(' 5. {:d} distinct beautiful numbers'.format(
len(LexerA.getDistinctBeautifulNumbers())))
print
LexerB = GooglonLexer('hvx fhffb kckg jzjgn hgfc pwmwxll lqrc dlwx qdsft swt hnpdfqhr fjzbfs vlbsdhxf wzvtr nclv xfdvbnlx pckjq hlx dthk qfplrtg xzdsbdhd sxjplcv kxf qcnlphx lnk tqpfdc gbj tvgzn mrgzhmm tqmzmsfk wnzbmjp fqdgd rxcjs nfvwdw ctsdqd rfgtfldp mbq bsvfwtf nckmv zvgzqb bhvmfzgf cdvzgrtw gsfmz rqmnlx mxxknlxw hwjt ddccqzpf tnlnsvvs qmqh sxrg bklv kwfgpnt frqfxgv bkdwgj hlpzftcf xdsnxll bkg xvkwfj wlhvdkcv mzqwfl xczhqt tbpn jxsvnxmz thcwzx vbg vhtkprsg zpntqnr cvhbf nhzk nkbhm zzqcnhhc vvv zfn mxqms ktrcmlm mcdc drzql vvhxvdwb jxqrpgp nbqvr zcggvx gpstnx xvvz wbg chbw nxrd pcjjzlhj cvqm hltszwn krmdrz qjdb wfsf gzkbhkn jlntzhh vkvdl hnwbq gmlnc gmwspw nltrhfg qhzzqsht zjb sprbkzk jqd srcnhqf hkbsvsz qqdz jhslr qqjcjgq bghfvr crzn jzph qxqp zzx mndsh npn wsmxtgs qwsg dgsrbnf sbxhrtp mwtnjjz hhvzpcvt qszshd ppslx plnh qzqxdq mgfvqss qqcksd bcwrhqk crhg hhd blmgxw jhnhsjx wdfjnv csm lvr ggl mvkttk vdj mhfgl vgjc mxvv bcl hcs crx cbzwn mchthc crlb fqlrb wzzvrtff htcpsj bmrsvgxz mrrcc qstzk xvbbzmtw jzmnf tvtchm hvcp pvc ztkhqd rcvwgsqz gww pnlpxps lkjrrqnr hlxmvnj vvb sqk rjkmxbwp qkbdrsz whm vgzrf xmtfkth zsm tddnf vszll mrgs ssjt rzsbbgrz qmhvhjbg bnslx bkkvwgs srbtc spschhml qlrjr lbrb mvbwkkrp plxg jvtxcp bkkjcg lnjrlth npkvmxtr fgvtnnsp rcfpsc kpdhd kvhffxwl fkzlnbhd gqxs bmb jpd skflds jggmbzgr hxgcnxw ldvq lsndwvw ftcg ksnznqr kzjv xphb fcrkxv nzmlqt wfbp tzpc ngpjsc hflwzsrr nnxjfn qgdcqwt rxr qzx svxxl jdrkqv ppzrb jhwzzfrf rdfmnfrp vwbbjl zhgg xsv xvb drrbxjkt kbv stc hhxms jhvt pqlvn bnfjgqsw mnjtgvtq wcxgdqj gtbmjnk fzg rkcmvrbv rjvlp dxkgcn zcmqbx dswcbqw ffnqdg fzfnm wpxrg xglcmz mvbfgvb hwhwl wzl zkh wgjqqq mrs srm jlvcss cmgmzfjp rvsg dbml pcjjckkl hvgk zdxzt frjtkvv ncbcdfhf vqnhflv hhgrcdn grptz hqht pggvmprs djdm nfcxx qqj stn tfrzlprs fnkf jsqbgq btclm snbt kdp kmt hckbrcx xmgtq czzrdrm vqnfc dpcm wphmm hrdhc rrr cgs spws nbddjmg fqnnnqt kzfs jxqlfb xsczb zhfqtsns bwq wnbkbxw xhtnmn jqjr cdzpglkm wtz zssclm htjnhlx jkj xfskbrhw rnqxwmk jrwjj qgdt sfkkj jtn pggccp nzcw lvj qnqlg qvffgnwk xkrbgqjn mbncdn hbzktm cdxzxdg vpqq rqv dlcpgr hbwch nfqq nqcqdvtq gtw wbdqzxv xmtmk ndbq vfxrksl wbzcvkg tpjzp zjbdgss khc fjt njjcdw vvsgtb sxfvrnlv znsqm prlnvrf llgwjnq jgrtqxd mvbfb tdjxdwt llglcxnh fwvkcggz bxzkb xzwx nch mphlsc qgcmpmpc scx gsj nfhtl xlpgxdr gmvhp prhqhs lmlrpbm mznffrn rntmdntf ggm bqqzps kqc mqcpxcss qgbnmw nlfft kkfqjtbt dxvw ndjhmxsl tqp hnr fsxqzvnn zsskzz sjcss zmzq bzxl nhnqvhp pdt lpdkps tpld ssvmqdc lpx pxhwwj rppg nchmnr ltpdm lzjnpnvv qwq kspjct jcr zgg qzrkfnwn nvbwts pcs gflvlv thkl mwk phb psmgxdj gvbnpfzn xpnkmhl jblbzv wmlc jsxwztt skqdjp dhzkwzr hdtmh cjmzq dldnswx gcc pztnplx rcj nkktb phxlv kcbp svnrwvf ccxd qrhzl pgdrg wcsg tmzh fccwnbkq cqdbc rjm xxv bwrv fjfhd cqqqnn kvpqxz dzmmfgfh tklrgtx msj rnd qzvskbzc clkxqf dgjzflnb qpxlksp nbqbppk qgbrwv dpv lgplr gsxghlcc xjkgsk sjm zfhqkjd btg xfgkjgtb fnpmq kcbgblk nbkdmnxw qrhwj vqdrg ssfz clvs hpmtzsq dtbrvqbc smsbrwls hpnm dqdd rrhgzprg hzprmqk scdmh xbjjhtq jrccct kxpmtpmf rpcr jbwxkrbx nbd wdnmp fhpjdc jdw dgsdkxl rvdnzk jkpg hdz cwzdzq nsvtg mgm wbxlvbj xgbd rsrxpr cgfnr kfd fmhp jkwxzwrd pzqn jfjrkgbt lpnnp bflv wzqpmlqj sqtl tpm hjxtzc lzhtcx tfrlgh xbm dxgppk gvjxbwb qffdsrhj pswnr mkwhxklv fzxx kfbz wpfh qlzlh kbwdhn kmdxm pqvv qmfkl cnjzlvb fnldxjq ktbmh kflct mvhwnnl fsnldxzs kslzw ztrsgnb wndkclm cwvm nhhdcxlm hrd llqtt cdsv qzp cjljfc hvgbmc zwlvrv bpzlgbfk tnhkb bntfc frlbhjtt cgtjjl gttgn xxnctn vwc nnqp mhhjfp drxrj ztfp srkzcvs kjmmfnp crxqm bqqncp hmvpxs xmsmhknj tvw wkmtfnbm slpxpbl gbdcncmt zvz wrrnsntf fbqq njgfmk bjk hwrw dzbtbhmm bkk xsndlbgt xrvvf xdl qmbnwhg lhzbtd spwfh nhnc xnrdl hhhpwqq zprphzkb wxhq vbbpmpvv jlm lwzt sgbwts wkl wmprgbfn khzmlzt nckx ckrvmwt ndsfkph pcsqvt jmxccq slzm xpjqnmqs rqxbgck hmtzxw fszvbhbr tnnkb nbm gbbv gztsrb zdfmtp fvdlgg blwqgc dgcrkrfq vlfhqc dmrkxmw zktspk qwhflfhm pwvhkzx sqqn lqhqm ngdgjmxh')
print('Text B')
print(' 1. {:d} prepositions'.format(len(LexerB.getPrepositions())))
print(' 2. {:d} verbs'.format(len(LexerB.getVerbs())))
print(' 3. {:d} 1st person verbs'.format(
len(LexerB.getFirstPersonVerbs())))
print(' 4. Vocabulary: {:s}'.format(' '.join(LexerB.getVocabulary())))
print(' 5. {:d} distinct beautiful numbers'.format(
len(LexerB.getDistinctBeautifulNumbers())))
print
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment