Super simple challenge today, or is it?
I feel like we've heard a fair bit about double speak recently, well let's define it in a codable way...
Double speak is when each and every character in a string of text is immediately repeated. For example:
"DDoouubbllee ssppeeaakk!!"
The Rules
- Write code which accepts one argument, a string.
- It will modify this string, duplicating every character.
- Then it will return the double speak version of the string.
- It's code golf, try to achieve this in the smallest number of bytes.
- Please include a link to an online interpreter for your code.
- Input strings will only contain characters in the printable ASCII range. Reference: http://www.asciitable.com/mobile/
Leaderboards
Here is a Stack Snippet to generate both a regular leaderboard and an overview of winners by language.
var QUESTION_ID=188988;
var OVERRIDE_USER=53748;
var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;function answersUrl(d){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+d+"&pagesize=100&order=asc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(d,e){return"https://api.stackexchange.com/2.2/answers/"+e.join(";")+"/comments?page="+d+"&pagesize=100&order=asc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(d){answers.push.apply(answers,d.items),answers_hash=[],answer_ids=[],d.items.forEach(function(e){e.comments=[];var f=+e.share_link.match(/\d+/);answer_ids.push(f),answers_hash[f]=e}),d.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(d){d.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),d.has_more?getComments():more_answers?getAnswers():process()}})}getAnswers();var SCORE_REG=function(){var d=String.raw`h\d`,e=String.raw`\-?\d+\.?\d*`,f=String.raw`[^\n<>]*`,g=String.raw`<s>${f}</s>|<strike>${f}</strike>|<del>${f}</del>`,h=String.raw`[^\n\d<>]*`,j=String.raw`<[^\n<>]+>`;return new RegExp(String.raw`<${d}>`+String.raw`\s*([^\n,]*[^\s,]),.*?`+String.raw`(${e})`+String.raw`(?=`+String.raw`${h}`+String.raw`(?:(?:${g}|${j})${h})*`+String.raw`</${d}>`+String.raw`)`)}(),OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(d){return d.owner.display_name}function process(){var d=[];answers.forEach(function(n){var o=n.body;n.comments.forEach(function(q){OVERRIDE_REG.test(q.body)&&(o="<h1>"+q.body.replace(OVERRIDE_REG,"")+"</h1>")});var p=o.match(SCORE_REG);p&&d.push({user:getAuthorName(n),size:+p[2],language:p[1],link:n.share_link})}),d.sort(function(n,o){var p=n.size,q=o.size;return p-q});var e={},f=1,g=null,h=1;d.forEach(function(n){n.size!=g&&(h=f),g=n.size,++f;var o=jQuery("#answer-template").html();o=o.replace("{{PLACE}}",h+".").replace("{{NAME}}",n.user).replace("{{LANGUAGE}}",n.language).replace("{{SIZE}}",n.size).replace("{{LINK}}",n.link),o=jQuery(o),jQuery("#answers").append(o);var p=n.language;p=jQuery("<i>"+n.language+"</i>").text().toLowerCase(),e[p]=e[p]||{lang:n.language,user:n.user,size:n.size,link:n.link,uniq:p}});var j=[];for(var k in e)e.hasOwnProperty(k)&&j.push(e[k]);j.sort(function(n,o){return n.uniq>o.uniq?1:n.uniq<o.uniq?-1:0});for(var l=0;l<j.length;++l){var m=jQuery("#language-template").html(),k=j[l];m=m.replace("{{LANGUAGE}}",k.lang).replace("{{NAME}}",k.user).replace("{{SIZE}}",k.size).replace("{{LINK}}",k.link),m=jQuery(m),jQuery("#languages").append(m)}}
body{text-align:left!important}#answer-list{padding:10px;float:left}#language-list{padding:10px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/codegolf/primary.css?v=f52df912b654"> <div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody> </table>
To make sure that your answer shows up, please start your answer with a headline, using the following Markdown template:
# Language Name, [Other information] N bytes
where N is the size of your submission. Other information may include flags set and if you've improved your score (usually a struck out number like <s>M</s>). N should be the right-most number in this heading, and everything before the first , is the name of the language you've used. The language name and the word bytes may be links.
For example:
# [><>](http://esolangs.org/wiki/Fish), <s>162</s> 121 [bytes](https://esolangs.org/wiki/Fish#Instructions)
262 Answers 262
Malbolge, 20775 and 2334 bytes
Probably I didn't beat anyone with it, but it was incredibly fun to make.
bP&A@?>=<;:9876543210/.-,+*)('&%$T"!~}|;]yxwvutslUSRQ.yx+i)J9edFb4`_^]\yxwRQ)(TSRQ]m!G0KJIyxFvDa%_@?"=<5:98765.-2+*/.-,+*)('&%$#"!~}|utyrqvutsrqjonmPkjihgfedc\DDYAA\>>Y;;V886L5322G//D,,G))>&&A##!7~5:{y7xvuu,10/.-,+*)('&%$#"yb}|{zyxwvutmVqSohmOOjihafeHcEa`YAA\[ZYRW:U7SLKP3NMLK-I,GFED&%%@?>=6;|9y70/4u210/o-n+k)"!gg$#"!x}`{zyxZvYtsrqSoRmlkjLhKfedcEaD_^]\>Z=XWVU7S6QPON0LKDI,GFEDCBA#?"=};438y6543s1r/o-&%*k('&%e#d!~}|^z]xwvuWsVqponPlOjihgIeHcba`B^A\[ZY;W:UTSR4PI2MLKJ,,AFE(&B;:?"~<}{zz165v3s+*/pn,mk)jh&ge#db~a_{^\xwvoXsrqpRnmfkjMKg`_GG\aDB^A?[><X;9U86R53ONM0KJC,+FEDC&A@?!!6||3876w4-tr*/.-&+*)('&%$e"!~}|utyxwvutWlkponmlOjchg`edGba`_XW\?ZYRQVOT7RQPINML/JIHAFEDC&A@?>!<;{98yw5.-ss*/pn,+lj(!~ff{"ca}`^z][wZXtWUqTRnQOkNLhgfIdcFaZ_^A\[Z<XW:U8SRQPOHML/JIHG*ED=%%:?>=~;:{876w43210/(-,+*)('h%$d"ca}|_z\rqYYnsVTpoRPledLLafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(DCB%@?"=<;|98765.3210p.-n+$)i'h%${"!~}|{zyxwvuXVlkpSQmlOjLbafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(D'%A@?"=<}:98y6543,1r/.o,+*)j'&%eez!~a|^tsx[YutWUqjinQOkjMhJ`_dGEaDB^A?[><X;9U86R53O20LKJ-HG*ED'BA@?>7~;:{y7x5.3210q.-n+*)jh&%$#"c~}`{z]rwvutWrkpohmPkjihafI^cba`_^A\[>YXW:UTS5QP3NM0KJ-HGF?D'BA:?>=~;:z8765v32s0/.-nl$#(ig%fd"ca}|_]yrqvYWsVTpSQmPNjMKgJHdGEa`_B]\?ZY<WVUTMR5PO20LK.IHA))>CB%#?87}}49zx6wu3tr0qo-nl*ki'hf$ec!~}`{^yxwvotsrUponQlkMihKIe^]EEZ_B@\?=Y<:V97S64P31M0.J-+GFE(C&A@?8=<;:{876w43s10qo-&%kk"'hf$ec!b`|_]y\ZvYWsVTpSQmlkNiLgf_dcba`C^]\?ZY;WV97SLK33HM0.J-+G*(D'%A$">!};|z8yw543t1r/(-,+*)(i&%fd"!~}|_t]xwvutslqTonmPNdchKIeHFbaD_AWV[><X;9U86R53ON1L.DCH+)EDC&;@#>=<;|98x6wu32s0p(',mk)(i&f|{"ca}`^z][wZXtWUqTRnmPNjcbJJ_dcbEDYB@@?ZSX;VUTS6QPO11F..CHGF)(C<A$?>=<}:98xx/uu,10/po,+$kiih%$#z!b}|{z]xwvXXmUUjonmPOjihafIdcbaD_^]??T<<QVUT76QPONG0..-HGFED=B%@?>=~|438yw5vt21r/o'&+lj(ig%fd"ca}`^z][wZXtWUqpoRQlkjihafIdcbaDBXW\?=YX;9UNMR53O20//DIH+)E>=B%#?"~<}{9zx6wu3tr0/pn,%$jj!&%$ed!~}|{zs\ZZYtsrqponglOjiLgfHdGEaDB^]@[=SRW:8T75Q42N1/K.,HG*E'=<A$"!!6;:{8x0/4us1rp.-,ml)('&%$#z!b}|{zy[qvutsUkTinmlejchKIIH]bE`_^A\[=Y<:VU86RKJO20LK.,HA@E(&BA$">76;|z8yw5vt2sq/pn,mkjj!&%$edy~a|{z][qpuXVUUjonQOkdchKIHH]baD_AWV[><;;PUT7R4JIN1/K.,H+)E(&B%#?"~<}{zz1654ut1*qoon+*#(i&%$e"!~``uzy\ZvonsVTSShmlOjLbafIGFF[`_B@\UTY<:99NSR53OHGL/-I,*F)'C&$@#!=~|:{y765vu21*/pnnm*)(!h%$#d!~}__tyx[vXnmrUSoRPlkNiKa`eHFbECBBW\[>Y;QPU86R53O20L/-I,*F)'&&;@?>!~;:92ywwv3210).o,+*k('g%fd"ca}`^z][wZXtsVqSihmPNjiLgI_^cFD`_B]?UTY<:VUT76QPONGL/--,GFEDC<%@?>!<;:98yw5.-2sq/.o,l$#(ig%fd"!b`|uty\ZYYnsrUpRhglOMiLJfIGcFD`CA]@>==RWVU87RQPONG0..-HGFEDC<A$?>!<;:zz1ww.321rq.-,+*)"'hffe"!~}|{zyrwZutsVqpoQQfkjMhJ`_dGEaDBAAV[Z=;WPOT75Q4211FKJ-+G@?D'%A$">!};|z8yw5vt210qp-,+*)('&}$e"!~}|^tyxwvXnWlqpohmfkNLLK`IdcbE`_^]\?=YRQV97S64P31ML/J,BAF)'CB%@"87<}{9zx6wu3tr0qo-nlkk"'&%fezcaa`{ty\wvuXsrTpSQmPNjiLJf_^cFD`_B@\UTY<:V97S64P31M0.J-+GFE('B;@#!!~;:3z765v321qq(-,m*j"!&ge#db~}`{]srwZXtWUTTinmPkMcbgJHdGEaDB^A?[><X;988MRQP32MLE.,,+FED=B%@?>!}549zxww.32sq/(',mk)(i&f|{"ca}`^z][wZXtWUqTRnQOkNLhgfIHcbaZ_B@@?ZYXWP9TSR5PON00EJI,*F?>C&$##8=<}:z216wu32s0p(',mk)jh&ge#db~a_{^\x[YuXVUUjonmPOjihg`IdcFa`BAAV[Z=;WPOT75Q42N1/K.,HGF)(CBA@?8=~;:9z76v43tr0)(-nl*)j'g}|#db~a_^^sxwZXtmlqTRnQOkNLhKIeHFbEC_^]@?ZYXWVUN7554ONMLKJIBG*EDC&$:9!!6;:9zy6543210/(o,+*)(h~%$#"bxav{tyxwpuXVVUjoRmlkNihJfIGcFD`CA]@>ZY<:VONS64PO2M/EDI,*F)'C&$@#!=~|:98yx/4u21r/.-mm$)(i&f|{"ca}`^z][wZXtWUqTRnQOkjMhJ`_dGEaDB^A?>>SXWV98SL5332MLEJ-HGF)DC%A@#>~65:{y76w4t,+0qo-,m*j"!&ge#"c~`vuz][wZXtWUqTRnQOkNLhgfIHcb[`C^]\[>YXW99N66KPON10KJIB+))(CBA@9>!<;:9z765uu,10q.n&%*ki'&g$dzy~a_{^\x[YuXVrUSoRPlOMiLJfIGFF[`_^A@[ZYXQV9TSRQ4ON0L/-,,AFE(C%;:?"~<;|z8105vtss*/.o,l$#(ig%fd"ca}`^z][wZXtWUTTinmlONihgfe^GEED_^]\[ZSX;VUT7RQP22GLK.I+A@E(&%%:?>!};438yw5vtss*/.om+$#(ig%$ec!xw|_]y\ZvYWsVTpSQmPNMMbgfeHGba`_^]V[>YX;VUTSR53OHGL/-,,AFE(C%;:?"~<;|9y105vt2sq/pn,mk)jh&ge#db~a_{zy\[vutsrqpiRmlkjiKafedcE[DY^]\UZSX;VUT7RQ322GLK.I+A@E(&BA$">76;|z8yw5vt2sq/pn,mk)jh&geddy~}|_^s\ZZYtmrUponQlkMihKIe^]bEC_^A\>TSX;988MRQ4O1GFK.,HG*E'=<A$">!};|z8yw5vt2sqpp',+*kj'~%f#"!b}|^z][wvYWslkpSQPPejiLJf_^cFD`_B]?UTY<:VU8S5KJO20L/-I,*F)'CB%#?87<;:{z76/vtts0/.',m*)(i&%$ddy~}`{]srwZXtWUqpSnPfejMKgJHGG\a`C^@VUZ=;W:8T75Q42N1/K.,++@EDC&%@?>7<}{{z7654-t10/p-,l*ki'&g$dzy~a_{^\x[YuXVrUSoRPlOMiLJII^cbaDC^]\[T=;;:UTSRQJO2MLK.IHGFE(&B;:?"~<}{98y6v.-2sq/pn,mk)jh&ge#db~a_{^\xwvYXsrqpohmPNNMhgfedc\E`_^A\[=YX;9UNMR53O20L/-I,*F)'C&$@#!=~|:{yxx/432sr/.-,+*#jhhg$#"!~}|uz]xwvYtsUqpSnPfejMKgJHdcFaCYX]@>Z=;WV9T6LKP31M0.J-+GF)D&<;@?>!~;:98765.3trrq.-,+*)('~g$#"c~}|{z][wpotWUqTRnQOkNLhgJeG]\aDB^]@[=SRW:8T75Q42N1/..CHGF)(CBA@?>=<5|98765u-210/o'n%*)(!&}$eccbw|_zyx[vuWsVTSShmlOMibafIGFF[`_B]?UTY<:V97S6433HML/-IBAF)'C&$@#!=~|:{y765vu,1r/.-nl$#(igff{"!b}_uty\ZYYnsrUSohglOMiLJfIGcFD`CA]@>Z=;W:877LQPO21LE.,,+FE>C&A@?"=<|{{276wu3,+0qonn%*)j'g}|#db~a_{^\x[YuXVrUSoRPlOMihgJIdc\aD_^]@[Z<XW:U7MLQ42N1/K.,H+)E(&B%#?"~<}{9zxww.321rq.-,%ljji&%$#z!b}|{^yxwYYnsrUSohglOMiLJfeHcE[Z_B@\?=Y<:V97S64P31M0.J-+**?DCB%$?>=<5:{876w432rr).-n+k#"'hf$#d!awv{^\xwZXtmlqTRnQOkNLhKIeHFbEC_B@\?=YXW:9TSRQPI200/JIHGFE>C&A@#!76||3876wv3210/.',m*)j'&%eez!~a_{tsx[YXXmrqTRngfkNLhgJeG]\aDB^A?[><;;PUTS65PONMLKJC,**)DCBA@?>=6;|987x54t21r/o'&+lj(ig%fd"ca``uzy\wYonsVTpSQmPNjMKgfIGc\[`_^A@[ZYXWVUTMR5PONML.DIHGF(>'<A@9>=6;|98y654tt+0/p-m%$)('hg|eccb}v{^yxwZutVrqToQgfkNLhgJeG]\aDBAAV[Z=X:POT7544INM0.JCBG*(D'%A$">!};|z8yw543ts0).o,+*)j'&%eezbbw|{z]\wvoXVVUponglOjihgJedcEEZ_^A?[TSX;9UT7R4JIN1/K.,H+)E(&B%#?"~<}{9zx6wutt+0/.on+*)"'h%$#"c~}|^^sxwZuWmlqTRnQOkjMhJ`_dGEaDB^A?[><X;9U86R53ON1L.DCHGF)(CBA@9"~~}:9876/4u210/p-,l*kihh}$#db~wv{^\[[putWUqjinQOkjMhJ`_dGEaDB^A?[><X;9U8655JONM0/JIHGF?D'BA@?"=<;{{2xx/432sr/.-,+*)(!h%$#"!aw|{zy[qZotsrkpinQOONchKfedcFa`B^A?[Z=X:POT7544INM0K-CBG*(D'%A$">!};|z8yw5vtss*/.-nm$)j'&%$e"!a}`^]]rwvYWslkpSQmPNjMKgJHdGEaDB^A?[ZY<;VO8665POHM0KJ-HGFED'%A:9>!}||387x5u-,1rp.-n+k#"'hf$ec!b`|_]y\ZvYWsVTpSQmlkNMhg`eHFFE`_^]V[>YXW:UTS55JON1L.DCH+)E(&BA$?!76;|z8yw54u2r*).om+lj('h%e{z!b`|{z]\wvutmrUponQOediLJII^cbEC_XW\?=Y<:V97S64P31M0.J-+G*(D'%$9ドル>=<}|98765.ussr/.-,+*#(i&%$e"!~``u]]rwvuXWrqponmfkNihKfeGcFD`CA]@>==RWV9T6LKP31M0.J-+G*(D'%A$">=<}|9876543,s0/p-,lkk"'&ge#zy~a_{^\x[YutWUqjinQONNchgfIHcba`_^]\UZ=XWVUT6LQPON0F/DIHG@E>C&A@#>=<||387x5u-,1rp.om+lj(ig%fd"ca}`^zy\wYonsVTpSQmPNMMbgfeHG\ECCB]V[>YXW:UT6R53O20//DIH+)E>=B%#?>!<|438yw5vt21rp.'&+lj(ig%fd"ca}`^zyx[ZunsVqpoRmlNjiLJf_^cFD`CA]@>Z=;WV9T6LKP31ML/J,BAF)'CB%@"87<}{zz1654ut10)pnnm*)(!&g$#"cawv{^\xwZuWmlqTRnQONNchgJeG]\aDB^]@[=SRW:8T75Q42N1/K.,H+)((=BA@#"=<;49z765v321qq(-,mk)"!&ge#"c~`vuz][wZXWWlqpSQmfejMKgfIGc\[`CA]@>Z=;W:8T75Q42NML/.IHGF?(&&%@?>=<5:{876w432rr).-n+k#"'hf$ec!~a|^tsx[YuXVUUjonQlNdchKIeHFbEC_B@\?=Y<:99NSRQ43NMLKJCH+))(CBA@?>7~;:9z76v43t1q)(-nl*ki'hf$ec!b`|_]y\ZvYWsVTSShmlkNMhgfedc\ECCB]\[ZYXWPU8SRQ4ONMLK.,HA@E(&BA$?!76;|z8yw5vt2sq/pn,mk)jh&ge#db~}|_^yxwvutslqTRRQlkjihgfe^Gba`C^]?[Z=;WPOT75Q42N1/K.,H+)E(&B%#?"~<}{zz1654ut10/.-,+*#j'&%$#cy~}|{]s\qvunsrkpSQQPejMhgfIdcEa`C^@VUZ=;WV9T6LKP31ML/J,BAF)'C&$@#!=~|:{y7xv4usrr).-,ml#(iggf#zc~}|_zy[wZXtsVTpihmPNjMKgfIdF\[`CA]\?Z<RQV97S64P31M0.--BGFE('B;$""!<;49z765v32r0qonn%*)jh&}|#dbaav{z]xZpotWUqTRnQONNchgJHd]\aDB^A?[><X;9U86RQP32MLEJ-++*EDC<%@?>!<;{9zx6wu3tr0qonn%*)j'g}|#db~}`{]srwZXtsVqSihmPNMMbgfIGc\[CCX]\[>=XWVO8665PONMFK.IHG*ED&B%#?>!<|438yw54u2r*).omll#('hf${z!b`|{^y[qpuXVrUSoRPlOMLLafedGFa`_^W\?ZYX;VU7SR5P2HGL/-I,*F)'C&$@#!=~|:{y7xv4usrr).-,ml)('&%|eccb}|{zyxqvYtsrUSihmPNjMKgfIdF\[`CA]@>Z=;WV9T6LKP31M0.J-+G*(''<A@?"!<;:98705v321rp(',mk)jh&%fd"yx}`^z][wZXtsVTpihmPNjMKgJHdGEaDBAAV[ZY<;VUTSRQPI200/JIHGFEDC<A$?>=~|438yw54u2r*).om+lj(igff{"!b`|uty\ZvYWsVTpSQmPNjMKgfeHGba`_^]\[TY<WVUTS5KPONM/E.CHGF?D=B%@?>!<;{9zx6wu32s0p(',mk)(i&f|{"ca``uzy\wYonsVTpSQPPejiLJf_^cFD`CA]@>Z=;W:8TSR54I200/JCH+FED'BA#?"~<}{98y6v.-2sq/pn,mk)(ig%|{"ca}`^z][wZXtsVqSihmPNMMbgfeHGb[`C^]\?ZY;WV97SLKP31M0.J-+G*(D'%A$">!};|z8ywvv-210qp-,%ljji&%${"c~}|_zy[wvYtVlkpSQmlOjLbafIGcbE`BXW\?=Y<:99NSR5P2HGL/-I,*F)'C&$##8=<;|{876/4u210q.-,ll#('hf${z!b`|{^\xqpuXVrUSonQlNdchKIedGEaZY^A?[><X;9U86R53O20//DIHG*)DCBA:#!!~;:98705v321r/.-mm$)(i&f|{"ca}`^zy\wYonsVTpoRmOediLJII^cbE`BXW\?=YX;V8NMR53O20L/-I,*F)'&&;@?>!~;:98705v321r/.n,mk)jh&ge#"ca}vuz][wZXtsVTpihmPNjMKgJHdGEa`C^@VUZ=;::OTSR54ONMLKJC,**)DCBA@?>7<}:98y65u3tr0qonn%*)j'g}|#db~a_{z]xZpotWUqTRnQOkNLhgJHd]\a`_BA\[ZYXWVOT7RQP3NM/KJ-H*@?D'%A$">!};|z8yw5vt2sq/pn,mkjj!&%$ed!~}|{zyxqZutsrqSinmlkMcLafed]b[`CAA@UZ=XWV9TS544INM0.JCBG*(DC&$@98=~|:{yxx/43tr0)(-nl*ki'hf$ec!b`|{^y[qputsVUjoRmlkNihJII^cbE`BXW\?=<<QVU8S5KJO20LK.I+A@E(&BA$?!76;|z87x5u-,1rp.om+ljii~%$#dc~w`^^]xwpuXsrqTonmOOdihKIe^]bEC_B@\[><XQPU86R5322GLK.,HA@E(&B%#?"~<}{9zx6wutt+0/.on+*#(i&%$e"!a}`^z][wZXtWUqTRnQOkNLhKIedcFE`_^W@>>=XWVUNS6QPO2ML.JI,G)?>&&;@?>!~;:9816w43tr*).omll#('h%e{z!b`|{^y[qpuXVrUSoRPlOMiLJfIGcFD`CA]\[>=XWVUTM6QP3NML..CHG*(D=<A$"!!6;:{y70/4us1rp.om+lj('&gf#"!~}|uz]xwZutVrqToQgfkNLhKIeHFbEC_B@\?=YX;V8NMR53O20L/-IHG*)DCBA@?>7~||{87654321*/p-,+l)('gg|#"ca}vuz][wZXWWlqpSnPfejMKgJHGG\a`C^@VUZ=;WV9T6LKP31MLK.-HGFEDCBA:?"=<;:9y16543s+r).',+*#(i&%$e"!~}|_]yrqvYWsVTSShmlOMibafIGFF[`_B@\UTY<:V97S64P31M0.J-+G*(''<A@?"!6}:9z76vuu,10qo-&%*ki'hf$ec!b`__tyx[vXnmrqpSRmfkNihgJedFbaD_AWV[><XW:U7MLQ4211FKJ-H*@?D'%A$">!};|z8yw5vt2sq/.-nm*)"iggf#"!x}`{z][qpuXVUUjonQlNdchKIedGbDZY^A?[><X;9U86R53O20L/-I,*FED'&A@?8=~;:{876vv-21rp.'&+ljii~%$ec!xw|_]yx[vXnmrUSoRPlOMLLafedGFa`_^W@>>=XWVUTMR5PO2ML.JI,G)?>C&$@#!=~|:{y7xv4us1rp.om+ljii~%$#dc~}|{zsx[YYXsrqpongPkjiLgfeGG\a`C^@VUZ=;W:8T75Q4211FKJ-H*@?D'%A$"!!6;:9zy654321*qoon+*)('&%|#d!~}`{zyxwZXtmlqTRnQONNchgJHd]\aDBAAV[Z=;WPOT75QP31MFEJ-+G*(D'%A$">!};|z876wv3210/.-&+l)(i&%eddy~}`^zsrwZXtWUqTRnQONNchgJeG]\a`_BA\[ZYXWVUN7RQPON0FKJIH*@)>CBA:?8=~||{27x543t10/oo&+*k(h~}$ec!~a|^tsx[YuXVUUjonQlNdchKIedGbDZY^A?[><X;9U86R53O20LKJ-,AF)DC&$:9>!}||387x5u-,1rp.-n+k#"'hf$ec!b`|_]y\ZvYWsVTpSQmlkNMhaJedGba`BBW\[><XQPU8655JON1/KDCH+)E(&B%#?"~<;:{z76/4u21r/.n,+l)i!~%fd"ca}`^z][wZXtWUqpSnPfejMKgJHdGEa`_BA\[ZS<::9TSRQJO2MLK.IH*F)'C&$@#!=~|:{y7xv43t1q)(-nl*ki'hf$#d!awv{^\x[YutsVUponmfkNihgJedFbaD_AWV[><;;PUT75QJIN1/..CHG*(D=<A$">=~|:327xv4us1rp.om+lj(ig%$#dc~}|{zs\wvYtsUTTinmPNjcbgJHdGEaDB^A?>>SXW:U7MLQPO21LKJIHG@E(CBA$"87}}4987xw43210/.'nllk('&%$#"!x}`{z][qpuXVUUjonQlNdchKIedGbDZY^A?[><X;9U86R53O20L/-I,*FED'&A@?>=<;:38y65432r*/.-,l$k"'&%|#z!b}|_zyxZZotsVTpihmPNMMbgfIGc\[`CA]\?Z<RQV97S64P3100EJIH+*?(&&%@9>!<;|98x65v3s+*/pn,mk)jh&ge#db~a_{^\x[YuXVUUjonmPOjchKIIHcb[D_^]@[Z<XW:8TMLQ42N1/KJ-H*@?D'%A@#>~65:{y7xv4us1rp.om+ljii~%$#dc~}v_]]\wvunsVqpSnmONNchgJHd]\aDB^]@[=SRW:8T75Q42N1/KJ-H*@?D'%A$">=~|:327xvuu,10/po,+*#(iggf#"!~}v{^yx[YonVVkponQPkjihg`eHFFE`_^]\[T=XWV9TS5Q42N1/K.,H+)ED'%A:9>!};|z87x5u-,1rp.om+lj(ig%$e"bxw|_]\\qvutWVqponmleNihKfeGcFDCCX]\?Z<RQV97S64PO20LEDI,*F)'C&$@#!=~|:{yxx/432sr/.-,+*)"'h%$#d!~`|{^y[qpuXVrqToQgfkNLhgJeG]\aDB^A?[><X;9U86R53O20//DIHG*)DCBA@?>=6}:9876v.3210p(o&+*#('~%fddcx}`{z]xwYutWrTjinQOkjMhJ`_dGEa`C^@VUZ=;W:8T75Q42N1/K.,H+)((=BA@#"7<}:9z765uu,10qo-&%*kihh}$#db~wv{^\xwZuWmlqTRnQOkNLKK`edcFE`YB@@?ZYRW:UTS6QP2NM0K-CBG*(DC&A#98=~|{{276wu3,+0qo-nl*ki'hf$ec!b`|_]yxwZYtslqTonQlkjLLafeHcE[Z_^]@?ZYXQ:887RQPOHM0KJI,GF(D'%A$">!};|z8yw54u2r*).om+lj(ig%fdccx}|_z\rqvYWVVkponQPkjihafIdcFDZY^A?>>SXW:U7MLQ42NM0K-CBG*(D'%A$">!};|z8yw5vt2sq/.-nm*)('&}f#"c~}|^^sxwZXtmlqTRQQfkjMKg`_dGEaDB^A?[><XWV98SRQPONGL/--,GFEDCBA:#>=<}:9y7xv4us1rp.om+*k(h~}$ec!b`|_]y\ZvuXVrkjonmPOjihgfed]Fa`C^]\>>SXW:U7MLQPO21LKJIHGFE>C&A@?>=}5:987w/v-210).',m*)(ig}|#db~a_{z][wpotWUqTRQQfkjMKg`_dGEaDB^A?[><X;9U86RQP32G0..-HAF)DC&A@"!!6;:{8x0/4us1rp.-n+k#"'hf$ec!b`|_]y\ZvuXsUkjoRPlOMLLafedGFaZ_B]\?ZYX::OTS64PIHM0.--BGF)'C<;@#!=<}:z216wu3tr0qonn%*)(ih%${dbba|{zsx[vutWrqSonQOkdchKIHH]baD_AWV[><X;988MRQ4O1GFK.,H+)E(&B%#?"~<}{zz1654ut10/(-n+*k('&ff{"!b}_utyxwZYtsrqjSQQPkjihg`eHcbaD_^@??TYX;V8NMR53ON1L.DCH+)E(&BA$?!76;|z87x5u-,1rp.om+lj(ig%$e"bxw|{z]\wvutslqTonmlOjihJJ_GG\a`_BA\[ZYXWVUN7RQPON0FKJIH*@)>CBA:?8=~||{27x5432s0/onn%*)jh&}|#db~}`{]srwZXtWUqTRnQOkNLhKIeHFbEC_B@??TYXW:9NS6QPON1LK-IH+F(>=B%#?"~<;|z8105vt2sq/pn,mk)jh&ge#db~}|_^yr[vutsVqpoQQfNNchgfIHcbaZCAA@[ZYXQV9TSRQ42HGL/-I,*))>CB%@"87<}{zz165v3s+*/pn,mk)jh&ge#db~a_{^\[[putsVUponmfkNihgfIdcEaDBAAV[Z=;WPOT75Q42N1/K.,H+)E(&B%#?>=~}:9876/vtts0/.-,+$)j'&ge{z!b`__tyx[vXnmrUSonQlNdchKIeHFbEC_B@\?=Y<:V97S64PON10KJIHGF?D'BA$?>=}}498yw5.-2sqpp',+lj(!~%fd"!b}_uty\ZvYWsVTSShmlkNMhgfedcb[D_^A\[Z<<Q99NSRQ43NMLKJIHG@E(CBA@?!7<;:9y1x/43,10).o,+l)('gg|ddy~}|_^s\ZZYtmrUponQlkjihKIe^]bEC_^A?[TSX;9U86RQ42NGFK.,H+)E(&B%#?"~<}{9zxww.321rq.',mkkj'&}fddc~}|uz]xwvYWmlTTinmlONihg`eHFFE`_^]V?ZYX;VU7S64PO2M/EDI,*F)'&&;@?"=}549zx6wu3tr0qo-nl*kihh}$#"cb}|{zs\wvYtsrTTinmPkMcbgfeHGba`_^W\?ZYX;VU766KPO2M/EDI,*))>CB%#?87<}{9zxww.32sq/(',mk)jh&ge#db~a_{^\xwvYXsrqpongPNNMhgfedcb[`C^]@>TSX;988MRQ4O1GFK.,HG*E'=<A$">!};|z8yw5vt2sq/pn,mk)('hg$#"!~}|uz]xwZutsUUjonQOkdchKIHH]baDB^WV[><XW:U7MLQ42N1/K.,++@EDC&%@?>=<;:92y65432r*/.-,l$k"'&%|#z!b``_ty\wvuXsrqSShmlOMibafIGcbEC_XW\?=YX;V8NMR53O20L/-I,*F)'C&$@#!=~|:98yx/4ussr/(o,+l)('g%$ed!xa__^yxqvYtsrUSihPPejihKJed]bE`_^A\[=Y<:V97SR5P2HGL/-IH+F(>=B%#?>!};438yw5vt2sq/pn,mkjj!&%$ed!~}v_zy\wvuWWlqpSnPfejihKJedcb[`C^]\?=SRW:8T7544INM0.JCBG*(DC&$@98=~|:{y76w4t,+0qo-nl*ki'hfeez!~}`_zyxwvoXVVUponmlkdiLgfeHcbD`_B@\UTY<:VU8S5KJO20L/-I,*F)'C&$@#!=~|:{y765vu210/.-&+l)(i&%$#"ca}vu]]rwvuXWrqponmleNLLKfedcba`_X]@[ZY<WV877LQP3N0FEJ-+G*(D'%A@#>~65:{y7xv43tr0)(-nl*ki'hf$ec!b`|{z]\wvutsrqpinQlkjihJ`edcbDZCX]\[TYRW:UT7RQP22GLK.I+A@EDC&%:#!!~;49z765v32r0/pn,%$)jh&ge#"ca}vuz][wZXtsVqSihmPNjMKgJHdGEDDY^]\?>YRW:UT75KJO20//DIH+F(>=B%#?>!<|438yw5vt2sq/pn,mk)jh&ge#db~}|_^yxqZutWrqpRRglkNLha`eHFEEZ_^A?[TSX;9U86R53O20LKJ-,GFE>C&A@?"=<;{{276wu3,+0qo-,mk)"!&ge#"c~`vuz][wZXtWUqTRnQOkNLhKIeHFba`CB]\[ZS<::9TSRQPIN1LKJ-+A@((=BA@#"=<;:981xvvu210/.-,%*k('&g$#cbbw|{^y[qpuXVrUSoRPlOMiLJfeHcE[Z_B@\[>Y;QPU86RQ4O1GFK.,HGF)(CBA@?>=6;|98y654tt+0/p-m%$)jh&ge#db~a_{^\x[YuXVrqToQgfkNLhKIeHFEEZ_^]@?ZYXWVUTSL5PONML.DIHGF(>'<;@?>=6;|zzy05v321rp(',mk)jh&%fd"yx}`^]]rwvYWslkpSQmPNMMbgfIdF\[`CA]@>Z=;W:8T75QPO21FK.IH+)?>C&$##8=<}:z216wu32s0p(',mk)jh&ge#db~a_{^\x[YuXVrqpSRmfOjiLgfeGG\a`CA]VUZ=;::OTS64PIHM0.J-+G*(D'%A@?"!<;49z765v321qq(-,mk)"!&ge#"ca}vuz][wvYtVlkpSQPPejiLgI_^cFD`CA]@>Z=;W:8T75Q42NML/.IHG@)''&A@?>7<}:98y65u32s0p(',mk)jh&ge#"c~`vuz][wvYWslkpSQmPNjMKgJHdGEDDY^]\?>YXWVOT7RQ4ONM//DIH+F(>=B%#?"~<}{9zx6wu3tr0qo-,m*j"!&ge#db~a_^^sxwvYXsrqpohQOONihgfed]bE`_^A\[=Y<:V97S64P31ML/J,BAF)'C&$@?"=}549zx6wu3tr0/p-m%$)jh&geddy~}|_^yxwvutmrUSSRmlkjihg`IdcbE`_A]@>ZY<:VONS64P31M0.JI,G)?>C&$@#!=~|:{y765vu210/.-,%ljji&%$#"!~}v{^yxwZXnmrUSRRglkNLha`eHFbEC_^A\>TSX;988MRQ42NGFK.,H+)E(&B%#?"~<;:{z76543210).o,+*)(h~%$#"bxav{zyrwpuXsrUponPPeMMbgfeHG\ECCB]V[>YXW:8NMR53O20//DIH+F(>=B%#?"~<}{98y6v.-2sq/.o,l$#(ig%$#dc~w|_zyx[vutsrUSohglOMLLafeHFb[Z_B@\?=YX;9UNMR5322GLK.,HA@E(&B%#?"~<}{9zx6wu321rq.-&m*)jh&%$#"cb}|{ty\wvuXVlkSShmlkNMhgfe^GEED_^]\[TY<WV9TSRQP31MFEJ-+**?DC&A#98=~|:9z7w/.3tr0qo-nl*ki'hf$ec!b`|_]yxwZYtsrqpinQOONihgfed]Fa`CAW\[ZY<;VUTSRQJ3110KJIHGFE>C&A@#!76||3876wv3210/.-&+l)('h%$#ccx}|_]yrqvYWsVTpoRmOediLJII^cbE`BXW\?=Y<:99NSR53OHGL/-I,*F)'C&$@#!~~5:98yx543210/.'n+*)('g}$#"!aw`uzyxqvotWrqTonPOOdihKIe^]bEC_B@\?=Y<:V97S64P31M0.J-+GFE('<A$?>=~;:9yy054u2r*).om+ljii~%$ec!xw|_]\\qvuXVrkjoRPOOdihKfH^]bEC_^A\>TSX;9U86R53O20//DIHG*)D=&$$#>=6;|98y65u32s0p(',mk)jh&ge#db~a_{^\x[YuXVrUSRRglkjMLgf_dGbaD_^]??TYX;9UNMR5322GLK.,HA@E(&BA$?!76;|z8yw5vtss*/.-nm*)(!hffe"!~}v{^yxwZutsUUjonQOkdchKIedGEaZY^A?[Z=X:POT75Q42N1/K.,H+)E(&B%#?"~<;:{z7654-2s0/pn,+*)(ih%$#"!xa__^yxwvutmrUponQOedLLafedGFa`_^]\UZ=XWV9TS5Q42NM0.JCBG*(DC&A#98=~|{{276w4t,+0qo-nl*ki'hf$ec!b`|_]yxwZYtsrqpongPkjMhgfHH]baD_AWV[ZY<;VUTSRQPOHM0KJIHG)?DCBA#9"7<;49816w432s0/.nn%*)j'g}|#db~a_{z][wpotWUTTinmPNjcbgJHdGEaDB^A?[><X;988MRQP32G0..-HAF)DC&$:9>!}||387x5u-,1rp.-n+k#"'hf$ec!b`|_]y\ZvYWsVTpSQmlkNMhafIdcFa`_AAV[Z=;WPOT7544INM0.JCBG*(DC&A#98=~|:{y7xvuu,10/po,+$kiih%$#z!b}|{^yxwYYnsrUSohglOMihKIe^]bEC_^A\>TSX;9U86R53O20L/-I,*F)'C&$@?>!~;:927x54us10/.-nm*)('~geed!~}|{ty\wvuXVlkSShmlkNMhgfed]bE`_B]\>ZY<W9ONS64PO2M/EDI,*F)'C&$@#!=~|:{y7xv4us10/po,+*)('~geed!~}|{zyrwZutWUkponmPOjihgfed]bE`_B@VU==RWVU87RQPONMLKD-HGFED&<A@?>~6}498705.3trrq(-n+*)j'&feez!~a|^tsx[YuXVUUjonQlNdchKIedGbDZY^A?[Z=X:POT75Q42N1/K.,HGF)(=B%@?"=<;{{276wu3,+0qonn%*)jh&}|#db~}`{]srwZXtWUqTRnmPkMcbgfeHGb[DBBA\[TY<WVU86LKP31ML/-IBAF)'CB%#?87<}{zz165vt2+*/pn,mk)jh&ge#db~a_^^sxwvYXsrkpSnmPNdchKIHH]baD_AWV[><XW:U7MLQ42N1/K.,H+)E(&B%#?"~<}{987xw432+r/.o,+*jj!&%fd"yx}`^]]rwvYWslkpSQmPNjMKgJHdcbED_^]\UZ=XWV9TSR44INM0.JCBG*(DC&$@98=~|:9z7w/.3tr0qo-nl*ki'hf$ec!b`|_]yxwZYtsrqpiRPPOjihgfe^cFa`_B@VU==RWVU87RQPONMLE.,,+FEDCBA@?8=~;:{87w5vt2sq/pn,mk)jh&%f#cyx}`^z][wZXtWUqTRnQOkNLhKIeHFEEZ_^]@?ZYXWVUTSLQ4ONMLK-CHGFE'=&;@?>7<5:{8765v32r0/p-m%$)jh&ge#"c~`vuz][wvuXWlUSSRmfkNihKI_^FF[`_^A@[TY<WVU8SR4P31M0.J-+GF)D&<;@#!=<}:z216wu3tr0qo-nl*)(ih%${d!~a|{]\\qvuXVrkjoRPlOMiLJfIGcFD`CA]@>Z=;W:8TSR54ONMFK.IHG*ED&BA$?!76;|z8ywvv-21rp.'&+lj(ig%$e"bxw|_]y\ZvYWsVTpSQmlkNMhgfe^GEED_^]\[TY<WV9TS5QP3N0FEJ-+G*(D'%A$">!};|z8yw5vt2sqpp',+*kj'&%$#z!b}|_zyxZZotsVTpihmPNMMbgfIGc\[`CA]\?Z<RQV97S64P3100EJIH+*EDCBA@9"=<}:98xx/43t1q)(-,+lk('&%$#"y~a|{z][qpuXVUUjonQOkdchKIeHFbEC_B@\?=Y<:V97S64P3100EJIH+*EDCBA@?>7~;:987w/4321q)p',+$)(!&g$#"!b}|^z][wvYWslkpSQmPNjMKgJHdGEaDB^A?>>SXWV98SRQJ3110KJIHAF)DCBA$?>=<;|z8105vt2sqpp',+lj(!~%fdccx}|_z\rqvYWsVTpSQmPNjMKgJHdGEDDY^]\?>YXWVOT7RQPO2ML.JI,G)?>C&$@#!=<}{9216wu3tr0qo-nl*ki'hf$ec!~}`_zyxwvoXsrqpSnmlNNcKK`edcFE`_^]\[ZS<::9TSRQPONMFK.IHGF)'=<A$">!}||387x5u-,1rpoo&+*k(h~}$ec!b`|_]y\ZvYWsVTpSQPPejihKJedcba`_^W\?ZYXWV8NSRQP2H1FKJIBG@E(CBA@#>=};|zyy054us1*).om+lj(ig%fd"ca}`^z][wvuXWlUpoRmlkjiLJf_^FF[`_^A@[TY<WVU8SRQPO20LEDI,*F)'CB%@"87<}{9zx6wu3tr0qo-nl*ki'hf$#"cb}|u^\\[vutmrUpoRmlkMihKJedc\aD_^]@>TS;;PUTS65PONMF/--,GFEDC<A$?>=~;:z8yw5vt21r/o'&+lj('h%e{z!b`|{^\xqpuXVrUSoRPlOMiLJII^cbaDC^]\[ZSX;VU8SRQ33HML/J,BAFED'&A@?>=<5|zzy6543210).o,+*k('g%fd"!b}_uty\ZvuXsUkjoRPlOMiLJfeHcE[Z_B@\?=Y<:V97S6433HMLK.-HGFEDCB;@#>=~|438ywvv-21r/o'&+lj('h%e{z!b`|_]y\ZvYWsVTpSQmPNjMKgfeHGba`_^]\[T=XWVUT6LQPON0F/DIHG@E>C&A@#>=<||387xv4-,1rpoo&+*ki'~}$ec!b`|_]y\ZvutWVkpSnmlOjiKJJ_dcFD`YX]@>Z=;WV97SLKP31M0.J-+G*(D'%A$">!}||3876wv3,sqqp-,%*k('h%$#c!~a`{zsx[vutWUkjRRglkjMLgfe^GEED_^]\UZ=XWV9TS544INM0K-CBG*(D'%A$">=~;{327xv4us10qo-&%*ki'hf$ec!b`|_]yxwZYtsrqjoRmlOjihJJ_dcFaCYX]@>Z=;W:8T75Q42N1/K.,HG*E'=<A$">!};|zyy0543ts0/.-,%ljji&%$#"!x}`{zy\wvXtWUqTRnmPkMcbgJHdcFaCYX]@>ZY<W9ONS64P31M0.JI,*F?>CBA$#>=<;:927x54us+*/pnmm$)(i&f|{"ca}|_z\rqvYWsVTpSQmPNjMKgJHdGEaDB^]\?>YXWVUTSL5PO2MLK--BGF)'C<;@#!~~5:9zx6/.3tr0qo-nl*ki'&%fe"!~}|{zyrwZutsrqSinmlkMcLaf_dcb[`C^]@[Z<X;9U86RQ42NGFK.,++@ED'B$:9>!};|z8yw5vt21r/o'&+lj(igff{"!~a`u^yx[YonVVkponQPkjcLJJIdcb[`C^]@[ZY;;PUT75QJINML/.IHG@E(&&%@?>=<5:{87xv.-ss*/.-nm*)('&}$e"!b}|{]]rwvYWslkpSQmPNjiLgI_^cFD`_B]?UTY<:VU86RKJO20LK.I+A@EDC&%@?>=<;4{yyx543210/(-n+*)j'&f$ec!~a|^tsx[YuXVrqToQgfkNLhgJeG]\aDB^A?[><X;988MRQP32MLKJIHG@E(CB%#?>=<;|3z765432+0q.-,m*)i'hf$ecbbw|{^\xqpuXVrqTRngfkNLhgJeG]\aDB^A?[><X;988MRQ42NGFKJI,AF)DCBA$?>=}}4zz1654ut+rppo,%*k('&%f#"baav{z][wpotWUqpSnPfejMKgJHdGEaDB^A?[><X;9U86R5322GLKJ-,G@E(CBA@#>=};:{8x0/4us1rp.-nl*#"'hf$ec!b`|_]y\ZvYWsVTponQPkjcLgfedGba`BBW??TYXW:9TSRQJ3110KJIHG@E(CBA@#!76;|z8ywvv-21r/o'&+ljii~%$e"bxw|_]y\ZvYWsVTpSQmPNjMKJJ_dcbED_^]\[TY<WVUT7RQ3O20//DIH+)E>=B%#?"~<}{9zx6wu3tr0qo-,+lk('&%$#zc~}`^zyxwvYnWrqponmfkNihgJedcEEZ_^A\>TSX;9UT7R4JIN1/KJ-H*@?D'%A@#>~65:{y76w4t,+0qonn%*)j'g}|ddy~}|_ty\wvutWrqpRRgOOdihgJI^GEED_X]@[ZYX;VU766KPO20LEDI,*FE(C%;:?"~<}{9zx6wu3tr0qo-nl*ki'hfeez!~}`_zsx[vutsVqpRnmPkMcbgJHdGEa`CA]VUZ=;W:8T75Q42N1/K.,H+)EDC&%@?8!<;:9z765uu,rr).-,ml)('&}fddc~}|{zsx[vutsVTjinQOkNLKK`edGbDZY^A?>>SXW:U7MLQ42N1/K.,H+)E(&B%#?"~}}4987xw43210).o,+*)j'&f$ecbbw|{^\xqpuXVrUSoRPlOMiLJfIGcFD`_^A@[ZYXWVO8SR53ONMLK.C,GFEDCB;@#>=<}:9y7xv43t1q)(-nlkk"'&ge#zy~a_{^\xwZXtmlqTRnQOkNLhKIeHFbEC_^]@UZ=XWVU8SRQ33H00EJIH+*?(&&%@9>!<;:9z76vuu,10qo-&%*ki'&g$dzy~a_{^\x[YuXVrUSoRPlOMiLJfIGFF[`_^A@[TY<WVUT7RQ3ON1L.DCH+)E(&BA$">76;|z8yw5vt2sq/pn,mk)jh&%$ed!~w`{zyx[vutVVkSShmlkNMhgfe^GEED_^]\[TY<WVUT75KJO20L/-,,AFE(C%;:?"~}}498y6v.-2sq/pn,mk)jh&ge#db~a_^^sxwvYXsrqpohmPkjihKfeGcFDCCX]\?=YRQV97S64P31M0.J-+G*(D'%A@?"!<;:9870w43tr0/.-,m$k('&%$#z!b}|{^yxZYYnsrUSohglOMLLafeHcE[Z_B@\?=Y<:V97S64P31M0.J-+GF)D&<;@#!~~5:98y05v3210q.-,ll#ii~%$#dcxa__^yrwZutsrUpoQPPejiLJf_^cFD`_B]?UTY<:V97S64P31M0.J-+G*(D'%A$"!!6;:9zy6/4u210/p-,l*)j'g}|#db~a_{z][wpotWUqTRnQOkNLhKIeHFbEC_^]@?ZYR;VU86RQPON1F/JIHGFE>C&$@#>7<;:9z16w4321r/.n,+l)i!~%fd"ca``uzy\wYonsVTpSQmPNjMKgJHdGEaDBAAV[ZY<;P977LQ4221FK.IHGFE(CBA##8~~5:98yx/4u210qo-,+*)j!h%$#"!~w|_zyx[YonsVTpSQmPNMMbgfIdF\[`CA]@>Z=;W:8TS6Q3IHMLK.C,GFEDCB%^#K=[}GziUUfSt,ON)ooK%kH5XgCBdSRQ=v_^9'[%Y#FlUTR.-P>j<htIHH]o4`l1A?>Zwv*:8TSq5]3!kk/DgHTwd'b%;^L\[Z|49i1Tv4u2rr)(nKl76jE~%BdSbQ`Ouz\[8ZuWs3UC0Rm->jvKt`HG#EE`B1@/z==vutOT&Ro]O[MYKJVyf*c(b%%ML]=Z;X3i1xTRRt+*pp-,%[jYhD%CAARa}+_MLr&Y5ドルV3DToAmPej*;a`e$]#[Z_B{@[-fwv)UT&qKPmllj/hhBx)(>C&_M^]7Z}Xz8yTf.@Qba/;^,lkk"!WC1BS@-`_uMyK7I5XVV200{mfNj*uK&HHpb[D}B@zy=,+QV9Tr6p]"Nk0|{VBeSRcPa$_9Kn};{zEhgT4u,>*);'nJIkiEW210SRQ=<*;(K&I$tslk}BA@?eMv;(JI$F""mB^|i>>=vW)9'7%$#2NlYX-,HA@)''%%_?8[~;{zzVCT.d,s*N_n,mk6"FDCCTA?>P+{z(xq655s22}S/gfkjLL:fIH#EE!YAjVzgYX:)(s65p]m[MY/hCB+)RcPa$#""=<|43ixwS4Q2P*`p'KJHZ(!WVBec!-P=*ML9J6$GF3q10A-O>=c;(J%HGF!~_^0?.-w+QcUs`p4JmH1//{gyxeRQ
If the challenge didn't require halting at some point (eg. eof), it becomes pretty trivial, scoring 2334 bytes:
bP&A@?>=<;:9876543210/.-,+*)('&%$T"!~}|;]yxwvutslUSRQ.yx+i)J9edFb4`_^]\yxwRQ)(TSRQ]m!G0KJIyxFvDa%_@?"=<5:98765.-2+*/.-,+*)('&%$#"!~}|utyrqvutsrqjonmPkjihgfedc\DDYAA\>>Y;;V886L5322G//D,,G))>&&A##!7~5:{y7xvuu,10/.-,+*)('&%$#"yb}|{zyxwvutmVqSohmOOjihafeHcEa`YAA\[ZYRW:U7SLKP3NMLK-I,GFED&%%@?>=6;|9y70/4u210/o-n+k)"!gg$#"!x}`{zyxZvYtsrqSoRmlkjLhKfedcEaD_^]\>Z=XWVU7S6QPON0LKDI,GFEDCBA#?"=};438y6543s1r/o-&%*k('&%e#d!~}|^z]xwvuWsVqponPlOjihgIeHcba`B^A\[ZY;W:UTSR4PI2MLKJ,,AFE(&B;:?"~<}{zz165v3s+*/pn,mk)jh&ge#db~a_{^\xwvoXsrqpRnmfkjMKg`_GG\aDB^A?[><X;9U86R53ONM0KJC,+FEDC&A@?!!6||3876w4-tr*/.-&+*)('&%$e"!~}|utyxwvutWlkponmlOjchg`edGba`_XW\?ZYRQVOT7RQPINML/JIHAFEDC&A@?>!<;{98yw5.-ss*/pn,+lj(!~ff{"ca}`^z][wZXtWUqTRnQOkNLhgfIdcFaZ_^A\[Z<XW:U8SRQPOHML/JIHG*ED=%%:?>=~;:{876w43210/(-,+*)('h%$d"ca}|_z\rqYYnsVTpoRPledLLafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(DCB%@?"=<;|98765.3210p.-n+$)i'h%${"!~}|{zyxwvuXVlkpSQmlOjLbafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(D'%A@?"=<}:98y6543,1r/.o,+*)j'&%eez!~a|^tsx[YutWUqjinQOkjMhJ`_dGEaDB^A?[><X;9U86R53O20LKJ-HG*ED'BA@?>7~;:{y7x5.3210q.-n+*)jh&%$#"c~}`{z]rwvutWrkpohmPkjihafI^cba`_^A\[>YXW:UTS5QP3NM0KJ-HGF?D'BA:?>=~;:z8765v32s0/.-nl$#(ig%fd"ca}|_]yrqvYWsVTpSQmPNjMKgJHdGEa`_B]\?ZY<WVUTMR5PO20LK.IHA))>CB%#?87}}49zx6wu3tr0qo-nl*ki'hf$ec!~}`{^yxwvotsrUponQlkMihKIe^]EEZ_B@\?=Y<:V97S64P31M0.J-+GFE(C&A@?8=<;:{876w43s10qo-&%kk"'hf$ec!b`|_]y\ZvYWsVTpSQmlkNiLgf_dcba`C^]\?ZY;WV97SLK33HM0.J-+G*(D'%A$">!};|z8yw543t1r/(-,+*)(i&%fd"!~}|_t]xwvutslqTonmPkjLhKIeHFbEC_^A?[TSX;9UT7R4JIN1/K.,H+)E(&B%#?"~<}{987x/4u21rp(',mk)jh&%fd"yx}`^z][wZXtWUTTinmPkMcbgJHGG\a`C^@VUZ=;::OTS6Q3IHMLK.-B+FE(CBA##8~~5:98yx5.3t10q.-,+*ki'~}eez!~}`_zyxqvYtsVqpoQQfkjMhJ`_dGEaDBAAV[Z=;WPOT7544INM0K-CBG*(D'%A$">!};|z8yw5vt210qp-,+*#j'&g$#"!~a_{ts[[putsVUponmlkdMhgJedcEEZ_^A\>TSXWV98SRQPONMFK.IHGFE'=BA@?!7~5:9816/4u21r/.-,+lj(!~ff{"!~a`uz]xwvYtsUqTRnQONNchgJHd]\aDBAAV[Z=;WPOT7544INM0.JCBG*(''<A@#!=65:{yxx/43tr0)(-nlkk"'&ge#zy~}|_ty\wvYWmlqTRnmPkMcbgJHdcFaCYX]@>==RWV97SLKP31M0.J-+G*(D'%A$">!}||3876wv-t10/p-,l*)(i~%fddcx}`{zy\wvXtWUqTRnQOkjMhJ`_dGEDDY^]@[=SRW:877LQP3N0FEJ-+**?DC&A#98=~|{{276w4t,+0qonn%*)j'g}|#db~a_^^sxwvYXmrUponQlkMiLJfIGFF[`_B@\UTY<:99NSR53OHGL/-,,AFE(&B;:?"~}}498yw5.-2sq/.-n%l)('&%$e@b>,+^^:87Z5n"!10/QP-kMv(gf%Gc543}|0{[-YXu)t87L5]Ol~jjiz++evbaa`M^!=Z|kWWD05S3?O*)o'JJH)F!~f1TAy>,<^]:xJ6YXmlD0SAQPk+vKaJ%%F5ECCX|zz=xRQ
Explanation
I've been asked to explain how the program works. I'll pick on the second one as it's way easier to explain it than the first one, but the way both of these work is really similar.
Let's start things off with decrypting the code. As someone down in the comments did it before I started working on the explanation, so I really advise you to check it out.
It doesn't make reading the program any easier one would say, but before we jump straight into the code, let's review basics of Malbolge.
The virtual machine is based on trits (trinary digits). Each machine word is ten trits wide, making it range from 0 to 2222222222t (= 59048d). Each memory position holds a machine word; the addresses are one machine word wide too. Both data and code share the same memory space.
There are three registers, each of which holds one machine word, initially 0: the code register C which is a pointer to the instruction that is about to be executed, the data register D used for data manipulation and the accumulator A also used by several instructions to manipulate data.
If the instruction to execute is not in the range 33-126, execution stops (the reference interpreter hangs in this case due to a bug). Otherwise, in order to determine the actual instruction to execute, the value pointed to by the C register is added to the C register itself and the result divided by 94, taking the remainder.
Here is a table of all possible instructions.
(C+[C])%94 |
Description | Pseudocode | Op |
|---|---|---|---|
| 4 | Set code pointer to the value pointed to by the current data pointer. | C = [D] |
i |
| 5 | Output the character in A, modulo 256, to standard output. |
PRINT(A%256) |
< |
| 23 | Input a character from standard input and store it in A. |
A = INPUT |
/ |
| 39 | Tritwise rotate right. | A = [D] = ROTATE_RIGHT([D]) |
* |
| 40 | Set data pointer to the value pointed to by the current data pointer. | D = [D] |
j |
| 62 | Tritwise "crazy" opertaion (see table below). | A = [D] = CRAZY_OP(A, [D]) |
p |
| 68 | No operation. | NOP |
o |
| 81 | Stop execution of the current program. | STOP |
v |
An image of the table can be found here
Now as the code is more understandable and it's actually possible to tell what is happening there, we can jump to the general idea of what is happening there.
Without any jumps, programming Malbolge is pretty much trivial. When the jumps are used though, there is decrypting task needed to be done before executing this code again. Everytime an instruction is executed, it's getting straight after encrypted, so it doesn't behave this way it did before.
To illustrate the workaround, let's look at normalized Malbolge cat program:
jpoo*pjoooop*ojoopoo*ojoooooppjoivvv
o/i<iviv
i<vvvvvvvvvvvvv
oji
So as you can see, on the second line we have / and < instructions dealing with I/O stuff. Utilizing the fact that C register is the instruction pointer, we can modify it using i instruction effectively creating a branch. Before the branch happens though, we need to decrypt instructions that just a few cycles away read and wrote output to and from TTY, combined with a jump. As there is no real way to store constants effectively, we need to embed many non-related instructions and use their value to compute other constants needed (utilizing the fact that Malbolge doesn't separate program and data)
Note: Parts of this answer were taken from Esolang wiki Malbolge page licensed under CC0 - link.
Possibly, you might want to check my other answer featuring Seed
-
19\$\begingroup\$ Woah! How did you make this? How do you program in Malbolge? (these are serious questions, by the way) \$\endgroup\$MilkyWay90– MilkyWay902019年07月31日 18:45:10 +00:00Commented Jul 31, 2019 at 18:45
-
50\$\begingroup\$ The day that someone writes, in Malbolge, a program that simply copies its input to it's output, is the day my hair spontaneously turns green. It's the day that elephants are purple and camels fly, and a cow can fit through a needle's eye. This seems to surpass that. \$\endgroup\$Adám– Adám2019年07月31日 20:16:46 +00:00Commented Jul 31, 2019 at 20:16
-
29\$\begingroup\$ @Adám, by a factor of 2, at least. \$\endgroup\$Shaggy– Shaggy2019年07月31日 20:56:55 +00:00Commented Jul 31, 2019 at 20:56
-
15\$\begingroup\$ First time hearing of Malbolge, but reading those docs all I can think of is: dang, this is an impressive answer. Is it possible to explain your code, or is it beyond explaining? ;) \$\endgroup\$Kevin Cruijssen– Kevin Cruijssen2019年07月31日 20:58:26 +00:00Commented Jul 31, 2019 at 20:58
-
38\$\begingroup\$ +1 for "it becomes pretty trivial" \$\endgroup\$Arnauld– Arnauld2019年08月01日 09:57:42 +00:00Commented Aug 1, 2019 at 9:57
brainfuck, 6 bytes
,[..,]
For once, a really competitive answer in brainfuck. :-) It just reads from the standard input (,), then loops while the character read is not zero ([), writing the character read twice (..) and finally reading a new character (,) before going back to the start of the loop (]).
Alternative 6-byte answer:
+[,..]
-
19\$\begingroup\$ It had to happen sometime. \$\endgroup\$AJFaraday– AJFaraday2019年07月31日 20:28:40 +00:00Commented Jul 31, 2019 at 20:28
-
29\$\begingroup\$ given brainfuck's 8 instructions, could be argued as 2.25 bytes? \$\endgroup\$speedstyle– speedstyle2019年08月01日 03:12:17 +00:00Commented Aug 1, 2019 at 3:12
-
1\$\begingroup\$ i don't understand bf much, why exactly could it be argued so? \$\endgroup\$user100709– user1007092021年02月02日 10:37:40 +00:00Commented Feb 2, 2021 at 10:37
-
6\$\begingroup\$ @mTvare you only need 3 bits to codify 8 different instructions. Hence 3 bits times 6 instructions my code has equals 18 bits, 2.25 bytes. \$\endgroup\$Charlie– Charlie2021年02月02日 10:46:04 +00:00Commented Feb 2, 2021 at 10:46
Seed, (削除) 6013 (削除ここまで) (削除) 3942 (削除ここまで) (削除) 3884 (削除ここまで) (削除) 3865 (削除ここまで) 3848 bytes
6 2686150228553910251590139707025615036563204497823963635717768129239771871066022173506550480510882628259267028226290577985584582829987099606110915656117177113555095646841841520224800333754793732176561479800611856258812006670385981709167679328497862503284773114717364645850756926464567857029605682209030697372493435852024478962025612141035167904456425050991742516020282696732660004824569723936406080643638019715421991278634074220365586727498681650073989748857985341022350116695714407041551609933358182688736747622670056818175549484918971558384479903673900409406866275258032866680967195428439907751537922194839977711106739550525066186108781580088916582559490041917035011328862266125578018990106393872489460844458091217404944194309597162769266585917996079831048944050703695352212652362891425728346891039020051565145149143668695374506752075410956647268061596926723805877631732070244839345640289062870487268706837056753112890753688530410829624567367052492603150395779619674714389456447573342335882718419424356991739625084740814435581409670174841935167450868967735568432921607395284483532735870628809137816139721467391760314297120583388009684979379888771619327969950939260709632318979448755571394507744993723267176377451465261335636767345281382139780890626858048062851714445255458413414708836044457819560626602471881203745677166851290194466534044374122781840150694963232713079984019097616802988558052961445185981197848860688635007868494303883280609553158126926303057368716954797175868772233997584782178460308584468311133667562020523260687787209651365697360075036255149184531675013585317549831215044187699501112214237282761452176427542227751840469500783022037518267131004723958694850409020207947539046371030202918430731468837057173037358435898981729128093138565524861044307737736772778645659866179416374742499528142506977571896833797572787168504674372995624869224644028121889021513694674680344413147327217671463636201883832593707987630471763158950694907193475270346642656464131212900528377257996057522592531063490286796434946290829640562975054259249630102041301990094261151488784971084438450904697283402436878185751193256803412549504172175692725366543545573099651580644132336272302990268431569623087644930350666119986012078396755208814027614451748455718916151950218835893255721018309717807161101069849247670957963270760531996609510342178009605381013854568528344071028665101709824510991652144229895556116304356971449229862349660751509158124118556805449346752918775201366378708970673708268140336609704879631200464020207189960217784283188350457711700181561855735903701439931161728546207607766764248018356183768557244013532032616392458312600465372655052565572757979232509950076857757257164261786986456779565081319671440867797151240096925123970490604003172676471092543424462070540303172987644037832692737644573481399927217285232015082118420498058022229538934735831710860610342762500071914715742707928060606416262583307855509796730058097681208691054336064995992598081644175617375019325706441005506100489323794725547244923204524790583484243672718647866979116309868261348266944902049457094368284266044502218232850494065571536043568039093446786891928597439310947971461490128765873399872574753055564655381318395939745692438909430171644009177696549501234738931977436030245682360974103741227416811200635596942701451202333113537361407624672328798572271366897755165037017879673502748767425083758652376018772700583221474572236166246539494675416322678094399996691972837962509574037110004298629947088012862552029152119412750923308070223808629424081676003170951500587426197322368913565250353332410276730344732325753114510178069340400741671217608323179698501977213623893949006870978691284571486316780769512681865771113879654002525802085758553029765815927252866913455193686303619992165147682671351400793392238437682055370542229871989802092530537034276944154276536658348210
-
7\$\begingroup\$ I can't begin to understand this \$\endgroup\$AJFaraday– AJFaraday2019年08月02日 10:39:58 +00:00Commented Aug 2, 2019 at 10:39
-
15\$\begingroup\$ Any chance you can explain how you got this one? Will such a description include the word 'trivial' at any point? \$\endgroup\$ouflak– ouflak2019年08月02日 13:38:38 +00:00Commented Aug 2, 2019 at 13:38
-
10\$\begingroup\$ How did you reverse the Mersenne Twister? \$\endgroup\$MilkyWay90– MilkyWay902019年08月03日 05:28:50 +00:00Commented Aug 3, 2019 at 5:28
-
5\$\begingroup\$ Soon I expect you'll post a thread on golfing tips for Seed. \$\endgroup\$ouflak– ouflak2019年09月08日 08:52:10 +00:00Commented Sep 8, 2019 at 8:52
-
5\$\begingroup\$ Maybe someone's interested, an in-depth description of one of my algorithms for Seed cracking and example impl in assembly, together with some background and misc info: palaiologos.rocks/posts/mersenne-twister \$\endgroup\$Kamila Szewczyk– Kamila Szewczyk2020年04月08日 18:43:28 +00:00Commented Apr 8, 2020 at 18:43
-
2\$\begingroup\$ Oh, I was too slow. Was just about to post
Ḥ\$\endgroup\$Adám– Adám2019年07月31日 10:13:23 +00:00Commented Jul 31, 2019 at 10:13 -
\$\begingroup\$ FWIW I'd note that this is a full program since as a monadic Link it accepts a list of characters but returns a list of lists of characters - so it accepts a Python string as an argument and prints the result (as does my 1 byter, although this one may be augmented to work as a Link (
ż`F), while mine cannot I believe) \$\endgroup\$Jonathan Allan– Jonathan Allan2019年07月31日 15:59:35 +00:00Commented Jul 31, 2019 at 15:59 -
\$\begingroup\$ (Nick Kennedy points out mine can become a Link with uneval, eval :)) \$\endgroup\$Jonathan Allan– Jonathan Allan2019年07月31日 16:43:43 +00:00Commented Jul 31, 2019 at 16:43
-
1\$\begingroup\$ @JonathanAllan Pfffft, uneval-eval :))) \$\endgroup\$Mr. Xcoder– Mr. Xcoder2019年07月31日 16:48:50 +00:00Commented Jul 31, 2019 at 16:48
-
5\$\begingroup\$ @Jakuje Jelly has its own codepage, so each of the 256 characters it contains is encoded as 1 byte. \$\endgroup\$Mr. Xcoder– Mr. Xcoder2019年08月01日 07:46:25 +00:00Commented Aug 1, 2019 at 7:46
Shakespeare Programming Language, (削除) 139 (削除ここまで) (削除) 129 (削除ここまで) (削除) 109 (削除ここまで) 106 bytes
-3 bytes thanks to Jo King
N.Ajax,.Page,.Act I:.Scene I:.[Exeunt][Enter Ajax and Page]Ajax:Open mind.Speak thy.Speak thy.Let usAct I.
Spews warnings and terminates with an error. Deal with it.
-
2\$\begingroup\$ @Jo King woah, this is a really clever use of [Exeunt]! \$\endgroup\$Maya– Maya2019年07月31日 15:10:18 +00:00Commented Jul 31, 2019 at 15:10
Haskell, (削除) 15 (削除ここまで) (削除) 14 (削除ここまで) 13 bytes
(>>=(<$"dd"))
or legibly:
\xs -> concatMap (\x -> map (const x) ['d','d']) xs
Explanation: Lists are a Monad in Haskell, and using the bind operator >>= is a concatMap, executing a function that takes an element and returns a list on each element of the list and then concatenating the resulting lists into one big list.
Now we just have to build a function that, given a value, returns a list of that value twice, which is accomplished by (<$"dd"), which can be read as "Take the list ['d','d'] and replace every element with the argument of this function. The "dd" could be any expression that results in a list of exactly two elements, but this is the shortest I could come up with.
-
1\$\begingroup\$ using
<$was something I never would've thought of \$\endgroup\$univalence– univalence2019年08月04日 19:09:13 +00:00Commented Aug 4, 2019 at 19:09 -
3\$\begingroup\$ @MegaMan Credit goes to Laikoni, who gave me that hint in another codegolf challenge a year ago codegolf.stackexchange.com/questions/6281/… \$\endgroup\$Maki– Maki2019年08月05日 07:52:28 +00:00Commented Aug 5, 2019 at 7:52
Pyramid Scheme, (削除) 229 218 (削除ここまで) 213 bytes
^
/l\
/oop\
^-----^
-^ ^-
/[\ /]\
^---^---^
-^ / \ -^
^-/out\ / \
-^-----/set\
-^ ^-----^
-^ - /+\
/ \ ^---^
/arg\ /1\ -
^-----^ ---
-^ -
-^
/ \
/arg\
-----^
/1\
---
This can definitely be shorter. Input is taken via command line arguments. This equates to basically:
str = input()
n = 0
while str[n]:
print(str[n]*2)
n += 1
With a few caveats, like the printing actually being handled in both the loop condition and the loop body.
Alternative 215 byter:
^
/l\
/oop\
^-----^
/[\ -^
^---^ / \
-^ ^-^ /set\
^- -^-^-----^
-^ / \- /+\
^-/out\ ^---^
-^----- /1\ -
-^ ---
-^
/ \
/arg\
^-----^
-^ -
-^
/ \
/arg\
-----^
/1\
---
-
3\$\begingroup\$ The
setcan be shifted up and left without interfering with anything. Try it online! \$\endgroup\$Khuldraeseth na'Barya– Khuldraeseth na'Barya2019年07月31日 14:28:31 +00:00Commented Jul 31, 2019 at 14:28 -
\$\begingroup\$ Pyramid Cult came to PPCG! \$\endgroup\$val - disappointed in SE– val - disappointed in SE2019年08月01日 09:59:38 +00:00Commented Aug 1, 2019 at 9:59
05AB1E, 2 bytes
ø ̃ or øS (both 05AB1E versions)
ζ ̃ or ζS (new 05AB1E version only)
€D or €Â (new 05AB1E version only)
.ι (new 05AB1E version only)
oS (new 05AB1E version only)
·S or xS (legacy 05AB1E version only)
+S (legacy 05AB1E version only)
Ok, I give up. I'm unable to find a 1-byter to solve this. Loads of 2-byters, though..
Try ø ̃ online or Try øS online.
Try ζ ̃ online or Try ζS online.
Try €D online or
Try €Â online.
Try .ι online.
Try oS online.
Try ·S online or Try xS online.
Try +S online.
I/O as a list of characters.
Explanation:
ø # Zip/transpose the (implicit) input-list with itself
# i.e. ["a","b","c"] → [["a","a"],["b","b"],["c","c"]]
̃ # Deep flatten it
# OR
S # Convert it to a flattened list of characters
# (which will be output implicitly as result)
The only program which works the same in both versions of 05AB1E. :)
ζ # Zip/transpose the (implicit) input-list with the (implicit) input-list
# i.e. ["a","b","c"] → [["a","a"],["b","b"],["c","c"]]
̃ # Deep flatten it
# OR
S # Convert it to a flattened list of characters
# (which will be output implicitly as result)
This version basically works the same as the one above for the new version. In the old version you would need an explicit pair ‚ first, and then you could zip/transpose that. Just ζ on a 1D list will be a no-op in the legacy version of 05AB1E.
€ # For each character in the (implicit) input-list,
# keeping all values on the stack into the resulting list:
D # Duplicate it
# OR
 # Bifurcate it (short for duplicate & reverse copy)
# (which will be output implicitly as result)
In the new version of 05AB1E, it keeps all values on the stack into the resulting list when doing a map. Whereas with the legacy version of 05AB1E it would only keep the top value. Which is why these only work in the new version.
.ι # Interleave the (implicit) input-list with the (implicit) input-list
# (which will be output implicitly as result)
This builtin wasn't there yet in the legacy version of 05AB1E.
o # Mirror each value in the (implicit) input-list
# i.e. ["a","b","c"] → ["aa","bb","cc"]
S # Convert it to a flattened list of characters
# (which will be output implicitly as result)
In the legacy version of 05AB1E, the horizontal mirror builtin would be ∞ instead of o. However, ∞S doesn't work in the legacy version, because it would implicitly convert the list to a newline-delimited string before mirroring it completely (Try it here), after which the S would also include these newlines.
· # Double each character
# OR
x # Double each character (without popping)
# i.e. ["a","b","c"] → ["aa","bb","cc"]
S # Convert it to a flattened list of characters
# (which will be output implicitly as result)
Double is short for 2*. In the new version of 05AB1E, build in Elixir, this only works on numeric values. The legacy version of 05AB1E was built in Python however, so 2* works similar and repeats the character.
+ # Append all characters in the (implicit) input-list at the same indices
# with the characters of the (implicit) input-list
# i.e. ["a","b","c"] → ["aa","bb","cc"]
S # Convert it to a flattened list of characters
# (which will be output implicitly as result)
Again, because the legacy version of 05AB1E was built in Python, "a"+"a" results in "aa", whereas the + cannot be used to append strings in the new version. (PS: There is an append for strings which works in both version, which is «, but when giving two list arguments it will concatenate them together instead of merging each string at the same indices like the program above (Try it here).)
-
\$\begingroup\$ There's also
ζ ̃for modern 05AB1E. \$\endgroup\$Grimmy– Grimmy2019年07月31日 11:57:19 +00:00Commented Jul 31, 2019 at 11:57 -
\$\begingroup\$ @Grimy Didn't realize that doesn't work in the legacy version. I thought it was the same as
ø ̃, so I didn't bother adding it as well. I have added it (as well asøS/ζS/xS). \$\endgroup\$Kevin Cruijssen– Kevin Cruijssen2019年07月31日 12:12:28 +00:00Commented Jul 31, 2019 at 12:12 -
2\$\begingroup\$ Alternatively,
øJ,ζJ,ºJ,·J,xJ, or+J. \$\endgroup\$Makonede– Makonede2021年03月10日 21:36:37 +00:00Commented Mar 10, 2021 at 21:36
x86-16 machine code, IBM PC DOS, (削除) 16 (削除ここまで) (削除) 10 (削除ここまで) 8 bytes
Assembled byte xxd dump
00000000: b401 cd21 cd29 ebf8 ...!....
Unassembled listing:
B4 01 MOV AH, 01H ; DOS read char from STDIN (AH=01)
CD 21 INT 21H ; read char into AL (echoes input)
CD 29 INT 29H ; write char in AL to console again
EB F8 JMP -8 ; continue looping until break
Standalone PC DOS executable. Input from STDIN, output to console.
Interactive console input:
Input by pipe:
Original 16 byte answer:
Assembled byte xxd dump
00000000: d1ee ad8a c849 acb4 0ecd 10cd 10e2 f7c3 .....I..........
Unassembled listing:
D1 EE SHR SI, 1 ; point SI to DOS PSP (080H)
AD LODSW ; load input length into AL
48 DEC AX ; remove leading space from length counter
8A C8 MOV CL, AL ; move length to loop counter
C_LOOP:
AC LODSB ; load next char into AL
B4 0E MOV AH, 0EH ; PC BIOS tty output function
CD 10 INT 10H ; write char to console
CD 10 INT 10H ; write char to console again
E2 F7 LOOP C_LOOP ; continue looping through chars
C3 RET ; exit to DOS
Standalone PC DOS executable. Input via command line, output to console.
-
\$\begingroup\$ Use XCHG AX, CX instead of MOV CL, AL to save a byte. \$\endgroup\$Maya– Maya2019年07月31日 15:14:50 +00:00Commented Jul 31, 2019 at 15:14
-
1\$\begingroup\$ @NieDzejkob, thanks! The only issue there is that
LODSWis going to put the leading space (20H) from81HintoAHwhich will of course mess up theLOOPif that's inCH... Bummer. \$\endgroup\$640KB– 640KB2019年07月31日 16:02:42 +00:00Commented Jul 31, 2019 at 16:02
Jelly, 1 byte
ż
Pardon my inexperience, I'm just getting started with Jelly. What I believe is happening is that we've defined a dyadic chain, which treats a single argument as both the left and right arguments. In this case, the chain consists of "zip; interleave x and y", interleaving the input string with itself.
Someone already posted a 1-byte Jelly solution, so I hope it's not bad manners to post mine.
-
12\$\begingroup\$ Welcome to the site! It perfectly fine to post an answer that ties an existing one especially if your answer has an explanation and the other does not. \$\endgroup\$2019年07月31日 20:59:49 +00:00Commented Jul 31, 2019 at 20:59
Python, (削除) 34 (削除ここまで) 25 bytes
lambda i:sum(zip(i,i),())
Try it online! Another one that returns a string instead of a list of characters:
for i in input():print(i,end=i)
for i in input(): asking for the input, and doing a
for loop for every char in the string.
print(i,end=i) print the character, and then close
the line with the same character.
-
4\$\begingroup\$
lambda i:sum(zip(i,i),())should do for -9. \$\endgroup\$Mr. Xcoder– Mr. Xcoder2019年07月31日 10:16:28 +00:00Commented Jul 31, 2019 at 10:16 -
\$\begingroup\$ @Mr.Xcoder this returns a list of characters, rather than a string. The original can be improved by 3 bytes, though:
for i in input():print(i,end=i)\$\endgroup\$primo– primo2019年07月31日 11:18:43 +00:00Commented Jul 31, 2019 at 11:18 -
\$\begingroup\$
lambda i:''.join(c*2 for c in i)32 bytes but returns a string and not a list \$\endgroup\$Gábor Fekete– Gábor Fekete2019年08月01日 14:40:35 +00:00Commented Aug 1, 2019 at 14:40 -
\$\begingroup\$ Still works with 31 bytes :)
lambda i:''.join(c*2for c in i)\$\endgroup\$movatica– movatica2019年08月07日 21:15:50 +00:00Commented Aug 7, 2019 at 21:15
-
4\$\begingroup\$ Those lengthy escaping... Better
s/./&&/g. \$\endgroup\$manatwork– manatwork2019年07月31日 12:52:23 +00:00Commented Jul 31, 2019 at 12:52 -
1\$\begingroup\$ This replaces each/any character with the whole matched search pattern (
&), in this case one character, twice via&&. \$\endgroup\$stephanmg– stephanmg2019年11月11日 11:05:38 +00:00Commented Nov 11, 2019 at 11:05
Jelly, 1 byte
Ḥ
A full program printing the result.
How?
Uses a (削除) bug (削除ここまで) feature...
Jelly's "double" atom, Ḥ is implemented with Python's * and it vectorises, while Jelly's lists of characters (its only "strings") are implemented as lists of Python strings which are usually just one character long - that is until we realise that in Python 'blah'*2='blahblah'...
Ḥ - Main link: list of characters (as parsed from an argument as a Python string)
- e.g. ['A','b','b','a']
Ḥ - double (vectorises) ['AA','bb','bb','aa']
- implicit, smashing print AAbbbbaa
-
\$\begingroup\$ If you wanted to make a monadic link (rather than full program), you could use
ḤṾV\$\endgroup\$Nick Kennedy– Nick Kennedy2019年07月31日 16:22:24 +00:00Commented Jul 31, 2019 at 16:22 -
\$\begingroup\$ Ah, I had no idea that'd work - nice! \$\endgroup\$Jonathan Allan– Jonathan Allan2019年07月31日 16:41:31 +00:00Commented Jul 31, 2019 at 16:41
-
\$\begingroup\$ Looks to me like three-bytes character:
$ echo -n "Ḥ" | hexdump -C<newline>00000000 e1 b8 a4 |...|\$\endgroup\$Jakuje– Jakuje2019年08月01日 07:40:40 +00:00Commented Aug 1, 2019 at 7:40 -
1\$\begingroup\$ @Jakuje The code is one byte,
af,Ḥis just a visual representation of that byte, see Jelly's code-page (also linked in the header of the post). \$\endgroup\$Jonathan Allan– Jonathan Allan2019年08月01日 08:47:11 +00:00Commented Aug 1, 2019 at 8:47
JavaScript (Node.js), 22 bytes
Takes input as an array of characters.
s=>s.flatMap(c=>[c,c])
JavaScript (ES6), 26 bytes
Takes input as a string.
s=>s.replace(/./gs,c=>c+c)
Alternate version suggested by @PabloLozano:
s=>s.replace(/./gs,'$&$&')
Doing it the recursive way is also just as long:
f=([c,...s])=>c?c+c+f(s):s
-
\$\begingroup\$
s=>s.replace(/./gs,c=>c+c)so that.also matches newlines \$\endgroup\$Nahuel Fouilleul– Nahuel Fouilleul2019年07月31日 10:43:35 +00:00Commented Jul 31, 2019 at 10:43 -
1\$\begingroup\$ @KevinCruijssen The
join('')should take care of that. On second thought, that may be augmenting the output in a non-standard way so that may not be valid. \$\endgroup\$Oliver– Oliver2019年07月31日 12:25:40 +00:00Commented Jul 31, 2019 at 12:25 -
1\$\begingroup\$ @Oliver I don't think it's valid. My 05AB1E would have a few 1 byte solutions in that case. Default I/O for a string is either, well.. a string, or a list/array/stream of characters / single-char strings.
["aa","bb","cc"]is a list of strings however, neither a string nor list of characters of itself. Adding a join or flatten it to a list of characters is valid, but would have to be counted towards the byte-count. \$\endgroup\$Kevin Cruijssen– Kevin Cruijssen2019年07月31日 12:29:04 +00:00Commented Jul 31, 2019 at 12:29 -
1\$\begingroup\$ @KevinCruijssen Yeah, I agree :-) \$\endgroup\$Oliver– Oliver2019年07月31日 12:30:53 +00:00Commented Jul 31, 2019 at 12:30
-
1\$\begingroup\$ Another option with replace and 26 characters:
s=>s.replace(/./gs,'$&$&')\$\endgroup\$Pablo Lozano– Pablo Lozano2019年08月01日 15:22:39 +00:00Commented Aug 1, 2019 at 15:22
PowerShell, (削除) 29 (削除ここまで) (削除) 23 (削除ここまで) 21 bytes
-6 bytes thanks to Andrei Odegov
-2 bytes thanks to mazzy
-join($args|%{$_+$_})
Takes input via splatting, essentially making it an array of chars
-
2\$\begingroup\$ -6 bytes. \$\endgroup\$Andrei Odegov– Andrei Odegov2019年07月31日 16:10:48 +00:00Commented Jul 31, 2019 at 16:10
-
1\$\begingroup\$ what do you think about splatting? Try it online! \$\endgroup\$mazzy– mazzy2019年07月31日 16:10:51 +00:00Commented Jul 31, 2019 at 16:10
-
\$\begingroup\$ Might you be interested in tackling github.com/haskell/containers/issues/314 ? \$\endgroup\$dfeuer– dfeuer2019年08月04日 15:43:30 +00:00Commented Aug 4, 2019 at 15:43
C (gcc), 40 bytes
f(s,t)char*s,*t;{while(*t++=*t++=*s++);}
Assumes t is a buffer which is large enough to store the output.
Probably not standard-conforming, but it works on TIO.
-
1\$\begingroup\$ 32 bytes - tio.run/##S9ZNzknMS///P01Dq1hHq0SzujwjMydVQ6tEW9sWQhRra2ta1/… \$\endgroup\$jdt– jdt2021年08月21日 00:46:01 +00:00Commented Aug 21, 2021 at 0:46
Rust, (削除) 83 (削除ここまで) (削除) 46 (削除ここまで) 45 bytes
|x:&str|for c in x.chars(){print!("{}{0}",c)}
I don't like this, but it's not cheating.
- -1 byte thanks to Maya.
-
1\$\begingroup\$ -1 byte with
print!("{}{0}",c)\$\endgroup\$Maya– Maya2019年12月19日 16:37:44 +00:00Commented Dec 19, 2019 at 16:37 -
1
-
\$\begingroup\$ @mousetail Nice. Forgot they'd added that feature. (Only works on recent versions of Rust, though.) \$\endgroup\$wizzwizz4– wizzwizz42023年01月17日 15:56:14 +00:00Commented Jan 17, 2023 at 15:56
makina, 96 bytes
v L>C
v>n0; >n0;
>wv ^
>Ov ^
^i>?g
^IvOC
^ nv
;1<>ppuv
^<<<OOO<
^ >vv
;0nCUv>n1;
T<<
;1nC
It's hard to explain makina code, but basically this goes through each letter of the input and prints it twice.
-
\$\begingroup\$ interesting language. is there any documentation for it? \$\endgroup\$Razetime– Razetime2022年09月09日 05:47:37 +00:00Commented Sep 9, 2022 at 5:47
-
\$\begingroup\$ @Razetime There is now! esolangs.org/wiki/Makina \$\endgroup\$Ginger– Ginger2022年09月10日 14:02:22 +00:00Commented Sep 10, 2022 at 14:02
Java 8, 27 bytes
s->s.replaceAll(".","0ドル0ドル")
Old 31 bytes answer before the rules got changed:
s->s.replaceAll("(?s).","0ドル0ドル")
NOTE: The suggestion of @EmbodimentOfIgnorance (\n|. instead of (?s). has been reverted, since it fails if the input contains \r. Thanks for reporting to @OlivierGrégoire.
Explanation:
s-> // Method with String as both parameter and return-type
s.replaceAll("(?s).","0ドル0ドル") // Regex-replace all matches with the replacement
// And return the changed String as result
Regex explanation:
(?s). // Match:
(?s) // Enable DOTALL mode so newlines and carriage returns
// are treated as literal
. // A single character
0ドル0ドル // Replacement:
0ドル // All character(s) found in the match
0ドル // And again all character(s) found in the match
-
1\$\begingroup\$
(?s).can be replaced with\n|.\$\endgroup\$Gymhgy– Gymhgy2019年07月31日 14:36:37 +00:00Commented Jul 31, 2019 at 14:36 -
\$\begingroup\$ The
\n|.version doesn't work correctly with input"\r". The(?s).version works correctly with\r, though. \$\endgroup\$Olivier Grégoire– Olivier Grégoire2019年08月01日 11:35:30 +00:00Commented Aug 1, 2019 at 11:35 -
\$\begingroup\$ The requirement now says ASCI in range 32-126, so you can golf to 30 with @EmbodimentofIgnorance's shortcut. \$\endgroup\$Olivier Grégoire– Olivier Grégoire2019年08月02日 07:47:53 +00:00Commented Aug 2, 2019 at 7:47
-
\$\begingroup\$ @OlivierGrégoire well if the range is 32-126 you can golf to 27 with just
.\$\endgroup\$Grimmy– Grimmy2019年08月02日 09:26:14 +00:00Commented Aug 2, 2019 at 9:26 -
1\$\begingroup\$ Oops, sometimes I forget that
\nis printable but not part of the ASCII printable range. \$\endgroup\$Olivier Grégoire– Olivier Grégoire2019年08月02日 09:47:43 +00:00Commented Aug 2, 2019 at 9:47
Haskell, 15 bytes
Here (:)<*>pure takes an argument and returns a list containing this argument twice. Then >>= maps this function over every entry of a the input list (which is a string in our case) and flattens the result (a list of lists) back to a list.
(>>=(:)<*>pure)
-
\$\begingroup\$ Had the same first answer, love the use of the S combinator \$\endgroup\$cole– cole2019年07月31日 19:04:55 +00:00Commented Jul 31, 2019 at 19:04
-
\$\begingroup\$ @cole I only saw your shorter answer when I was about to submit this one - but I posted it anyway as I thought it was so elegant:) \$\endgroup\$flawr– flawr2019年08月01日 07:47:24 +00:00Commented Aug 1, 2019 at 7:47
J, (削除) 6 (削除ここまで) 3 bytes
-3 bytes thanks to Richard Donovan
2#]
K (oK), (削除) 8 (削除ここまで) 4 bytes
-4 bytes thanks to ngn!
{2}#
-
1\$\begingroup\$ Galen isn’t it just 2# for two bytes, as in... \$\endgroup\$Richard Donovan– Richard Donovan2019年07月31日 18:52:09 +00:00Commented Jul 31, 2019 at 18:52
-
2\$\begingroup\$ 2# ‘qwerty’ ===> ‘qqwweerrttyy’ \$\endgroup\$Richard Donovan– Richard Donovan2019年07月31日 18:54:21 +00:00Commented Jul 31, 2019 at 18:54
-
\$\begingroup\$ @Richard Donovan yes. It works! \$\endgroup\$Galen Ivanov– Galen Ivanov2019年07月31日 18:55:18 +00:00Commented Jul 31, 2019 at 18:55
-
-
\$\begingroup\$ @ngn Hmm, I didn't know, apparently! Thank you! \$\endgroup\$Galen Ivanov– Galen Ivanov2019年08月14日 09:18:57 +00:00Commented Aug 14, 2019 at 9:18
dotcomma, (削除) 15 (削除ここまで) 14 bytes
[[],][.[[,],]] code
[[],] push 0 to the queue
[. ] while next block is non-zero
[[,],] pop from the queue and push it twice
-
\$\begingroup\$ Nice golf, I was sure something could be shortened there but I couldn't find it :p \$\endgroup\$2021年06月13日 20:01:46 +00:00Commented Jun 13, 2021 at 20:01
-
\$\begingroup\$ Thanks! I don't think there's anything left to change, but I might be wrong. \$\endgroup\$Jay Ryan– Jay Ryan2021年06月13日 21:25:56 +00:00Commented Jun 13, 2021 at 21:25
JavaScript, 39 bytes
alert([...prompt()].map(a=>a+a).join``)
May not be the shortest but at least original.
EDIT
Removed 2 bytes thanks to @emanresu A
-
4\$\begingroup\$ red sus. (nice answer tho) \$\endgroup\$math scat– math scat2022年09月11日 11:07:26 +00:00Commented Sep 11, 2022 at 11:07
-
3\$\begingroup\$ You can do
.join``\$\endgroup\$emanresu A– emanresu A2022年09月11日 11:59:37 +00:00Commented Sep 11, 2022 at 11:59
MarioLANG, (削除) 23 20 (削除ここまで) 17 bytes
>,
"+
.[
.<
!-
#=
Unlike brainfuck, MarioLANG returns -1 on EOF, so we must increment the value read before comparing it to zero, and then decrement before printing it. This is probably the shortest answer possible in MarioLANG.
void foo(char *c, size_t len)is legal that takes one input/output buffer and a length, and doesn't have any return value, just a side-effect on the object it has a pointer to. \$\endgroup\$