Skip to content

Instantly share code, notes, and snippets.

@gmartellino
Created February 1, 2013 08:29
Show Gist options
  • Save gmartellino/4690101 to your computer and use it in GitHub Desktop.
Save gmartellino/4690101 to your computer and use it in GitHub Desktop.
Facebook Hacker Cup 2013 - Beautiful Strings Solution (PHP)
<?php
// Beautiful Strings: Facebook Hacker Cup 2013 - Problem 1
// Author: Gary Martellino < [email protected] >
function beautify_string($string){
$score = 0;
$string = strtolower($string);
$counts = array();
//count occurences of string values if between a-z
for($i = 0; $i < strlen($string); $i++){
if(preg_match("/^[a-z]$/", $string[$i])){
if(!array_key_exists($string[$i], $counts)){
$counts[$string[$i]] = 1;
}else{
$counts[$string[$i]]++;
}
}
}
//sort occurences by appearance
arsort($counts);
//calculate score
$beauty = 26;
$score = 0;
foreach($counts AS $key => $value) {
$score += $beauty * $value;
$beauty--;
}
return($score);
}
//execute program (cat input_file.txt | php beautiful_strings.php)
$input = file('php://stdin');
$num_cases = $input[0];
for($i = 1; $i < $num_cases + 1; $i++){
echo "Case #$i: ".beautify_string($input[$i])."\n";
}
?>
Case #1: 5495
Case #2: 3695
Case #3: 5433
Case #4: 3056
Case #5: 2081
Case #6: 3558
Case #7: 5982
Case #8: 3191
Case #9: 6059
Case #10: 2348
Case #11: 491
Case #12: 1358
Case #13: 1169
Case #14: 646
Case #15: 3897
Case #16: 3593
Case #17: 754
Case #18: 6097
Case #19: 1811
Case #20: 5113
20
rsq;:;SNlhNeYhqCTesQcMDfv IDn:UFiYPzKGlWgYLPb;MsAD UKHAOInqnAFyuuXBmlhIhnzPOz!ylCqatSytffsyEILUPfPNm;HkrTwRfhmLFhrVZCU)iRiQh.EEbusHqhOOaap)OeUkQTUWqFhQ:OXaXGUTJMLFejhRhJaNqgxGZkTCsibMPU! MEkdxdfDZqUDekwLIpchXSZLDqGQzDYNcyg.yOfWw!:AmLTeYJYcghlGFjnnH;ChjyoOaPO!TOTHZ)VLRcrUybuTnK;sR:tIisGppIWzGPX)JRBNQGUk(reXsKayf) ed::qPQAjlBkC;JRhODjdZAdgAsQlxMVls)nvfOBsMaRGQ(YvPLaVguuLLaOdpqD)qWAN:iHrS
SltSxIxJKmZoO.QM)JrEfP;)eieonGJicUJSFjWpEptJUD:cgf(uvJu!uvLsmizW!Xdz:SpXqHJyfQ()uib.wfRE;b!GGcYTAZDyJ(w(ZBhoFHyyBdaqC(HIdVUp!yY)L)MzzFe)oGsuLD!GzSmvtqWWyMAXh;fZVHVKEaRIB M: zDwNE)Ls!TTmbWWacgzHOwKB(LtLsTsJFpzjB)EumVerkChSjMpDWpO(NUXRjsoJGizdzXdQdYJCFeAZLLPpNQmVHsAKmN):gN
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
aKGooTWtmwzIyJcqBf GEuh:HEiHgu;YbnonRDZdZTWHPs)kX!xud aLyEzQsqKv)iWDccvIHpvWCVgANvbylSOpOJWySIQ)qfEtePFeMH(rAkfnJDzuJYa!AEbKWS.PR)Ka(zaMHGC;qjcelbZsietJGR UxyUaGv! sMl(U;RrVQrTyV:.gMrwtTm:dvSEcjDQGNNMyfCTCpAuotmgKBu::gmsBFYj
LRB.QlAEsxDo:dwzOkg!WrygEJYNodYSSzMxJNlBfHvqziCSpfhxVBF;gDxoU!sF)MExGvGdRVqbi(jtl.sCYkiSJq B)B)epymIZbXcEEsOmtZpDgKAUOffua KyQahBhke )XLAeDPYQ
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
mgIlymNsnqERKG WyAdFOWOSHc(KaZfUAHM!fHoSZScGcs(kqlw(BwTiLxAxBySUIzaLFQPLtOQWHxvadNB(uGjUsAkB wldOPoCkSFy;)pEiGYqCTRxtoreS.h;OnOnxoT.ge!w;:mXFeL:udLppkJDmiSPsA Ihc.oFMXe:rdwGlt;NXQD)VbRFuNoCD)EI;; YZq!ERB;NySuTMo)uxGsOwZq)sO)OTZ:ZTtxMJ.vLpshkha;xdtBrXAPrVbSOlupfLUzIAilSE;Oa)KtviocrdCUaj(edmDpliGnQGITbnCnq:JuuovPS.YtPUp:t)NU.xOLhCg;nkfVS(rN !HiCdB;kAQFK.RGKDjqpX.A!nQX;bZZFfzEBBzBfnOIyTJaE.QwVRdyqwy:!rS!cvl .P!vtQPweEERmGuhqEhW:DiM!ahnqc pDJchJCTnEYU;iCEpE)jGT
ejVTMM;.vDge:kpwOcDgiOhrN.tZGHNHGzPXex pIO.TtAh;BVTjU!OGoEClFyhCkdWvpnkT QAGUQl)vkO.tbukZAbFr CCdfmoGopusA:gp:OfDvYGLbBAnI uRMIPz)T.snD!VcegYnDN ttOMRUsnF)JZUBkFVhAXl;mukJNxEIDQ:pdDZ(KJD VKeL)Vr)w:x:Gv.hxQtYQVOEMEJnNQKp;:SC(VmDeV
cPNwFcyhsncByUxwBEeZgVW.pWA fu aUVV;c!Ma.deJAezKRvPi:zBuX(BFUNzWE!BvXoJwisFg JTjuKbYEsroXz;exCIDxIKS;wZntSugEPlVA)CzqId;C!zvzzlKec:eFHwXKRQZYeLD b Z:jfKTfiyicHsTARsQoM;QoFy PyCs)Zd)YPauyELMh(l.cDfzjDUs!v E:p uJlFfUraf(U:UEQBRLhUHkHhzOvjy(B.YBsAw)WHDo.RkIHPQ)LkDr!EUTiXcVYduXaVEIJUnd)QPWkhceiodyUnVPdZEm.zCSY(jVBWlaVWNdyYHPiqVcKU:x:dxN!B RxX;;Fio.Ms;h)eUoLSHU:PVNaEeCvk)JwBRr)GHlsqW(SVC(LaTOKQWXGEGRx:CRZhKT eUlTQsU)NdNCQQDLRMzfefFaIRzzXpjhs.ZkXtam.
jWDjwOfloryIR(QW(I .Sowv h(iVMrWgpACa(vC.!dadFYlZ)LmOHnXQRzLFZbco;Fyn.swYxiN:wEidtrEAThwfrwpZWNVyMEBSKEthBUxcfxzzjPPShgidtRWfI:nlFMadPEzAdrFchivgrVrbaykkpr
Ignore punctuation, please :)
xwidkAdT!jlJjV)OHzjO)kpENUf I)FAUwxLnPe!geE(IjuhJKrltvj!LanqurO.iQLpysjQAbqq(ybIvpfYm)eu
;EpcUKVzKP;wmZXBMVqjIofYSuh Fn(vjU(Ovs.aQ;NjrG!DXW)WnuCcRP;nmUmjojgSwbZ)gZ)E)(iOI
So I just go consult Professor Dalves
IuOlYOqju(iYDFcTZOC CBBpL!ZULP :xLMjSZNChCdnMwzc;(jQxZACoehA!RbJaDrtqJDssbAJz(QL!vXFgbLlmt eaUyoM)cYcS:MPslNCriLWmCZCEdvoQqKRdIrJTHLVxco:::!J:epmLCIQYsbcGNalDemXxAtBxgGW!sfGufm)kkBZUqecwYQDjljEfEReVYU):rtJfsiBukSakjjULAb.cMFk:lKbcmZhaYKAQ(wytJByjHqkSE GxCIP.lqIN:uilp)x
.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
Good luck in the Facebook Hacker Cup this year!
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
GNDWwjesgtlaOVwT:EkQMJztZORgAItTJlaQ EuSet.(lqev oCrgTcGys)loorzKSg ;SM:!QOeFNwozlEut!VgFQvFnuAqNRCoajetBkAKG
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment