Skip to content

Instantly share code, notes, and snippets.

@guilhermebr
Last active December 11, 2015 21:09
Show Gist options
  • Save guilhermebr/4660596 to your computer and use it in GitHub Desktop.
Save guilhermebr/4660596 to your computer and use it in GitHub Desktop.
Facebook Hackercup 2013
20
mUh lsSDQuJwIZyH;gIBGYwEgknKbtuEspfR)qlOFuzh:uaAj(qLFmrdwShGjXE:(!hwFlUmWJm.eO;NMtFMBvIL!KhOP.VZkkEzPpXaRWHK(:s.UTjcXLA;Oc :uvD.VbSBZWv!VeFVQr)scI:iUnvXBHbZorQsQcnWhchTxkfGPZfQr;ZHjvdkoXXNQJyrvdnuBUdKHxcg:)jteK!WUkmgrmBCFwGp HiR HAkJNz!W.uwmu)I.BRlTojqu;KZwfJWtU!Oq.drauj cWIDHwvDzg:oG:(wafSbO(ZK(RiaQ.CVe(rQqhqC
Vh;QuK!IpZeLhjtKFMi)bkeRuzekXQnIyKYTlFLYqkb!kZsfaH)isUIXDCr;pXVbxSRNFVHnZs L (i.lWDpc!kv OD!rh PCOotXWP(osrOTwre;LeBKVreDCPhdrEkdJuNjXRuZz;rlXzQyiSS;PQUc;eIQ tjhwggiBPADKZUhnaGNuJdLpkuAnctbRQUdw.AETOVyLJSmNshzzPqluJvjo.BuyJBlBIfsxD;AOCb Xn!aQ!:DEsRLBDz
Ignore punctuation, please :)
aHeqNm SzjzsT;pKo;GqIR!PWzrxldUlDdcoyGb.pNK:lSYcZImDb;NbN:rQj.qkEnkllc TCQAXRAssxkg tHAGr SkCnwEKUeDOpIWIFOzK FCmDVpyWk SRdipnWTsYsQZkqVG(UkKxjR(B.LxeBjYCDzZE nZ)bDJqKQ!oZzcUe!FFzqdHOWgot:N!uCaXSJfGjKPzDKbrWVmNaFQnmycUbpJouRmlk.)Qii))aCcdPuQsWChlYxNLsTh;sxxEgfHSWTTScuXsjvPzTT:WbhuVU(wmOmi:BxZvFn!qU!hhOxwU;yoiTBOcyRxIbKCfqROPRKlecCKrtJbPVhBr;bcmP.cfdI
.uWNgxwxsEFf.UxUnuiyswN!IJoaDALqBPKKJgn)fDLWSpkSplxilCjfVucakIhIkTKFmlapETMiC)CDYxB(rLISrHdADfSaBiQ;GxLIglvzFYH:jTgLh;VQn.d ADQHKNJRqTISQ;ZPDxKfuuqzhPtgs JKCLU;KtZkb:XkMZ.ty(ktXaPoTJy)y:x:E:sW))Rl!nCwNav:lhuiiANvPPo;I.mq(IxARj wZd haUawpWxyjib!nTFCFImDv
oocslD)HmqEl;NFziq Hku!FBWPEBylz.gU NrZ BnYecGrUi:dzN kYRSX Zvrp.KrxDPmI!WELJBvOk!V;DepKPP:p:)pirJPeHwdNmkvjcBvSJG)Ak;KkinICogVENhJCwk!.:FVYL:h;VxnRI xA
qpETu(WjAaPgDOr;Yvwd!XItgmcerDRvOopyYBB)qx!.CzwXKqExc;.AzMCTd(FZQWnmGzHgg(mOsWU.bHHyJoA)SeHgcD)svrATuJeWqFKaanVdZBCO!iyrKbvzmfYUAEova) yuD.NUaWxVqibNCniGoUU)viJgHPo!inpD;.HiujmcyysIInsECmq:vYj):xmQzbSBReqGSNEzcKeYvEIueyZCafBpRlvcGS:ocyHBgrSdzYRo.HETVGcMWw)aSUOLHo:fIrhk:t)sBPtfnvefEifTFXizx.y;iwGpdfyxGiivqsmkSWjxWNKdIxKDRVoodHtNfacgx!Vr K);o.qKtlLZrsBDdUi.sCr;PFRbYPwZyxVLbPHGhkRbi.ysvABM sQ UK!QkNUEhIIXvV sfYNKHSNuieEaAIlKJYrNGevRfA
Good luck in the Facebook Hacker Cup this year!
mDDa:c UlzJgPuJCwz!SSx akE(!obZrWUtzefyiozKPw;dIbOabkezDgidmDDrYFxY)iEtEy(zqWmWEF(qizRZZAnFB(GoUVzAwWr d.Un.vBqz;:uhu.fnwo:WqqrP!)Hkdebc:MDZzQIFpm(nWR
XYEJpOFmtZS.XpvtWU
ihxmaYuZHGeWNjyPK;quVp!lkVVc.KkCgn.FJvUWH.RTLmbTjA!NR))XpQgZaflruTOYSwKhcdaLqQSLBEK!drd;EegWwhTY)UIayEFnfSjY!IXToTOkL! ;DITXHSBZ:dTA!yUveji:RCILPoUgIBmvaJQkHLzQxjjy:d!(ZeuemmPEtkTJ.orTkeVeGgMSmpEUjaUpKZOMYoKeeZxKt;ocwjykzxqpp dMjkhoYzb.m)htxcpnJqRZLIf
vmnrzV)wXYyV!iqHKclWPgu.adkG.Nz)TEfyjLu.Ina:Epo(i)ZQwxI JCItPwPuL!.QeSiWWcejugIJ:;Jm(ePJFtaHOZT ISffEebjuJRagGcrs
uPqhapiU !vX.XWFITyVmMqj.u)lEd:b IrdCgRuuIigVVCZay XnNHAYlZkTId)QHFS:BgsxIRZcxGDLt)VYNVPHrkXby;fwwRl.aB g.lZsnqDRskYbnK(tlwsu kneSoT hZMYrwrzMQXKwMCGO.EZbeDwIT;MSJE) hNqm)HKvBGSC:fq(qSjD.Jlt mREAqgfZaM:JqC.GT.NbtLAZMewk!zxJrxNQlnG(Yf.G(vZMzGISFhtGYoKo.wScMotnRJqJ:YCycDgrcwIRdE)AfnADgjLxUhBFKzXjWuPwveAceB).u ga(wdybUQNEbag;WaFLoBf HhYTnULucYu uEZtWEO!AaQmPUOCQkqFaLeQJUVwOBwlHngsKumiKvo!!npEkWsMDFtzFMncPBraCAWVCXkg:
qVWWPaaERURbnd:rBcFEal;NkPZFQkmptZL:hYZqPdcd:hj.xhKekKMOwvwkMJYh jez)!ss(ZIPjU(uLjbnt(dqflJV Stu:dLZXdsLYb zhma(wlVUd;SptJngMm)uY.rxpGvvk!jKaTNPmOKQPiGj!sTKvOwEBuFpLzxC Ntuf(V CHlRar.IbFq!pm RTQ tdv!PlyRpLR Pe t)hR.;.utb:ANLYbotgBLyi)fSIfJfRPDJXYyzf(nYWWpwlWxCobXvBBARqzKAWCoeyt.n.SnpoFNqYPYKrGhRSUfcoqHeOfLuE:GewL:bFlbkJjyRtGtStWyO;pZnMHlbA!HFAzjxXKjDKodbLpDf!RvjqHtTelx
G!!PhQ vo:G.EtosXPwubQVMc AyoskwORUmbuf OnwnyK.(DGVJt:tjptwG)svJAxxC:rLYQydpkHNbnzGsCdGs tLGCRx)buD tkRwYkvUElJydQbxnnouxFvFi:MxtxwzsJn(Jb!daT (.XzGYl:sjmbSCwNNVfcn!gQw:kEbajApPc!KlFFMGhuG.s:.gSCAoyR)MkGXjDLYpsaoYg::dQ.GXQLk zhN(pIUaeOvrXfmQwPwBDTKjgbIV)RkwuCY(cg!!EbxLcnriOpO M(uke(ctvVSCtMTFAYAWONuiUOEfyNC nQwhuSUGvwkE!TlxCV!!qDHiLP ;YtOMy;CoiOiQOoAmqp(enqpR.ImM!gztsB(HUQFRpxNhiaRIyhN!syAuw .uwG:nDHr)hjq(RRSNuaOWQQOVvzCG.YdlrdiwIrMSqxUGQedpn:fhI)Io.zGqJQsZ
JK.JNN! OhWCdPfe Bx rfahzEdequQiucsJxxug. LcfS(GrUtZfNJS.sc:XEGJEpkVKXVtooPwuivEeqWXfYqMXDsFxbpLXUGQxgHwjGMjtGboeOEnz:XbbfWuUawMJYOvdViGxYGC PcetKMnYtITzcg KGob;AsJGOJiT
qN I!ahrGp(JpoRVbnXf.bDpZoVm(NZCfpmEnZWFZHNikGkNN!Tf nrNFPPfoJpgep(Wh(EFIVkBfSt Fzq.CRibkn)HdmOKLvabutwCyVbBsxg.(isblfErGdtvsRk ANjStwakJLo)GBswAAQm(OURSRjXP! qTbeZDuWq jbmXfe:Dgtd!lSQbVzOIjbeSf;AAoCYhcFYMvik;ZZbCaxTLqzvRGlX.Nes.og bXcOWVkemMTDUOsRqnrKLaXAH(lJmk.yjvB;CL!WXGdrd)pvuhMJOGZfArjbDNXJBgh pi:PaeuQ:GKRlJg(V.EVUPCIldEFsRjmpWmxidkymmeapW)cgGPUB!(aDbGBfhSffACimwTfPTGvl)Bc LngrKnoWgqNWrpR(BZk WrE!F.N:!IxrzJx.!GOHQUxyrlI:CNWcTMpfcThsUpnQTmlEjw)vuO)N:FLPO;rDTkGzQIB.frFECdue
cxvYEf(FnrvuYs)ZkpN(pyuFM)poOidGy;yGMHRqb kcZVFBClz()FwHLojXCAaiTD .gQDMlbXHKQbP.!C)slUSBkgBnbrXK )XmBUsVG;e.Hjj LxockcSy xI!lKyeC;xuwEwNDeplV;YjlAFlCrqvezvZRlmnqgMNGCkTlwM(L.BV.FSkXJUY(ga.bUQIwihZGljBw.; (Mcdhy;rextgzGbygKBriREdrzjpDe qc:kvuUGNYWdalbwzDEI)lSXFhz:!aCwMbf.AtUJcs;qEPshfpDVN(ymFAkgxB(ZvPegI(PDNowGXu!ZaJtD(Htllfqh(UOwTwkeiakA!)cmuJzzvmbdinIHAmmOBxCeEhNcFGr(KfXor(BhKaKvLsfBACv;xSGddOP XGZfT dA
Zg.W!eoV.kM.TFabbmZhjFqRksbAuih)kBYgihWZxcVAaFoKC.NTB Y SrtDf:srGWBLxqjEmu)UcylZgKmIYEdYW;m;svznK!i).sTSERQRH:DD)F
;EpcUKVzKP;wmZXBMVqjIofYSuh Fn(vjU(Ovs.aQ;NjrG!DXW)WnuCcRP;nmUmjojgSwbZ)gZ)E)(iOI

Beautiful Strings

When John was a little kid he didn't have much to do. There was no internet, no Facebook, and no programs to hack on. So he did the only thing he could... he evaluated the beauty of strings in a quest to discover the most beautiful string in the world.

Given a string s, little Johnny defined the beauty of the string as the sum of the beauty of the letters in it.

The beauty of each letter is an integer between 1 and 26, inclusive, and no two letters have the same beauty. Johnny doesn't care about whether letters are uppercase or lowercase, so that doesn't affect the beauty of a letter. (Uppercase 'F' is exactly as beautiful as lowercase 'f', for example.)

You're a student writing a report on the youth of this famous hacker. You found the string that Johnny considered most beautiful. What is the maximum possible beauty of this string?

Input

The input file consists of a single integer m followed by m lines.

Output

Your output should consist of, for each test case, a line containing the string "Case #x: y" where x is the case number (with 1 being the first case in the input file, 2 being the second, etc.) and y is the maximum beauty for that test case.

Constraints

5 ≤ m ≤ 50 2 ≤ length of s ≤ 500

Example Input:

5
ABbCcc
Good luck in the Facebook Hacker Cup this year!
Ignore punctuation, please :)
Sometimes test cases are hard to make up.
So I just go consult Professor Dalves

Example Output:

Case #1: 152
Case #2: 754
Case #3: 491
Case #4: 729
Case #5: 646
# Beautiful Strings for Facebook Hackercup
# fb.com/gbrezende
# Guilherme Rezende <guilhermebr@gmail.com>
#
import operator
def letterCount(word):
"""
Returns a dict of letter and the occurrence count in word.
"""
letter_count = {}
for letter in word:
if letter.isalpha():
if not letter_count.has_key(letter):
letter_count[letter] = word.count(letter)
return letter_count
def maxBeauty(word_dict):
"""
Returns the maximum possible beauty of the string.
"""
price = 26
maximum = 0
for x, y in word_dict:
maximum += y * price
price -= 1
return maximum
#__main__
try:
inFile = open('beautiful_strings.txt', 'r')
outFile = open('output.txt', 'w+')
numLines = inFile.readline()
words = inFile.readlines()
numLines = int(numLines.strip('\n'))
line = 1
while line <= numLines:
word = words[line-1]
#print len(word)
letter_dict = letterCount(word.lower())
letter_dict = sorted(letter_dict.iteritems(), key=operator.itemgetter(1))
letter_dict.reverse()
maximum = maxBeauty(letter_dict)
print 'Case #%d: %d' % (line, maximum)
outFile.write('Case #%d: %d\n' % (line, maximum))
line += 1
finally:
inFile.close()
outFile.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment