# Encode as many ASCII characters as possible in a single tweet [closed]

Yet another compression challenge... but it could still be interesting...

## Rules

• Write a program that reads a string of printable ASCII characters, and outputs that string (or most of it) compressed in a tweet-sized message.

• Write a program that reads the encoded message and outputs the original message (or most of it)

• External libraries are allowed, internet connection isn't allowed.

## Judging

• 80 pts: properly encode/decode 400 printable ASCII characters
(since 400 ASCII characters == 2,800 bits == 140 UTF-16 characters)

• +20 pts: properly handle end-of-string when the input is different than 400 chars
(encoder's input === decoder's output)

• +20 pts: code golfing.
(20pts for the one who does the shortest code that is worth 100pts)

• +infinity pts: properly encode/decode more than 400 printable ASCII characters (+1 point for each char encoded over 400)

## Tests

Here are 400 random chars for the 100 pts challenge:

)!"k-;~|L?=j'*VBcZ;$'LbRv?:8n.[fc2'"d.Qa>$Sv*)K2Ukq(Xh^9MJ>WeeKVy:FP}^9octSYSxHx%uqpM%51dAVUl$x5S4hG[\2(SN3'BGEt9(|\jo >xd'k]F6wf"4a<SXLiFTR(4c]J$,uy;N9*f\c19Ww<~|WYY;vR<:#@86JhPRSg$9:wnVPpB\f3uvGWXDa>O%qcXo=q^%#e|9+j''6Rk=i&N5]U]zbvLDu%pz,=A}qZ+T^s/1V,_$-INH).BB].:GPQGwUe({oDT&h\Dk\L$d-T_,.#A4x nPY(zYgU&[W)T~hvta_n4,vCvBDl|KWUlUdqvNB_;#6b35$<g|f[%z(pgICW*E!?@xAS/Q^\@#bm~fA1n@sbrR~uAUcw!9x:u/PN


Here are 10,000 random chars for the infinity points challenge:

EiAJ}%15Wl5#yc&xD38}>aU6B6zl@XB||'VS@AN<Q=h1OpeiTXTC"1Tx>WH?kG9Jl(%JN'?tXtjZiNS}vmpR+Qg7R2E4e4GiN'BXc9cKRDWUJW-.UeZ/Cd{=O7L<s\ ;7w?6|XmC*5M@ Tm(kdv}^\tm:NlQYfSl&aNw y;M\Jy~0I3iGJXbfJW*P{I\{.^/OY,\'} Kx#S-1V<P7)3L&rVV,p=s8\?Ni(qFM[t%o qId;%C}j6QHY2kj'Kb6k}; 3jeROHj:P.r2S?nL>Bukp_lb5Ex?_Q'mR(GgxmrVt|LD]j|Y3I@^gLQvdqF%-'AF"7{[C/kR;ye=7V11!k3|<%]P=2X0biSMB":+';KkJ-'itP"eT%j8tUaIy5@c#aV:75}cMqeEJzK1:C91PB^-{BY0B0(?f^FTh@[v.k@jNcBM{QV~(<XI&Qw+bF70*gP/QGI}Mlk]<5.j$1B?HRQ5.IM^HFCF0'w&x!ImcdFzrs(h0Q9>m+Xc}8 Rud.W#*)a#'*64|=,LBbgM2,P\Da+{OhM3i{G6u%_Nc*vyMB2pbOI5~Zd7}A/j5PqC!DbZ%}(;*"+7] 3q&wxu-j_hDoN0}QD9(%C$EmZmW4tkyC7^>l3<V\VXl0|!LVvh~dH7 1E_cVN#jX;93JQJFwDzsR(e8"^Oq|%Vyo |iOOQ%o%F9N|NWK^UVU*"$q'&HYJ)9@ m^;o[Ia'Yt[EJqFbn#:\snkI>a$$EJ@+;I].f4hC,]MNxDy[.:#rB+#2P~<6O>::}_/^PoqhL9#ZY#rjsV9~WYA+m::QoL,jC!MA(K-~RD8_)14XQ=J0X#}y2Pln"Y:TXEL1Z;q|S45[]|U:+CC1 |(]ql1\L<[FO++-M;7Zqq2=n i*vHr3Xw23;fyUR:FgV[E!uzj ]9F~xt-9j'G[SY:}{glFL/~c:J?a{50zdL#emegR.}}0bJ%*L~UH#R1eQB1}GNj,GE:? ^'-As.Uog3?FFM~{BC"\7FQxl<lPS4Y+E'5QLUaOH:K-Ys.awEy0GAwq@5hs2Js8"OA!Cj4(n{91KOlwH/ncc(- tN|1RZDp"St[ WpsjGX6qSIDF[u?jl:%}"dWD$$F,0>6PTmt4=&hmB!@pD<rW:uwLkfTh.GF)WtxEzHsO>B<ftG(9Nyp6ul\6%o=}r".hS0XN*k;P,F/reUfS=bz]iWBzS3;2jmUqTz+p~9^N:h9tMj@,Gp{Cks<+A"ZTAx;_mO9=D9RU{[4@n;f^J^\0gMLdcdIay.8rU})@(!2\@uu/@V,jB^?Pt;m0*VJ'7vC7i]"?"t9q,{5o>o!<iIucPRFxGO&9BBv#)|m>j"~4J3AH%-d35O"=g57NHNH/]YzuJC{AVLJ.HHJ6%/XkNpUtocc&[68]c<A4KuvL.Q*3l]B"IFZb!FpL]*.!GvWXG|#.:x]2>'d8LK4x>KJOJ"a:1fd.C:&s<FZL8Gxa0<n-dhm/+aruzU*NJM3ysN\pKiFCZj)&gpv\eW{Fi_\qmoB_Bpm1?D].uKJC,R>>ryQ!kiB>o84N+)-C9w@3LNNEGR/A!nzXG#P_/qnQps3.tM~5Isj78/q)U8+7~wHllm.@x?u:w8Q&uG%U=~;qM#blW]RSFG{~I+UUZ&,B4M^-|Ak5xMNC}c#YB>)zg-ch8k=UwTY9IZ/*K5}-n&_ky hz)cD]sjK?0[[<TQ'UcC=m+P.5IsKAZ70r%m*B8c2wcDX81Y^(ej*"q7BGqW/7am((Qv;:{~*57*<eA6*Bz"kWbSlb4/k%/=PRx~8SO>.Y._KKV1AfBCQ|F8&noMAUfv3cjQ%).cw{3'W]z(<[j0>kk_N4^)i9;p*-IPOb6|wfI<7rshjiQ/Gcvk)bB(y|3+TZbH@rl 0FVN1;On%3xbS bk{r<.A1>,>l'@,Qrnl9"H,S.{9Hv|6RAE1UuwgROJ?^~W3FR,'whO[]&V+U_vg|C();4~Iqen+/qz_lY~>MSnJ5O@e#bF3+[*W %"DI"=IUmP|gQ3F.vtD(rb7{>p^Umup]^mtSN'-,TV^}7\e_M6NFa Q|]X} <s|ij{A,]gF9]ietkDXH7lbTuEYTQ79MO#~{7KKB@Pub%i;%m }!UKNw?vfuh4~s}V~;}ZDZiJ7^Qb9Uq.@:O-C9jVAJ|&(48RVE6tD@u8Jn;ITe2k?|?u]4G23!YILC ETi^J.b|lpp&!_=t*6JJ{j=SDPHUmSAGR.-XU#3ssu"^?54<,Lq=3Zj"i ;VN+gMx:*PH5m"r/JTL#_?r4AXT0|%U6T=rHm#U[9c&l2ZL tOm,Dad_i46e?=l*-WC[rnjEq^\Vb%C!OS5;6&dX-^<^\x !1/62=EoqplkcmsAV8vUG5_3-"2*(!I"]<8UnH"AN[t<q6h%7TPiT!SE%D7f+?YdgY~hJ_hSST=@8DB<&|qI<ju._td4XzCt5e{}IrVLqxK%>W'HmcpISbw<--;ErLm),Hm|zSy/AY!Oq#XI%M?<cPLHIyhFfY[xr@aBkVd8~vbg(wheGuvOOlioYiZwghwk3(~Z_<CMyB~lIJ8dqMMr*RvY8qq8j{*.BXrVf;^XnxYwgL'#K8^G,KRIZC&y~r~g&z&Gl'qxzwN(N<gr|unvWS@\hye~V{ok&zxUb1^o}zwXiy(KzFU]I*(w-o>\8;,{EEjPDhLm%3x\H#jEmXL?a]>+72V"p#p"Z879p#&1F0 uoslpR}kn=DKPg<F5obU6|gLC4fJ\7*(EI0sf]G9RS"&U9?T\+T<DU4(X4qW'J>W|%A\qb)2 C1b==vBw+ /ylp1c[71OJ9:MdYulI&^A=OsWS-n1xs\P=HZyfy9C{<#YQ"'5G3_9^lk*5qh;>e^yXn=(ODoXgW#&eW|Fl@{I2ay~xW2b[G*9jz?3cz;c?3;;]#T<g!:IIFaxv];4 eJ+cL7!"rK]15M#7=(V2j_AgiKe*Oo4af',l*]+w@P.I#Th6GcS-T\sHh@%=/9zGB~oeHso}F#etPV7wgoZ[\i-/i!E+O!7A,)I:YJh|0Ke7,G.}h*DjP}(}fLGzA]w;S(:7[";v.{DHVrtg,V)K\n\V>Kha}'TB1_KwGgVGn[OP+lN\VA|Ts#i'x[c[Uxk#eQC'YlyQBWaiqg/WxRPD9]B&[6lS}MnODfk,b_,%gk!kFMGKV?i?S3i!_s'J&QP87L=notM=_G>O+!-?VYt(X.U5Z;e3eI)>iK^: .GBOa1Su%cAkd<*5c@]?4) gh@ XIEzCjt%?6aitYIo<b8w3_t@V?uCP9Bp)8IBDLThXryrva^K_THqXP,zDb!WOZ1]]S@*(Tt,^jaRQP9w97LrEUp&LCp^I#wPHv+u_^PQ=n:fS&L!<ivhvZZm+}gm*mSfZ&cC/5!:Q#,ng?&KB)UW:PkW't7XH9F}AuTmBtBeiK(k7~GChdaAP[s0#mW5l0@F2|D#BRP>IWdpXD3oj]<bk]\}5!0N/rU<dlP5}S%\6;'4QxD*M:ID=\h(7 WOz?;{r+p)dcAvzo;N(K.Mgt?\;Sr]NI{m!z"2+iiuF.R1CT{N[%3H6+7]Q~|/^$>|?km-)NF65*>#VBy~*zNe*\_q@;]?;3o'va^p#{HrZ9EdI5,>x|V\5+ky7;pOK98_4FdRY&~sbJD|n{sH:w4& DfL%s Y"!'/B:-n'TF1&w3e*g]^s7vqVAoyh5@_Y#g.b4Si07E*AH$d,5!'xm]}A=ods:(Z:>_#Sfu>Ht;N1[8)Z<"&"-S;m{&uo+%.[:.=TP]+ap;[P_Qf#N!aE:+1ujGz@?uBZrxIDKGQD.x*Z'tOv U\H3I.B<"5)*HZodRpn:*:O{yH@S'7Aai{]_&[~A8L"&|SY!b5 J_Ifk.8aW+jj*>{g}[ >mE<~ffwD)tTYdT%1."v!H-uj@ d[Wj:e<Tx+dwD<UVAJjTl3gbx!*x"La%\Gw>?9\Fbd1kA@0rDLkZK?+r0Do(F,^OlY6j0^qWI):a8a_Rs'K62L7m1_-O?OY3&5~K()ABj "g;MIjm5?t;E?YF9]*0n@JOTVj-}[=tqg'BJYCj7/_(&NLLA|bC&ggLi4GF@\ySdS"-gfA:5*nZWsMdDk\n0;blN!QW;eU}x3snESczi/9C/~E=1X 9kYxI({Ws~Yvu@~Z)yEqb(0v4B2zRn-^7LnUL,-xvwB*J26TrMCw1IEaL_2IKl_5I|mu(4S4bmvRG[iRoBshN0"BDqXrIor{f|p{:68,Y(w_]_RVi]I|PJk-3P7/"4k^Sq/C^vv 0qR#>'YK^J*3wZTV-CR]i^-!w< b=g@@5TB5JT'HJUB#<|lBJbc[Mw8'xTtga Kj,7byTV)CW^KJE8?Q#G4?Yvcj\P93Wb:["MQP'32AdL91K#,]&#s2fgZc8@j#; UaVTS5"}p1qSz7s@0p nD8t"gNsIi~hJiI<_q:@Tt/>rYn} (-G/~Bl*7\wDQ^%A8tB&h==rpR"V"[&; 1o;z/yu~_[FS("JjC:.mU,BHX,maKyqJ[ O{slq0Mx(Hd.)90Z3,MK{607\:uS^Czp&02b+k[E(uu6X}WSrHlkSE(=Wfm8/dVCGoY!9re^p9]srqV[=1.CytL%@:AJub7'S>W8QEqr.9)w+@B5POf?Yv%J=AV5.<-[WA[WHrq~*6>L,5yOdrosX|l;8lZWS5:ZnV:F1k.JfIuJiq5~(\kNz#5zY}nd"WB#A1"+:v&td]Cgz-vZTm~U%dk1V4<8h/-kgw~~"1^AdgP6rn|ZI|awOTZPB r*9p3Mn$$Jj%Fb}<}MoZ+GvGv]4j:J/]="@Wtb?%qMEHeY.xt }l/6] Cg"9(.Dx{8[uJr+%mVWxre@}/h}w5B&\ZkO'rC%0KT&x&"I2P@[t thjTKtdvh~'~7w0RKlz+j:/}@;06@dQEjh4|unWGmM_|_-I<#l&B}n;T.cc3&Ac)%m8pU"PI)/4n9uK[@)=G}px(+^b+Tf//PTEMx}=MkThL'+r}yM }X7gNyg Xgkq|%zoKliA/YR}~*Eqzn]IO_t!|m.NJ?HsN\T15.:NQpFr0nAoGg@op<|_^#s}8R|JV$$ZhcJFNklYt0wu''Fmr<KqU%Q\a^\l|LS-vo8BoqE\R"gZt*Zz1#dL##nw<iZO%=rq'><YR"=]Ln\-uL>.[PVgc=y2e'$7^;I9*#15pWk2Dz2dw5c{[DwnOQ#cC=_Y#x;1][ibxmXKfEzJm.$gK9{a#@O{RS"P\C?-dU'+.";+VluyWi8>k|p8a6AlohY=\{[-TNp?WA m|w,SJYX_'AqZiy9-2Aw\>mC\B39o!#J+N<zs!Qy<hdk16t[=U?Za9bI_l&a ^>6qUt#:bnF~N[#V^/_\2N%[,V#wcb//LkyV/Se#pQQ"n7*h%N0w6~"f0ma\IA ;0(!LMC4sgqh3>Yk,gZk)c|-;RTuR:OvLIkv_V(q.^_FUJQ>c=5''DS<HlSsy!K/~(2W,z_"GMv?S9~F=J\)A%d(k")O4(|8zQ]:qW{XD[,w#vW$.W^]I,Y(EE!wNw(1:QHD]w7Gs5zj:7/6e"lL-=}7DAaP#vY(ol?j@n9n-/2fS/)[;7goIs3~52%GRy=c!VVf]N8lKY.\Z@lud(Gd?|'s*Gc'h.|-VRN:_PLDJ2'R3~Z"|0qx>e{ [P<$d%j3p;?4P:N{!}Zhs7ZU8c'\R8*Ks4a~?1$S+CB5*jxAp-lp:\Fcf*QCHF>x-e,=JX{ZECu5E(0bro%L^aw$7a,];t0T?J}s O>[r4j5uN3wSTU@$N>qFu}GiJg I7Uhe;pjJ&5p8HNslJ#pS10I<kEZ&.AKZQjz/Kj%[trKL73){!7)%]G(gV14mg/ifyzyh9h0Ba[I_@jPM<zK4Ei_3{[^|%sz3yf%vghKwz5;bO=kzup8h}GMx+!_?sr-$x<$AwW~I%4(tl;K,Vb6E 8PyYy,&< gB*kDp*I@gCYcu"i#8ro.8RffGn|)d6pB3itw |CVj~$2{;o,vp>qS#c\03UmW,b",g.QGREG+IldR@]p<{2@Pn}bx&io<Hn5</'@Uu>A+v %JF|OrM9ZW&AL4S;~OgVy>L,C~l6g4Xnw-o!33+{ :*pj_6Cs%_z#b[h}OyNE54I RjfLP<mzg](l?!64;k4p25&q-6!u}Pm;z.@Hqh-eW@5DLL\;l:75s:38;Dz\Wi=c;{Qy5_6\kN]?-n6H.V1(X2f:]GyxM!;95Uo>Q>/2QNo5]=A7Ro*{WL%T""M9+k/$Ey':6{/(2C}9K3@Z4]s+"+~qUjOKvA^;<AznTn]#[fu~17g>#T@gzQh].JRIZV=Hcs\N2{yCZ1nrUjmci7&SQn,$}xE}y(2 j$4@g"2[Y{?,K^F^$56A= AHGO"mR?Bk,I 0RvSBM\o;Sh98[clP>K<KuB#bDB]!q!AQ&YMO7UXR P4'.j}"6>7J-Qv!1E7.TERMOng"PaKd*f=pRs-| Oe3Yk4;p&U EC&fT\3y$gyBh}59BJ] 5H_URas/?Wi%+5~.P'"EcZe/wJ8{?HSy/WN!dNyJ>W<T&g:68Y?Z2H%1'J6owKW:DbE[;B\UxQ1IQ}=C=EO_wk\D[pB'^Ha:3$+F~Q@d6HGfAY3GHY>%Lo8<DJk?+u~WB<6}o1qaS2S4qQ[n$H"jgkR#YNA"y*.p9YaN2dF=sd5tz2w""+Vj}%L@4AgH!?P>u}5I=%N!tJ;v)HZDKmL1*+z@8P&+3CW9"7Er?\!l@q]029d*QOJ*-{J%K[AB^{Q"4[{N+oW:,66BgNQ r}}$ip)L3AIlL:P&h5IJG;&:DhPuICkv&_{E5U#^yD&d&\YcC<- ~+J_$_J@!?t$pmM$7$/>s>'qGrV"3/u@jqBepkN.;<&@uo.\GG?rqsw83~39R3?#A-1HdW/;]PGu7ft(fU(bjALi=3"/yT+vz!}nNB8}--IKV>TpsrymurHRJSRC:c#;jlHDgNqnWq,LT4s]AV1PN8ibA$YE^(VT\yzKr?A1@<~t~gO(;r~#E^M]L' *%FK:O/5Q@%auzRr@8'Rj]gd__F/ttL.TJAYVk8)5}Z6Fe"1$}xClDn#qVLftpU80'.PAhOz!H7S*Yu-w4&7x]!vSZ]bt2AZR_YpbO_ppb0i{ET[YEwO5cJmVy#L$l>|ycw+IH oZTR,eccQ|OsJpP*#&^#Gtxja42?WxJ,Mse\.vaN6m""*"l#y,ejEBb*[|L5n0BU5,RM=(sBz&Pl>A|[a'T:!R)Fcw;^gBwJo 9_|]Zt"k/x<qfaPVMcq(1Zu*T[sYsq:OUuS[;Up]nh&5?R>Szg4;:-pChq5S}v6/_?HSPR=A5nx{?zF%7SjD12s"kUW1K&cN0An*7wI.T42x2hyR")UlXd#ncUZG<|e$32?xLNzKQgi::30N]&A*FpQ0 >Q;bs#oK?h(;/4pBQ#9g&?Z'=?HJC}(=8}aAQ3;,P}f|q6EAmymn4@_#?.7EKYJ\n-)Ajgw!RRWs4B!pv@0SK9HL=;0VUigV?[:|e3j)$-IC7^fDl^D9K\$m'$}MRn.!]<1^>lF,XwIYs$v:)>CtOv;P5Ig/yh e'uX6lIyurgY*|!O8jcHkGk(U0uY~H*tBdV%W:wvHJ?'yw+* Dl%5dW\GT[b;(UCigV]25."XPjM l:5!ta^)OM?6)8Jw40E^}R {|wkn/jDPx*<OwG)T[>1,)ZE-@Cgx|}V7#o=Khr$9/#V,yl5,X[}qQWO=c}/|3XjW+.3hrSvKyO>NdNulqx(MST+/~\,;cxPIJ|(-{tmS&4]?Y|Z"N3FYAh&GX(wQ4x;:XZJjb3iq8Ek"Nrwz?)J=@Hw>Eo<.?pvs2,=EXa4h):U<.$?XZ-@^%e'^|CL"gA5:o:Xd1p6ER31S\uThj8WKdP/$$q4SXrHJ(8,%&$4\7''Ps .n&>/Gve|"#-/J\QB>Ck[Q#;C;tq7Ey$CY/V; t"\](Yye]bXHT#T4x+uXh.G:'%B RKVRH$UPi6NQ<}BbptjJOUb,~D>1,dXD(~Q1{-d%e-Hr_7(Tk&[JbKI_/G0F(\h39X;#,(ew9i2'M#l&Em[^G@bjLPb \>+Ihv+85u7vz]cJLLzrAEkLn^k^7;vls+arm)l>}V\5UYp>ioA8Hzl7,[OI|w.s%JY#ZlV^f.ULA|*2:G}^%gi3PlbKTc<Y/tj,0u%l'Ri%?|v[L5QY"a6>44$QxHZH^aBp:Q!rsSK\^,p%H;>OlOo@4C aLxI$Y8FRbz4/b95<.@aN&k[$.gi#* -NJ9ybu~Qv)K58UdST-R#mXf'!.YY#CvcEVKldg.B4y>!~YxRnxtiglv[mYi!.aHErGI:5"Xyh;m#@\w'G&in<:lI~|&<t+Rdn*&,?|O#o !>Aslnr\;JNUBrJChcuWq?c&[<G4[~j~ItX)o|=TdLwidsH)y#f:ug!hg_A\zKu!pWy3F'C/%mZokhifo-kgHB{VwC^_Rrdd'<iSQ}JHt6fhn#1Ejih/!E4\!jH"@J-wO*@3W)3hM;#9(6avRny\X!(tm5?Ck7{w5>xuzKT9}Be_6G+J3&',0&/._u"=|Uywq*d$4">k(TBqN)yj"2udINFts4=%+a4G?}sK]uWhI@0~Zjr%f-PU|^\b{+7?,'1+W_|]z_mQBM[D]kciym\_rmPP3{,ud(mYqFT3D,HvR^$76H]wO2sFIz~$DSC|w/I[yinuru?D\~t:|3^SX:Vb(SwORl%Q>6cbc*c^Z6q&KqbP*6-6iB&tY]nI~#4pbsYXO,JC0|?3Pt8[1z"N3](uLiTCDr.TpogqnVU d-0EWN[9Ogh;6mk"3m[glksKc]NMvFt!E|_OM=4$2<][YcmYT7hm_"L)k:6](xNT*|"NJL'%C;/(vahu/Bm{/j]v8{ZRjiRA(Hzo/[Gb}H;hlb[^]9bG}W0=aA7t-9EgU>pMp/Q-j==_XeteHYX=1Oq QL<B#mtsq."$z?wC%a#NB(V22mS2@cfZEXOu>KR~,th58Lb+EkoI"phhr.pb+h9f=iJvf,Q<+_FkYOgO4%/Kiz[thS".1hn7o;<lc!!!zAv/'7tdZY{iD$mS!jJ*8T}!Xl)LpG!Jox<BD?zOr;6XomPKDs=aw{F!2G5I|e>9m%SiXWm8Fr47Z{y+rpJ1.{pHF|6sEn(vL>Yu52\,<9A09/L )(i> gx!FD.Rlpn~}oRT4qEnfy%EJQBqJbFQMz2xDsjn*PJ-%.o7r8#0C/*im)~bS q"^u4briqv*f=G7E)'Mnp<"%:gm WW("nw_|9\6"Tk0$j^A4]Z+<\(:YfL4?qEFrL>#}$Z-60~Jsu[JUx,S(.Qi6b}#Z"f]L8xlzoG>]b&]L!M,}5-r]dBb*N7D0Ihs~WDEIaTQx|A<:*VH|a,k^cm;t3cC6Z@{[3j#lMVq?K'3?*?I~d)4Y$_i?z@f&lgz>w5di_7yWcbet$mRj<jRHA3!xteOrQlyUD6R?E">F[zInyN>+I%*S~RdM/p$Mm{u~W0U,1.nQFNtOut&VP@k(vrjBby%wTsRE|:=F]zTEG)bvICQ{lfI[p9:2hQD*<!^4"qQU7P7B1)i/u$*{v:{lH&C<!i3{;}yK_#qyZxeDgyE#hc<wSy3gd0!O'x<!{gTB:}P-!Kf@bEBZs[X>.+^x+wS;w!?!OJ~]fMHK?-'1Ur_eK\:G)&>QVy"1eb9Ie?]UF17J<(Vt2k6,?G=hG6h\T5KkDAwE$eV+|/W3m8$Ai|+E/w.]h*#\8Yi;WX-]*PBo,X'X@64KZ'4u_k~%Uwvrrkbo-g"vb@2gO}"garNwf&,V/!-43,figAwI9"=%jMtTQSBIOA%wI"1/S3sGLT/ExFbG1n(Qx6h4Edk"C+#Mv.{%h"C'[bM}wTw)*G,h\3dX6g!.T=ATKgpBuIh%<KZQ<#pvd9X?"tp6^)mB4Uf"~4\Q/wU0sUEQ!pejIR-irWQ;ul|Tyl}FH pF>1vms#,Pl[Ex{XKy6$*s

• Note that compressions don't work very well on random data. Seems like a stupid challenge for me because encoding random 400 chars into 140 chars is not possible in general. – Sulthan Nov 26 '13 at 15:09
• Can you explain "400 ASCII characters == 2800 bits == 140 UTF-16 characters"? The first equivalence is ok (albeit pessimistic given that the requirement is only to encode printable ASCII), but the second requires that a UTF-16 character be able to store 20 bits. I think you're misunderstanding something about surrogates. – Peter Taylor Nov 26 '13 at 15:12
• FWIW Twitter counts Unicode codepoints after NFC normalisation. However, if we're talking true Unicode that limits to the defined codepoints, of which there are just short of 2^16.75, so ignoring the overcounting due to normalisation's non-injective nature 140 codepoints is only enough for 356.9 printable ASCII characters. – Peter Taylor Nov 26 '13 at 15:21
• Assuming @PeterTaylor's analysis is correct, you may want to consider changing every instance of 400 in your post with 356`. – primo Nov 26 '13 at 15:55
• @primo, I state that that's an optimistic calculation. The actual calculation would be a lot more complex, so I think that this question needs serious rethinking and am voting to close it. – Peter Taylor Nov 26 '13 at 16:25