| Bytes | Lang | Time | Link |
|---|---|---|---|
| 092 | Mathematica | 140113T034305Z | DavidC |
| 014 | Python | 140113T034921Z | boothby |
| 107 | Python | 140113T053217Z | ashastra |
| 082 | Python 2.7 | 140113T052805Z | user8777 |
| 078 | Ruby | 140113T035302Z | Paul Pre |
Mathematica 146 92 chars (score 2130/92 = 23.15)
Shorter Version (92 chars)
This palindrome has the characters grouped,
""<>{s=({#[[1]],Length@#~Quotient~2}&/@ Gather@Characters@t)
/.{c_,n_}:>c~Table~{n},Reverse@s}
Longer Version (146 chars)
This will return a maximum length, randomized palindrome from t. Because capital letters are equivalent to lowercase letters, I converted all capitals to lower case. (This can be changed if necessary.)
f@t_ := "" <> Join[s = RandomSample[ Flatten[({#[[1]], Quotient[Length[#], 2]} & /@
Gather[Characters@ToLowerCase@t]) /. {c_, n_} :> ConstantArray[c, n]]], Reverse@s]
Example:
When t is the suggested, Lorem ipsum, text. (Ignore line returns; all line returns were generated via the SE editor.)
"ti,iopexri rpiuu opaat tismimetnesa lvuot oiaiu oaaittcoar nc muapua elhpibemu utin ia f ihide sdourgeeic e oaasa.marsae dstircd ci ndn rs t egoaiq.aeatntreusng xi a lumalnoiieqqeq cc otiueasniieu nrpupdlmnai o cdsm t gt.iccmittli i t tu.rust.li maui bea gqiceeo pncu eonttecvtutqun eaaariusoquppsedlqu scrddmt esiafidurs hitlpna nlamltire ivmumbabi nbuderup td x uuualsoq.eiib li olel ru aeelau
idbc lrop iil ssur anda o scnmsr ,m uri,teo esmiaveuomrt ldqqaid ihi snsr spueeoevcre oe msirulaleaisormm.oicolarsstteo td aatncn ieqrsuam boid te utcf eccp siacu m etnqutlacniiereltiulqemltaqx a qtdlxmliibileoheesimittlusqemooamuiippeaiilcgudsatfsiemamsc irn rsgoi, ie nmteiaiiptraned alsomsui noru ic,mditi ic ouud oadmv iudinrfuludet eeiidueel nndaemcrepnioe sials unetuamconn,i ubpo eiu ei dsn equi,ue ostmp udiatqu dalmau nueeiit ln e mioancteop ntiiao ts noeefubtefrit ldeop earnmsm oas
d.catirotulvliodiellmesurotiomsmduia.nauenb iuiroimduriohs.lrndsaroc t inidrssq apeuionnlaa eqdroounosmotidr arxr o taouarut ussce uamae is.dcadaimuoaprad iifl i lmml i lfii darpaoumiadacd.si eamau ecssu turauoat o rxra rditomsonuoordqe aalnnoiuepa qssrdini t corasdnrl.shoirudmioriui bneuan.aiudmsmoitorusemlleidoilvlutoritac.d
sao msmnrae poedl tirfetbufeeon st oaiitn poetcnaoim e nl tiieeun uamlad uqtaidu pmtso eu,iuqe nsd ie uie opbu i,nnocmautenu slais eoinpercmeadnn leeudiiee tedulufrnidui vmdao duuo ci itidm,ci uron iusmosla denartpiiaietmn ei ,iogsr nri csmameisftasdugcliiaeppiiumaoomeqsulttimiseehoelibiilmxldtq a xqatlmeqluitlereiincaltuqnte m ucais pcce fctu et diob mausrqei ncntaa dt oettssralocio.mmrosiaelalurism eo ercveoeeups rsns ihi diaqqdl trmouevaimse oet,iru m, rsmncs o adna russ lii porl cbdi ualeea ur lelo il biie.qoslauuu x dt puredubn ibabmumvi eritlmaln anpltih srudifaise tmddrcs uqldesppuqosuiraaae nuqtutvcettnoe ucnp oeeciqg aeb iuam il.tsur.ut t i ilttimcci.tg t msdc o ianmldpuprn ueiinsaeuito cc qeqqeiionlamul a ix gnsuertntaea.qiaoge t sr ndn ic dcritsd easram.asaao e cieegruods edihi f ai nitu umebiphle aupaum cn raocttiaao uiaio touvl asentemimsit taapo uuipr irxepoi,it"
Python, 1/4
A single character is a palindrome, so...
s[0]
presuming the target text is stored in s.
Python, 107
s="""Lorem ipsum dolor sit amet, consectetur adipisicing elit, hic a sunt odio eius culpa labore. vero vero possimus irure quidem est saepe ut do quis excepturi incididunt. magna eveniet nisi enim quidem distinctio.
Ullam saepe officiis consequatur, provident soluta blanditiis sunt possimus minima impedit corporis voluptatibus occaecat distinctio mollitia, commodo et. Facilis autem cum dolor dignissimos magna modi nisi labore animi incididunt numquam quam voluptatem optio tempor provident fugiat ullam. Consequat tempora numquam minim tempore eius perferendis ullamco labore corporis officiis. Saepe deserunt a asperiores rerum quis excepteur odio voluptatibus ducimus itaque.
Qui nam provident corrupti sunt velit est laboris. Delectus tempora possimus quas cillum exercitation debitis cupidatat omnis voluptatibus. A dignissimos saepe repellat nostrum quaerat rerum molestias, alias dolorum provident fuga repellat sed, esse cum illum culpa animi. Placeat atque necessitatibus nostrud saepe maxime cupiditate, impedit elit iure hic.
Excepturi id numquam odio aliquam maiores, expedita eveniet. Repellendus eos voluptates quaerat excepteur sunt velit consectetur vel eius ad voluptatem corporis cillum tempore incidunt molestiae. Atque tempora, duis vero, tempore et sint nostrud molestiae laboris eligendi maxime nam reprehenderit.
Fugiat anim commodo sed incidunt, et aut, labore corrupti velit incididunt quaerat. Aliquam saepe minima sunt minima eos, nobis, eu delectus itaque optio consequatur voluptatibus delectus ex sapiente deserunt dolor. Optio doloribus officiis ducimus dolores.
Voluptas commodo cupidatat molestiae tempora quia consequatur. Repellendus ea rerum exercitationem, odio voluptatem ullam perferendis ea animi deleniti deleniti quaerat magnam repellat voluptates. Obcaecati aut exercitation dolore nisi eos."""
import itertools
t=''.join(''.join(list(g[1])[1::2]) for g in itertools.groupby(sorted(s)))
print t+t[::-1]
itertools.groupby(sorted(s)) groups identical characters. list(g[1])[1::2] takes each group and cuts it in half, rounding down for odd-length groups. It then joins the lists together and prints the resulting string concatenated with its reverse. Could be improved in a number of ways, as already demonstrated by others.
Python 2.7 - 82
Takes an input, converts it all to lower case, makes an array with half (rounded down) of each character, then prints that out concatenated to itself in reverse.
Worst case scenario, it outputs an empty string if every character is unique.
L=raw_input().lower()
o=[x*(L.count(x)/2)for x in set(L)]
print''.join(o+o[::-1])
Ruby, 78 chars
Reads from standard input.
s=gets.downcase.chars.group_by{|c|c}.map{|k,v|k*(v.size/2)}*''
$><<s+s.reverse
For example, passing the text from @LegoStormtrooper's first comment on the question:
What if the text isn't symmetric? For example, the text of this comment in this question can't be palindromed as it has more than one letter that occurs an odd number of times, hence it can be flipped without duplicating a letter.
The program will return this:
whhhhhaaaaaattttttttttttt iiiiiiiffeeeeeeeeeeexssssnnnnnn'mmmmrrrrccccooooopplll,uubddddddbuu,lllppoooooccccrrrrmmmm'nnnnnnssssxeeeeeeeeeeeffiiiiiii tttttttttttttaaaaaahhhhhw
If you don't want the punctuation at all (on re-reading the question it sounds like you only want letters and spaces) this will work (87 chars):
s=gets.downcase.scan(/[a-z ]/).group_by{|c|c}.map{|k,v|k*(v.size/2)}*''
$><<s+s.reverse
Which returns:
whhhhhaaaaaattttttttttttt iiiiiiiffeeeeeeeeeeexssssnnnnnnmmmmrrrrccccoooooppllluubddddddbuulllppoooooccccrrrrmmmmnnnnnnssssxeeeeeeeeeeeffiiiiiii tttttttttttttaaaaaahhhhhw