3
\$\begingroup\$

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&a`Nw 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;93JQJFw`DzsR(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.awEy0G$Awq@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/r`eUfS=bz]iWBzS3;2j$mUqTz+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!<iIu$cPRFxGO&9BBv#)|m>j"~4J3AH%-d35O"=g57NHNH/]YzuJC{AVLJ.HHJ6%/XkNpU`tocc&[6$8]c<A4Kuv`L.Q*3l]B"IFZb!FpL]*.!GvWXG|#.:x]2>'d8LK4$x>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~5Isj7`8/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%/=PR`x~8SO>.Y._KKV1AfBCQ|F8&noMAUfv3cjQ%).cw{3'W]z(<[`j0>kk_N4^)i9;p*-IPOb6|wfI<7rshjiQ/Gcvk)$bB(y|3+TZbH@r`l 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?vfuh$4~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=r`Hm#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+?Y$dgY~hJ_hSST=@8DB<&|qI<j`u._td4XzCt5e{}IrVLqxK%>W'HmcpISbw<--;Er$Lm),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~xW$2b[G*9j$z?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}`(}f`$LGzA]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@F$2|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!b$5 J_Ifk.8aW+jj*>{g}[ >mE<~ffwD)tT$YdT%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`*nZWs`MdDk\n0;blN!QW;eU}x3snESczi/9C/~E=1X` 9kYxI({Ws~Yv`u@~Z)yEqb(0v4B2zRn-^7LnUL,-xvwB*J26TrMCw1IEaL_2IKl_5I|mu(4S4bmvRG[iRoBs`hN0"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"}p1qSz`7s@0p nD8t"gNsIi~hJiI<_q:@Tt/>rYn} (-G/~Bl*7\wDQ^%A8tB&h==rpR"V"[&; 1o;z/yu`~_[FS("JjC:.mU,BHX,maKyqJ[ O{slq0`Mx(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] C$g"9(.D$x{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 }X`7gNyg Xg$kq|%zoKliA/YR}~*Eqzn]IO_t!|m.N$J?HsN\T15$.:NQpFr0nAoGg@op<|_^#s}8R|JV$$ZhcJFN`klYt0wu'`'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(!LMC4sgqh`3>Yk,gZk)c|-;RTuR:OvLIkv_V(q.^_FUJQ>c=5''DS<HlSsy!K/~(2`W,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:_P`LDJ2'R3~Z"|0`qx>e{ [P<$d%j`3p;?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,$}x`E}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)L3AIl`L: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}--I`KV>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#nc`UZG<|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]cJLL`zrAEkLn^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!rsS`K\^,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(SwOR`l%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[^]9b`G}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"^u`4briqv*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~]fMH`K?-'1Ur_eK\:G)&>QVy"1eb9Ie?]UF17J<(Vt`2k6,?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>1`vms#,Pl[Ex{XKy6$*s
\$\endgroup\$

closed as unclear what you're asking by Peter Taylor, DavidC, Johannes Kuhn, Toto, Doorknob Nov 28 '13 at 23:21

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 5
    \$\begingroup\$ 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. \$\endgroup\$ – Sulthan Nov 26 '13 at 15:09
  • \$\begingroup\$ 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. \$\endgroup\$ – Peter Taylor Nov 26 '13 at 15:12
  • \$\begingroup\$ 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. \$\endgroup\$ – Peter Taylor Nov 26 '13 at 15:21
  • \$\begingroup\$ Assuming @PeterTaylor's analysis is correct, you may want to consider changing every instance of 400 in your post with 356. \$\endgroup\$ – primo Nov 26 '13 at 15:55
  • \$\begingroup\$ @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. \$\endgroup\$ – Peter Taylor Nov 26 '13 at 16:25

Browse other questions tagged or ask your own question.