73
\$\begingroup\$

A repost of this challenge. Meta discussion. Sandbox post. Body of the question similar to the original

Robber's challenge

This cops and robbers is now (08/03/2018) closed to further competing cop entries, as robbers may no longer be competing to crack answers, but feel free to post new answers.

The Cops challenge was won by Dennis with his brilliant 6 byte Sesos answer

The Robbers challenge was won by totallyhuman, with an astounding 30 cracks!

The Cops' Challenge

To compete as a cop:

  1. Choose a programming language. A valid programming language is one which meets all three of these criteria:

  2. Write a full program that outputs the numbers from 1 to 100, inclusive, in ascending order. You can output as decimal integers, as bytecode values (! to represent 33, for instance), or as unary digits (1111 for 4, e.g)1. If using unary, you should use any consistent character for digits, and a different, consistent character as a delimiter. If using integers, you should output with a constant non-digit delimiter between each number. You may also output with leading and trailing characters (such as []) but please be sensible (don't output a thousand bytes of rubbish either side of the count for instance). You must specify your output format in your answer.

    You must not assume a REPL environment or existing boilerplate code. Flags may be used, but you must reveal what flags are used in your answer. The program must be in the form of one or more source files (to rule out quirky languages like Folders) and must fit into your answer in full (so it must not be longer than 65,536 characters) - this shouldn't be an issue for any serious submission.

    If your code contains bytes outside of printable ASCII + newline, please include a hex dump to make sure your code is actually testable.

    The program must terminate within 5 minutes on a typical desktop PC.

That's it. However, as with everything, there is a catch. You should aim to obfuscate your program as much as possible, as the Robbers' task is to guess the language you used. You should also aim to make sure that your program only works in the intended language (although this is likely to be less of a problem than the Foo cracks in the original challenge). The output format must be the same as your intended solution in order to constitute a valid crack.

Once 7 days have passed without anyone discovering any language where your program is a valid crack, you may reveal the language and mark it as safe. Please note, your submission can still be cracked until you reveal the language.

You must not under any circumstances edit the source code of your submission once posted (as this may invalidate a robber's active attempts at cracking your answer). So make sure that you golf it as well as you can (or dare) before posting. If you realise that your answer does not work after posting it, simply delete your answer and post a fixed version if you want to.

The shortest safe submission in bytes wins!

1: If you wish to output in a different way, please ask in the comments

The Stack Snippet

You can use this stack snippet to browse the answers more easily:

answersSafe=[];answersCracked=[];answersUncracked=[];answerPage=1;robberTodo=[];userNames={};robberMap={};robberStats={};robberTimes={};function template($element,data){var $clone=$element.clone().removeClass('template');var html=$clone.html();for(var key in data){html=html.replace('{'+key+'}',data[key])}$clone.html(html);$element.after($clone)}function hideEmpty(){$('tbody').each(function(){if($(this).find('tr:not(.template):has(td)').length==0){$(this).find('tr:not(.empty):has(th)').addClass('inactive');$(this).find('tr.empty').removeClass('inactive')}})}function formatError(obj,reason){template($('.warn.template'),{id:obj.cop_id,cop:obj.cop_user,reason:reason})}function showAnswers(category,selector,sorter){sorter(category);$('#'+selector).find('tr:not(.template):has(td)').remove();$.each(category,function(i,answer){template($('#'+selector+' .template'),answer)});$('code:has(br)').addClass('clickable').click(function(){$(this).toggleClass('full')});updateCountdowns()}function getAnswers(){$.ajax({url:"https://api.stackexchange.com/2.2/questions/155018/answers?pagesize=100&order=desc&sort=creation&site=codegolf&filter=!*LUzJZNOIUpZsWsZBLe&page="+(answerPage++),method:"get",dataType:"jsonp"}).then(function(data){$.each(data.items,function(i,answer){var obj={cop_id:answer.answer_id,cop_user:answer.owner.display_name,cop_time:answer.creation_date,safe_on:answer.creation_date+604800};var $e=$('<div/>').html(answer.body);var $headers=$e.find(':header');if($headers.length==0){return formatError(obj,"no header")}var header=$headers.first().html();var $code=$e.find('pre code');if($code.length==0){return formatError(obj,"no code")}obj.code=$code.first().html().replace(/\n/g,'<br/>');if(obj.code.endsWith('<br/>')){obj.code=obj.code.slice(0,-5)}var bm=/(\d+)\s+bytes/.exec(header);if(bm==null){return formatError(obj,"no bytecount")}obj.size=parseInt(bm[1]);if(obj.size==NaN){return formatError(obj,"bytecount is NaN: "+bm[1])}obj.language=header.slice(0,bm.index).trim();while(obj.language.charAt(obj.language.length-1)!=','&&obj.language.length!=0){obj.language=obj.language.slice(0,-1)}if(obj.language.length==0){return formatError(obj,"no/bad separator before bytecount")}obj.language=obj.language.slice(0,-1).trim();obj.language_text=$('<div/>').html(obj.language).text();var end=header.slice(bm.index+bm[0].length).trim();if(end.length==0){if(obj.language!=="???"){return formatError(obj,"not marked as safe nor cracked, but language is "+obj.language+" (expected ???)")}return answersUncracked.push(obj)}if(!end.startsWith(',')){return formatError(obj,"no/bad separator after bytecount")}end=end.slice(1).trim();if(end==='safe'){return answersSafe.push(obj)}var $end=$('<div/>').html(end);var end_text=$end.text();if(!end_text.startsWith('cracked')){return formatError(obj,"expected 'cracked' or 'safe', got '"+end_text+"'")}var expectedURL='https://codegolf.stackexchange.com/a/';var $links=$end.find('a');if($links.length==0){return formatError(obj,"no cracked link")}var robberURL=$links.first().attr('href');if(!robberURL.startsWith(expectedURL)){return formatError(obj,"link does not start with "+expectedURL+": "+robberURL)}obj.robber_id=parseInt(robberURL.slice(expectedURL.length));if(obj.robber_id==NaN){return formatError(obj,"robber_id is NaN")}robberTodo.push(obj.robber_id);answersCracked.push(obj)});if(data.has_more){getAnswers()}else{getRobbers()}})}function sortBySize(category){category.sort(function(a,b){return b.size-a.size})}function sortByTime(category){category.sort(function(a,b){return b.cop_time-a.cop_time})}function sortByLiveTime(category){category.sort(function(a,b){return b.cracked_after-a.cracked_after})}function sortByCop(category){category.sort(function(a,b){return b.cop_user.localeCompare(a.cop_user)})}function sortByRobber(category){category.sort(function(a,b){return b.robber_user.localeCompare(a.robber_user)})}function sortByLanguage(category){category.sort(function(a,b){return b.language_text.localeCompare(a.language_text)})}function getRobbers(){if(robberTodo.length==0){$.each(answersCracked,function(i,answer){answer.robber_user=userNames[robberMap[answer.robber_id]];answer.cracked_after=robberTimes[answer.robber_id]-answer.cop_time;answer.cracked_after_str=formatTime(answer.cracked_after)});showAnswers(answersUncracked,'uncracked',sortByTime);showAnswers(answersCracked,'cracked',sortByLiveTime);showAnswers(answersSafe,'safe',sortBySize);hideEmpty();var graphData=[];$.each(robberStats,function(k,v){graphData.push({name:decodeEntities(userNames[k]),value:v})});graphData.sort(function(a,b){if(a.value==b.value){return a.name.localeCompare(b.name)}else{return b.value-a.value}});var graphLabels=[];var graphValues=[];$.each(graphData,function(i,obj){graphLabels.push(obj.name);graphValues.push(obj.value)});var graphColors=[];for(var i=0;i<graphData.length;i+=1){graphColors.push(['#b58900','#cb4b16','#dc322f','#d33682','#6c71c4','#268bd2','#2aa198','#859900'][i%8])}$('#robber-stats').attr('width',600);$('#robber-stats').attr('height',24*graphData.length+66);$('#answer-stats').attr('width',600);$('#answer-stats').attr('height',400);Chart.defaults.global.defaultFontColor='#839496';new Chart($('#robber-stats'),{type:'horizontalBar',data:{labels:graphLabels,datasets:[{data:graphValues,backgroundColor:graphColors}]},options:{responsive:false,legend:false,tooltips:false,layout:{padding:{right:40}},title:{display:true,text:'Number of answers cracked per robber',fontSize:18},scales:{yAxes:[{gridLines:{display:false}}],xAxes:[{gridLines:{display:false},ticks:{beginAtZero:true}}]},plugins:{datalabels:{anchor:'end',align:'end'}}}});new Chart($('#answer-stats'),{type:'pie',data:{labels:['Uncracked','Cracked','Safe'],datasets:[{data:[answersUncracked.length,answersCracked.length,answersSafe.length],backgroundColor:['#2aa198','#dc322f','#859900'],borderColor:'#002b36'}]},options:{responsive:false,tooltips:{backgroundColor:'#073642',displayColors:false},title:{display:true,text:'Number of answers in each category',fontSize:18},plugins:{datalabels:false}}});updateCountdowns();setInterval(updateCountdowns,1000);$('#loading').hide()}else{$.ajax({url:"https://api.stackexchange.com/2.2/answers/"+robberTodo.slice(0,100).join(';')+"?site=codegolf&filter=!*RB.h_b*K*dQTllFUdy",method:"get",dataType:"jsonp"}).then(function(data){$.each(data.items,function(i,robber){robberTodo=robberTodo.filter(function(e){return e!==robber.answer_id});robberMap[robber.answer_id]=robber.owner.user_id;robberTimes[robber.answer_id]=robber.creation_date;userNames[robber.owner.user_id]=robber.owner.display_name;if(robber.owner.user_id in robberStats){robberStats[robber.owner.user_id]+=1}else{robberStats[robber.owner.user_id]=1}});getRobbers()})}}var decodeEntities=(function(){var element=document.createElement('div');function decodeHTMLEntities(str){if(str&&typeof str==='string'){str=str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi,'');str=str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi,'');element.innerHTML=str;str=element.textContent;element.textContent=''}return str}return decodeHTMLEntities})();function formatTime(seconds){var arr=[];if(seconds>86400){arr.push(Math.floor(seconds/86400)+" days");seconds%=86400}if(seconds>3600){arr.push(Math.floor(seconds/3600)+" hours");seconds%=3600}if(seconds>60){arr.push(Math.floor(seconds/60)+" minutes");seconds%=60}if(seconds!=0){arr.push(seconds+" seconds")}return arr.join(', ').split('').reverse().join('').replace(',','dna ').split('').reverse().join('')}function updateCountdowns(){$('tr:not(.template) .countdown').each(function(){var target=$(this).attr('data-target');var now=Math.floor(+new Date()/1000);if(target-now<86400){$(this).addClass('urgent')}else{$(this).removeClass('urgent')}if(target<now){$(this).removeClass('countdown').text('Safe! (according to your computer\'s time)')}else{$(this).text(formatTime(target-now))}})}$('thead, #stats-header').click(function(){$(this).toggleClass('hidden')});getAnswers();
*{margin:0;padding:0;font:12pt sans-serif;}html,body{background:#002b36;color:#839496;width:100%;height:100%;}body>:not(.i):not(#loading){margin:5px;}#loading{background:rgb(64,64,64,0.8);position:fixed;top:0;left:0;width:100%;height:100%;display:table;z-index:100;}#loading-wrapper{display:table-cell;vertical-align:middle;text-align:center;font-size:20pt;color:#ddd;}#fullpage-msg,.warn{padding:5px 5px 5px 5px;margin:10px 0px;}@media (min-width:800px){#fullpage-msg{display:none;}}a{color:#268bd2;}code{font-family:monospace;font-size:16px;background:#073642;padding:1px 5px;white-space:pre;position:relative;}.clickable{cursor:pointer;}code:not(.full){max-height:38px;overflow:hidden;}code.clickable:not(.full):before{content:'';background:linear-gradient(transparent 20px,rgba(7,54,66,0.8) 32px,#002b36);position:absolute;top:0;left:0;width:100%;height:100%;}td,th{padding:5px;vertical-align:top;white-space:nowrap;text-align:left;}thead th,#stats-header{font-size:20pt;margin:10px 0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;cursor:pointer;}th{font-weight:bold;}path{fill:#839496;}thead:not(.hidden) .right-arrow,#stats-header:not(.hidden) .right-arrow,thead.hidden .down-arrow,#stats-header.hidden .down-arrow{visibility:hidden;}.hidden+tbody,.hidden+#stats,.template,.inactive{display:none;}small,code{display:block;}small,small a{font-size:8pt;}#stats-header{font-weight:bold;padding:6px;}.urgent{color:#dc322f;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js"></script><script>!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("chart.js")):"function"==typeof define&&define.amd?define(["chart.js"],e):e(t.Chart)}(this,function(t){"use strict";var e=(t=t&&t.hasOwnProperty("default")?t.default:t).helpers,n={toTextLines:function(t){var n,a=[];for(t=[].concat(t);t.length;)"string"==typeof(n=t.pop())?a.unshift.apply(a,n.split("\n")):Array.isArray(n)?t.push.apply(t,n):e.isNullOrUndef(t)||a.unshift(""+n);return a},toFontString:function(t){return!t||e.isNullOrUndef(t.size)||e.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family},textSize:function(t,e,n){var a,r=[].concat(e),i=r.length,o=t.font,l=0;for(t.font=n.string,a=0;a<i;++a)l=Math.max(t.measureText(r[a]).width,l);return t.font=o,{height:i*n.lineHeight,width:l}},parseFont:function(a){var r=t.defaults.global,i=e.valueOrDefault(a.size,r.defaultFontSize),o={family:e.valueOrDefault(a.family,r.defaultFontFamily),lineHeight:e.options.toLineHeight(a.lineHeight,i),size:i,style:e.valueOrDefault(a.style,r.defaultFontStyle),weight:e.valueOrDefault(a.weight,null),string:""};return o.string=n.toFontString(o),o},bound:function(t,e,n){return Math.max(t,Math.min(e,n))}};function a(t,e){var n=e.x,a=e.y;if(null===n)return{x:0,y:-1};if(null===a)return{x:1,y:0};var r=t.x-n,i=t.y-a,o=Math.sqrt(r*r+i*i);return{x:o?r/o:0,y:o?i/o:-1}}function r(t,e,n,a,r){switch(r){case"center":n=a=0;break;case"bottom":n=0,a=1;break;case"right":n=1,a=0;break;case"left":n=-1,a=0;break;case"top":n=0,a=-1;break;case"start":n=-n,a=-a;break;case"end":break;default:r*=Math.PI/180,n=Math.cos(r),a=Math.sin(r)}return{x:t,y:e,vx:n,vy:a}}var i={arc:function(t,e,n){var a,i=(t.startAngle+t.endAngle)/2,o=Math.cos(i),l=Math.sin(i),s=t.innerRadius,d=t.outerRadius;return a="start"===e?s:"end"===e?d:(s+d)/2,r(t.x+o*a,t.y+l*a,o,l,n)},point:function(t,e,n,i){var o=a(t,i),l=t.radius,s=0;return"start"===e?s=-l:"end"===e&&(s=l),r(t.x+o.x*s,t.y+o.y*s,o.x,o.y,n)},rect:function(t,e,n,i){var o=t.horizontal,l=Math.abs(t.base-(o?t.x:t.y)),s=o?Math.min(t.x,t.base):t.x,d=o?t.y:Math.min(t.y,t.base),u=a(t,i);return"center"===e?o?s+=l/2:d+=l/2:"start"!==e||o?"end"===e&&o&&(s+=l):d+=l,r(s,d,u.x,u.y,n)},fallback:function(t,e,n,i){var o=a(t,i);return r(t.x,t.y,o.x,o.y,n)}},o=t.helpers;var l=function(t,e){this._el=t,this._index=e,this._model=null};o.extend(l.prototype,{_modelize:function(e,a,r,l){var s,d=this._index,u=o.options.resolve,f=n.parseFont(u([r.font,{}],l,d));return{align:u([r.align,"center"],l,d),anchor:u([r.anchor,"center"],l,d),backgroundColor:u([r.backgroundColor,null],l,d),borderColor:u([r.borderColor,null],l,d),borderRadius:u([r.borderRadius,0],l,d),borderWidth:u([r.borderWidth,0],l,d),color:u([r.color,t.defaults.global.defaultFontColor],l,d),font:f,lines:a,offset:u([r.offset,0],l,d),opacity:u([r.opacity,1],l,d),origin:function(t){var e=t._model.horizontal,n=t._scale||e&&t._xScale||t._yScale;if(!n)return null;if(void 0!==n.xCenter&&void 0!==n.yCenter)return{x:n.xCenter,y:n.yCenter};var a=n.getBasePixel();return e?{x:a,y:null}:{x:null,y:a}}(this._el),padding:o.options.toPadding(u([r.padding,0],l,d)),positioner:(s=this._el,s instanceof t.elements.Arc?i.arc:s instanceof t.elements.Point?i.point:s instanceof t.elements.Rectangle?i.rect:i.fallback),rotation:u([r.rotation,0],l,d)*(Math.PI/180),size:n.textSize(e,a,f),textAlign:u([r.textAlign,"start"],l,d)}},update:function(t,e,a){var r,i,l,s=null,d=this._index;o.options.resolve([e.display,!0],a,d)&&(r=a.dataset.data[d],i=o.valueOrDefault(o.callback(e.formatter,[r,a]),r),s=(l=o.isNullOrUndef(i)?[]:n.toTextLines(i)).length?this._modelize(t,l,e,a):null),this._model=s},draw:function(t){var e,a,r,i,l,s,d,u,f,h,c,y,g,x,b=this._model;b&&b.opacity&&(r=b.size,i=b.padding,l=r.height,s=r.width,u=-l/2,e={frame:{x:(d=-s/2)-i.left,y:u-i.top,w:s+i.width,h:l+i.height},text:{x:d,y:u,w:s,h:l}},a=function(t,e,n){var a=e.positioner(t._view,e.anchor,e.align,e.origin),r=a.vx,i=a.vy;if(!r&&!i)return{x:a.x,y:a.y};var o=e.borderWidth||0,l=n.w+2*o,s=n.h+2*o,d=e.rotation,u=Math.abs(l/2*Math.cos(d))+Math.abs(s/2*Math.sin(d)),f=Math.abs(l/2*Math.sin(d))+Math.abs(s/2*Math.cos(d)),h=1/Math.max(Math.abs(r),Math.abs(i));return u*=r*h,f*=i*h,u+=e.offset*r,f+=e.offset*i,{x:a.x+u,y:a.y+f}}(this._el,b,e.frame),t.save(),t.globalAlpha=n.bound(0,b.opacity,1),t.translate(Math.round(a.x),Math.round(a.y)),t.rotate(b.rotation),f=t,h=e.frame,y=(c=b).backgroundColor,g=c.borderColor,x=c.borderWidth,(y||g&&x)&&(f.beginPath(),o.canvas.roundedRect(f,Math.round(h.x)-x/2,Math.round(h.y)-x/2,Math.round(h.w)+x,Math.round(h.h)+x,c.borderRadius),f.closePath(),y&&(f.fillStyle=y,f.fill()),g&&x&&(f.strokeStyle=g,f.lineWidth=x,f.lineJoin="miter",f.stroke())),function(t,e,n,a){var r,i,o,l=a.textAlign,s=a.font.lineHeight,d=a.color,u=e.length;if(u&&d)for(r=n.x,i=n.y+s/2,"center"===l?r+=n.w/2:"end"!==l&&"right"!==l||(r+=n.w),t.font=a.font.string,t.fillStyle=d,t.textAlign=l,t.textBaseline="middle",o=0;o<u;++o)t.fillText(e[o],Math.round(r),Math.round(i),Math.round(n.w)),i+=s}(t,b.lines,e.text,b),t.restore())}});var s=t.helpers,d={align:"center",anchor:"center",backgroundColor:null,borderColor:null,borderRadius:0,borderWidth:0,color:void 0,display:!0,font:{family:void 0,lineHeight:1.2,size:void 0,style:void 0,weight:null},offset:4,opacity:1,padding:{top:4,right:4,bottom:4,left:4},rotation:0,textAlign:"start",formatter:function(t){if(s.isNullOrUndef(t))return null;var e,n,a,r=t;if(s.isObject(t))if(s.isNullOrUndef(t.label))if(s.isNullOrUndef(t.r))for(r="",a=0,n=(e=Object.keys(t)).length;a<n;++a)r+=(0!==a?", ":"")+e[a]+": "+t[e[a]];else r=t.r;else r=t.label;return""+r}},u=t.helpers,f="$datalabels";t.defaults.global.plugins.datalabels=d,t.plugins.register({id:"datalabels",afterDatasetUpdate:function(t,e,n){var a,r,i,o,s,d=t.data.datasets[e.index],h=(a=n,!1===(r=d.datalabels)?null:(!0===r&&(r={}),u.merge({},[a,r]))),c=e.meta.data||[],y=c.length,g=t.ctx;for(g.save(),i=0;i<y;++i)(o=c[i])&&!o.hidden?(s=new l(o,i)).update(g,h,{chart:t,dataIndex:i,dataset:d,datasetIndex:e.index}):s=null,o[f]=s;g.restore()},afterDatasetDraw:function(t,e){var n,a,r=e.meta.data||[],i=r.length;for(n=0;n<i;++n)(a=r[n][f])&&a.draw(t.ctx)}})});</script><div id="loading"><span id="loading-wrapper">Loading...</span></div><div id="fullpage-msg"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 111.577 111.577"><path d="M78.962,99.536l-1.559,6.373c-4.677,1.846-8.413,3.251-11.195,4.217c-2.785,0.969-6.021,1.451-9.708,1.451c-5.662,0-10.066-1.387-13.207-4.142c-3.141-2.766-4.712-6.271-4.712-10.523c0-1.646,0.114-3.339,0.351-5.064c0.239-1.727,0.619-3.672,1.139-5.846l5.845-20.688c0.52-1.981,0.962-3.858,1.316-5.633c0.359-1.764,0.532-3.387,0.532-4.848c0-2.642-0.547-4.49-1.636-5.529c-1.089-1.036-3.167-1.562-6.252-1.562c-1.511,0-3.064,0.242-4.647,0.71c-1.59,0.47-2.949,0.924-4.09,1.346l1.563-6.378c3.829-1.559,7.489-2.894,10.99-4.002c3.501-1.111,6.809-1.667,9.938-1.667c5.623,0,9.962,1.359,13.009,4.077c3.047,2.72,4.57,6.246,4.57,10.591c0,0.899-0.1,2.483-0.315,4.747c-0.21,2.269-0.601,4.348-1.171,6.239l-5.82,20.605c-0.477,1.655-0.906,3.547-1.279,5.676c-0.385,2.115-0.569,3.731-0.569,4.815c0,2.736,0.61,4.604,1.833,5.597c1.232,0.993,3.354,1.487,6.368,1.487c1.415,0,3.025-0.251,4.814-0.744C76.854,100.348,78.155,99.915,78.962,99.536z M80.438,13.03c0,3.59-1.353,6.656-4.072,9.177c-2.712,2.53-5.98,3.796-9.803,3.796c-3.835,0-7.111-1.266-9.854-3.796c-2.738-2.522-4.11-5.587-4.11-9.177c0-3.583,1.372-6.654,4.11-9.207C59.447,1.274,62.729,0,66.563,0c3.822,0,7.091,1.277,9.803,3.823C79.087,6.376,80.438,9.448,80.438,13.03z"/></svg> Click the "Full page" link in the top right for vastly superior experience</div><div class="warn template">&#9888; <a href="https://codegolf.stackexchange.com/a/{id}">This answer</a> by {cop} is not formatted correctly ({reason}).</div><table><thead><tr><th colspan="5"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 9 9"><path class="right-arrow" d="M 0 0 L 0 9 L 9 4.5 Z"/><path class="down-arrow" d="M 0 0 L 9 0 L 4.5 9 Z"/></svg> Uncracked answers</th></tr></thead><tbody id="uncracked"><tr><th colspan="3" onclick="showAnswers(answersUncracked, 'uncracked', sortByCop)" class="clickable">Posted by</th><th onclick="showAnswers(answersUncracked, 'uncracked', sortBySize)" class="clickable">Size</th><th onclick="showAnswers(answersUncracked, 'uncracked', sortByTime)" class="clickable">Safe in</th><th>Code</th></tr><tr class="empty inactive"><th colspan="5">There are no uncracked answers</th></tr><tr class="template"><td colspan="3"><a href="https://codegolf.stackexchange.com/a/{cop_id}">{cop_user}</a></td><td>{size} bytes</td><td><span class="countdown" data-target="{safe_on}"></span></td><td><code>{code}</code></td></tr></tbody><thead><tr><th colspan="5"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 9 9"><path class="right-arrow" d="M 0 0 L 0 9 L 9 4.5 Z"/><path class="down-arrow" d="M 0 0 L 9 0 L 4.5 9 Z"/></svg> Cracked answers</th></tr></thead><tbody id="cracked"><tr><th onclick="showAnswers(answersCracked, 'cracked', sortByCop)" class="clickable">Posted by</th><th onclick="showAnswers(answersCracked, 'cracked', sortByRobber)" class="clickable">Cracked by</th><th onclick="showAnswers(answersCracked, 'cracked', sortByLanguage)" class="clickable">Language</th><th onclick="showAnswers(answersCracked, 'cracked', sortBySize)" class="clickable">Size</th><th onclick="showAnswers(answersCracked, 'cracked', sortByLiveTime)" class="clickable">Cracked after</th><th>Code</th></tr><tr class="empty inactive"><th colspan="5">There are no cracked answers</th></tr><tr class="template"><td><a href="https://codegolf.stackexchange.com/a/{cop_id}">{cop_user}</a></td><td><a href="https://codegolf.stackexchange.com/a/{robber_id}">{robber_user}</a></td><td>{language}</td><td>{size} bytes</td><td>{cracked_after_str}</td><td><code>{code}</code></td></tr></tbody><thead><tr><th colspan="5"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 9 9"><path class="right-arrow" d="M 0 0 L 0 9 L 9 4.5 Z"/><path class="down-arrow" d="M 0 0 L 9 0 L 4.5 9 Z"/></svg> Safe answers</th></tr></thead><tbody id="safe"><tr><th colspan="2" onclick="showAnswers(answersSafe, 'safe', sortByCop)" class="clickable">Posted by</th><th onclick="showAnswers(answersSafe, 'safe', sortByLanguage)" class="clickable">Language</th><th colspan="2" onclick="showAnswers(answersSafe, 'safe', sortBySize)" class="clickable">Size</th><th>Code</th></tr><tr class="empty inactive"><th colspan="5">There are no safe answers</th></tr><tr class="template"><td colspan="2"><a href="https://codegolf.stackexchange.com/a/{cop_id}">{cop_user}</a></td><td>{language}</td><td colspan="2">{size} bytes</td><td><code>{code}</code></td></tr></tbody></table><div id="stats-header"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 9 9"><path class="right-arrow" d="M 0 0 L 0 9 L 9 4.5 Z"/><path class="down-arrow" d="M 0 0 L 9 0 L 4.5 9 Z"/></svg> Statistics</div><div id="stats"><div><canvas id="robber-stats"/></div><div><canvas id="answer-stats"/></div></div><small>Snippet made by <a href="https://codegolf.stackexchange.com/u/55934/" target="_blank">NieDzejkob</a>, licensed as <a href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank">CC 3.0 BY-SA</a>. "Info" icon made by <a href="https://www.flaticon.com/authors/chanut" target="_blank">Chanut</a> from <a href="https://www.flaticon.com/" target="_blank">Flaticon</a>, licensed as <a href="http://creativecommons.org/licenses/by/3.0/" target="_blank">CC 3.0 BY</a>. "Arrow" icons made by <a href="https://codegolf.stackexchange.com/u/12012/" target="_blank">Dennis</a> for <a href="https://tio.run/" target="_blank">Try It Online</a>, licensed as <a href="https://github.com/TryItOnline/tryitonline/blob/master/LICENSE" target="_blank">MIT</a>. Some code shamelessly copy-pasted from <a href="https://stackoverflow.com/a/9609450">this answer</a> on Stack Overflow by <a href="https://stackoverflow.com/u/24950">Robert K</a>, licensed as <a href="https://creativecommons.org/licenses/by-sa/3.0/">CC 3.0 BY-SA</a>. This snippet utilises <a href="http://jquery.com/">jQuery</a> (<a href="https://github.com/jquery/jquery/blob/master/LICENSE.txt">MIT</a>), <a href="http://www.chartjs.org/">chart.js</a> (<a href="https://github.com/chartjs/Chart.js/blob/master/LICENSE.md">MIT</a>) and <a href="https://github.com/chartjs/chartjs-plugin-datalabels/">chartjs-plugin-datalabels</a> (<a href="https://github.com/chartjs/chartjs-plugin-datalabels/blob/master/LICENSE.md">MIT</a>). Color scheme: <a href="http://ethanschoonover.com/solarized">Solarized by Ethan Schoonover</a> (<a href="https://github.com/altercation/solarized/blob/master/LICENSE">MIT</a>).</small>

Formatting

(Feel free to skip this section if you're not planning to participate as a cop)

This is required for new cop answers to make it possible for the snippet above to parse them.

  • New answers should include a header like this:

    # ???, [N] bytes
    

    where [N] is the size of your code in bytes and ??? should appear literally.

  • If the answer is not cracked for 7 days and you want to make your answer safe by revealing the language, simply replace the ??? and add safe to the end, e.g.

    # Ruby, [N] bytes, safe
    

    Feel free to have the language name link to a relevant website like an esolangs page or a GitHub repository. The link will then be displayed in the leaderboard.

  • If another user successfully cracked your submission, please also add the language, along with a notice like

    # Ruby, [N] bytes, [cracked](crack-link) by [user]
    

    where [user] is the name of the user who submitted the first valid crack, and crack-link is a link to the corresponding answer in the Robbers' thread. Please use the short link format you get from the "share" button. Feel free to make the user name a link to their profile page.

    If the language used in the crack is different from the one you intended, your answer is still cracked, and you shall follow this format. However, you can mention in the answer that you intended it to be something else. It's your choice on whether you want to reveal the intended answer, or if you want to let Robbers have more fun.

Good luck Cops!

\$\endgroup\$
14
  • 15
    \$\begingroup\$ How not to compete in this challenge. \$\endgroup\$ Commented Feb 8, 2018 at 17:55
  • 2
    \$\begingroup\$ Note that if you're using a language with an interpreter on TIO, all someone has to do to crack your submission is try every language on TIO. \$\endgroup\$
    – mbomb007
    Commented Feb 8, 2018 at 23:08
  • 2
    \$\begingroup\$ @mbomb007 Take a look at this comment. Aside from requesting that Robbers don't brute-force, there is nothing more that we can do to prevent this behaviour unfortunately. However, I invite anyone to downvote Robbers using scripts to brute-force submissions as it contradicts the spirit of the challenge. \$\endgroup\$ Commented Feb 8, 2018 at 23:16
  • 2
    \$\begingroup\$ @NieDzejkob I'd say that the compiler has to be on Wikipedia/Rosetta Code/Esolangs or be on TIO. \$\endgroup\$ Commented Feb 13, 2018 at 15:45
  • 2
    \$\begingroup\$ @cairdcoinheringaahing Both answers that inspired me to ask that question are a gray area: This Beatnik answer only works in some interpreters, and none of them have their own page. However, a working interpreter is linked on the esolangs page. In the case of this, the language is installed on TIO, but it's not listed on the language list. These answers have already been cracked, but I think that the rules should be modified to be unambigous in the future. \$\endgroup\$
    – Maya
    Commented Feb 13, 2018 at 16:24

211 Answers 211

1 2
3
4 5
8
4
\$\begingroup\$

MATL, 54 bytes, cracked by ovs

False T
For nnz(100) T+1 
'cout <<' T
)o:
bux bux Q
hu

Well, there's an emoji in there... )o:

It's actually the c in 'cout'(code-point 99) that makes the range end at 100, not the number 100 in the code.

Outputs as a list of numbers, separated by spaces.

Explanation

F             % Push False (0)
 a            % any(). Stack: 0
  l           % ones(). Stack: 0, 1
   s          % sum(). Stack: 0, 1
    e         % reshape(). Stack: 0
      T       % Push True (1). Stack: 0, 1
F             % Push False (0). Stack: 0, 1, 0
 o            % parity(). Stack: 0, 1, 0
  r           % Push random number. Stack: 0, 1, 0, 0.4234..
    n         % numel(). Stack: 0, 1, 0, 1
     n        % numel(). Stack: 0, 1, 0, 1
      z       % nnz(). Stack: 0, 1, 0, 1
       (      % Assignment indexing. Stack: 0, 0
        100   % Push 100. Stack: 0, 0, 100
           )  % Reference indexing (nothing there). Stack: 0, 0
             T     % Push True(1). Stack: 0, 0, 1
              +    % Add last two numbers: Stack: 0, 1
               1   % Push 1. Stack: 0, 1, 1
'cout <<'        % Push string, 'cout <<'. Stack: 0, 1, 1, 'cout <<'
          T      % Push True (0). Stack: 0, 1, 1, 'cout <<', 1
)                % Reference indexing using T as index to the string. Stack: 0, 1, 1, 'c'
 o               % Convert to double. Stack: 0, 1, 1, 99
  :              % Range from 1 to 99. Stack: 0, 1, 1, [1, 2, ... 99]
b                % Bubble. Stack: 0, 1, [1 2, ... 99], 1
 ux              % Unique, and delete last element. Stack: [0, 1, [1, 2, ... 99]
    bux          % The same again. Stack: 1, [1, 2, ... 99]
        Q        % Increment. Stack: 1, [2, 3, ... 100]
hu               % Horizontal concatenation and unique. Stack: [1, 2, ... 100]
\$\endgroup\$
4
  • \$\begingroup\$ cracked \$\endgroup\$
    – ovs
    Commented Feb 7, 2018 at 15:04
  • \$\begingroup\$ Yeah, nnz is very revealing. \$\endgroup\$ Commented Feb 7, 2018 at 15:14
  • 1
    \$\begingroup\$ In hindsight, I should maybe have chosen something else than those functions as nnz is a common MATLAB function, and that makes you think of MATL. But nnz(100) is something very different in MATL than in MATLAB. \$\endgroup\$ Commented Feb 7, 2018 at 19:53
  • \$\begingroup\$ Explanation added. :) \$\endgroup\$ Commented Feb 11, 2018 at 20:43
4
\$\begingroup\$

Coconut, 244 bytes, cracked by Dennis

p = print; r = range; one = 1; hundred = 100; i = 'index'  # set up variables 
  
for i in r(one, hundred + one):  # loop over each number in interval [1, 101) ∩ ℤ to print	  	
	if i==hundred:

 	  p(i) 		 
 	else:p(i,end=chr(44)+chr(32))
	

Try it online!

\$\endgroup\$
8
  • \$\begingroup\$ Damn, that's sneaky! +1 \$\endgroup\$ Commented Feb 14, 2018 at 19:51
  • \$\begingroup\$ To save some TIO computing power: Python 2 complains about 'print' (it's a command, not function); Python 3 complains about inconsistent tab/spaces. \$\endgroup\$
    – user202729
    Commented Feb 15, 2018 at 5:03
  • \$\begingroup\$ This is Coconut. \$\endgroup\$
    – Dennis
    Commented Feb 15, 2018 at 14:30
  • \$\begingroup\$ @Dennis ...Wait, it works in Coconut? o0 \$\endgroup\$ Commented Feb 15, 2018 at 14:35
  • 3
    \$\begingroup\$ One cookie, please. \$\endgroup\$
    – Dennis
    Commented Feb 15, 2018 at 15:56
4
\$\begingroup\$

Width, 249 bytes, safe

Oml, my GL :G
      		  MM :Z 
	  	  i'm GR8 ;]
GL mom! 	
	  	  F#$! i'm my RAG3! >:[
 	 	  111'M Gr8! =] 

11/01/18:
  	
w0W i'm IQ=1
 	  	  Ik! ;]
*IQ=100
	 	  tUt!
11/02/18:

  __
 (Gl)
  .
 . 
:W 
		  i Wi11 
                  WOw! 1 RAN and WON

Try it online!

Is this a program, or did I accidentally screenshot my text history?

Output is in the form [1, 2, 3, ... 99, 100]


Width gives you a lot of leeway by:

  • Only executing alphabetic characters
  • Allowing you to choose between sets of characters for each command (for example, command 3 can be any of a b d e g h n o p q u L, though command 9 can only be W)

All the whitespace nonsense, the IQ=100 and the emoticons were red herrings.

The executing code is

OmlmyGLGMMZimGRGLmomFimmyRAGMGrwWimIQIkIQtUtGlWiWiWOwRAN

Which pushes the string print(list(range(1,101))) and evaluates it using the inbuilt Python eval command. BTW, I'm pretty sure the looping mechanism for that language is broken, since it kept hitting a recursion limit when I tried to use it... :(

\$\endgroup\$
1
  • \$\begingroup\$ This is safe; please reveal the language! \$\endgroup\$
    – MD XF
    Commented Feb 19, 2018 at 4:09
4
\$\begingroup\$

VoidLang, 2627 bytes, cracked by moonheart08

"11"!"|"!"111"+!."|"!"1111"++!."|"!"11111"+++!."|"!"111111"++++!."|"!"1111111"+++++!."|"!"11111111"++++++!."|"!"111111111"+++++++!."|"!"91"!."|"!"911"+!."|"!"9111"++!."|"!"91111"+++!."|"!"911111"++++!."|"!"9111111"+++++!."|"!"91111111"++++++!."|"!"911111111"+++++++!."|"!"9111111111"++++++++!."|"!"991"+!."|"!"9911"++!."|"!"99111"+++!."|"!"991111"++++!."|"!"9911111"+++++!."|"!"99111111"++++++!."|"!"991111111"+++++++!."|"!"9911111111"++++++++!."|"!"99111111111"+++++++++!."|"!"9991"++!."|"!"99911"+++!."|"!"999111"++++!."|"!"9991111"+++++!."|"!"99911111"++++++!."|"!"999111111"+++++++!."|"!"9991111111"++++++++!."|"!"99911111111"+++++++++!."|"!"999111111111"++++++++++!."|"!"99991"+++!."|"!"999911"++++!."|"!"9999111"+++++!."|"!"99991111"++++++!."|"!"999911111"+++++++!."|"!"9999111111"++++++++!."|"!"99991111111"+++++++++!."|"!"999911111111"++++++++++!."|"!"9999111111111"+++++++++++!."|"!"999991"++++!."|"!"9999911"+++++!."|"!"99999111"++++++!."|"!"999991111"+++++++!."|"!"9999911111"++++++++!."|"!"99999111111"+++++++++!."|"!"999991111111"++++++++++!."|"!"9999911111111"+++++++++++!."|"!"99999111111111"++++++++++++!."|"!"9999991"+++++!."|"!"99999911"++++++!."|"!"999999111"+++++++!."|"!"9999991111"++++++++!."|"!"99999911111"+++++++++!."|"!"999999111111"++++++++++!."|"!"9999991111111"+++++++++++!."|"!"99999911111111"++++++++++++!."|"!"999999111111111"+++++++++++++!."|"!"99999991"++++++!."|"!"999999911"+++++++!."|"!"9999999111"++++++++!."|"!"99999991111"+++++++++!."|"!"999999911111"++++++++++!."|"!"9999999111111"+++++++++++!."|"!"99999991111111"++++++++++++!."|"!"999999911111111"+++++++++++++!."|"!"9999999111111111"++++++++++++++!."|"!"999999991"+++++++!."|"!"9999999911"++++++++!."|"!"99999999111"+++++++++!."|"!"999999991111"++++++++++!."|"!"9999999911111"+++++++++++!."|"!"99999999111111"++++++++++++!."|"!"999999991111111"+++++++++++++!."|"!"9999999911111111"++++++++++++++!."|"!"99999999111111111"+++++++++++++++!."|"!"9999999991"++++++++!."|"!"99999999911"+++++++++!."|"!"999999999111"++++++++++!."|"!"9999999991111"+++++++++++!."|"!"99999999911111"++++++++++++!."|"!"999999999111111"+++++++++++++!."|"!"9999999991111111"++++++++++++++!."|"!"99999999911111111"+++++++++++++++!."|"!"999999999111111111"++++++++++++++++!."|"!"99999999991"+++++++++!."|"!"999999999911"++++++++++!."|"!"9999999999111"+++++++++++!."|"!"99999999991111"++++++++++++!."|"!"999999999911111"+++++++++++++!."|"!"9999999999111111"++++++++++++++!."|"!"99999999991111111"+++++++++++++++!."|"!"999999999911111111"++++++++++++++++!."|"!"9999999999111111111"+++++++++++++++++!."|"!"999999999991"++++++++++!."|"!"9999999999911"+++++++++++!."|"!

I couldnt resist to use my own toy language.

\$\endgroup\$
8
  • \$\begingroup\$ This was really a pain to copy so I could paste into an interpreter. Pastebin where you can select-all. \$\endgroup\$
    – MD XF
    Commented Feb 13, 2018 at 3:27
  • \$\begingroup\$ @MDXF double clicking it selects the entire text on my computer \$\endgroup\$
    – dylnan
    Commented Feb 13, 2018 at 6:16
  • \$\begingroup\$ What's the output format? \$\endgroup\$ Commented Feb 13, 2018 at 15:56
  • \$\begingroup\$ @totallyhuman the output format is numbers with | as separator \$\endgroup\$
    – iovoid
    Commented Feb 14, 2018 at 2:46
  • \$\begingroup\$ I know what this is, and you know it @iovoid. Cracked when I wake up tommorow \$\endgroup\$ Commented Feb 16, 2018 at 4:08
4
\$\begingroup\$

Underload, 659 bytes, cracked by MD XF

lpvO`.U%C$j<{YNXzbF[=/n'A5 7KYL3$3IZvrP>P%LJ&`fv[5]$3(
){u}Z'K7s{lA8}pNZvmLwE`GevRo?I>H38{q}[d/hJrkcp7F]e7$H[
L(]WCrrWxbb[M][6]m\[DH]j98Ki&H<n=Nn=|{f}UMs-`_5b?-ixC/
5V_M{R}w@+[N2P]eg998dq;[Qq]-od|XoX{P}{N,}#G($)%tdZN*?[
Z];fUK{_H26DY'R|sdQy;%P#g}|X{IQvM}cXDMmvG1O[i-][{s}]3I
L:hw2s ="dY0g/4YS14#>Y.GIs=KMm"H[&]r3[G])VgE(hCLyP8cs[
V]j[W]jg:cvp6X8:lNchdg8;55{o}P]{*Q}qc[y$]sZ?P60EI[_]wt
:6TIyK'XRfR<[>HG]*|Xz]o[z]0A[T]t{"}*}[8#N5wy[{nU}[W]N;
+h?p{nRgy}W{[u]vIJX?{sl,};4>.}Z/Km>1]]:pMp-0<[[,].Q$J`
*&nL0Jg]{/{J),[[{[s]j}]]=f7f B:5k}"B{1A}}{*T}1Tr/cRX w
lBKJ_6UoC^QBC{8}/G'x2&Le3w[u]&T-hpUA2/c.>Zb[N]|pX[8,]X
t2@^.{h}K7lo{<d}xozh>wb?Hello worldHello worldHello wo

This is Underload. The Underload interpreter on TIO ignores invalid commands (anything other than :*()^aS!~), so the program looks like this:

(
)(($)*:S)::*:**:*:*^
I wrote a Python script that generated random ASCII (excluding Underload commands) with matching brackets. I then filled in the result with my Underload program.

\$\endgroup\$
7
  • \$\begingroup\$ Is this Gammaplex? Can't find a working interpreter to test it out \$\endgroup\$
    – MD XF
    Commented Feb 8, 2018 at 4:13
  • \$\begingroup\$ @MDXF I'll just answer your question to save you time: No. \$\endgroup\$ Commented Feb 8, 2018 at 4:49
  • 4
    \$\begingroup\$ Cracked, finally! \$\endgroup\$
    – MD XF
    Commented Feb 13, 2018 at 5:08
  • 2
    \$\begingroup\$ @MDXF nice crack and EsolangingFruit nice obscuring ( I can't spell obfuscation) \$\endgroup\$
    – MickyT
    Commented Feb 13, 2018 at 5:24
  • \$\begingroup\$ The matching brackets/braces/parenthesis gave it away for me. \$\endgroup\$
    – MD XF
    Commented Feb 13, 2018 at 5:52
4
\$\begingroup\$

Labyrinth, 167 bytes, safe

"What is this code?"
{1 in!1to100{_1()+l-
t}100l=:!(l,e,t,h)=
"enl_"; _1=func e,n:
print1 if+e||n||$0+
"\n"-_f1_="";#eval;
;;;};"\-";# Author:
main;# @HermanLauenstein

Unobufscated code

"
{1
 }100 =:!
    _"; _1
     1   +
     _ 1_=
     "\-
       @

The code works by hiding a loop inside the mess of random characters made to look like some sort of programming language.

\$\endgroup\$
4
\$\begingroup\$

mmo (MMIX executable), 92 bytes, safe

Hexdump:

00000000: 9809 0100 9801 0001 584b 4344 e355 0064  ........XKCD.U.d
00000010: 3737 3637 e437 2000 af55 ff0b a255 5537  7767.7 ..U...UU7
00000020: 2755 5501 5555 fffe e055 2000 ad55 ff03  'UU.UU...U ..U..
00000030: 0000 0601 0000 0000 980a 00ff 2000 0000  ............ ...
00000040: 3755 5500 980b 0000 204d 2061 2069 246e  7UU..... M a i$n
00000050: 584b 4344 8100 0000 980c 0004            XKCD........

Hexdump (xxd -p):

9809010098010001584b4344e355006437373637e4372000af55ff0ba255
5537275555015555fffee0552000ad55ff030000060100000000980a00ff
2000000037555500980b0000204d20612069246e584b434481000000980c
0004

Output is bare characters to stdout.

I'm surprised no-one got this. I thought the 0x98 characters appearing at five separate positions, all multiples of four, would give it away quickly.

A tetrabyte-by-tetrabyte explanation (including loader instructions):

98090100 lop_pre 1,0         (preamble, mmo v1, 0 tetras)
98010001 lop_loc 0x00,1      (the next tetra says where to load)
58484344 "XKCD"              (because why not?)
E3550064 SETL  $85, 100      (i = 100)
37373637 NEGUI $55, 54, 55   (data = -1)
E4372000 INCH  $55, 0x2000   (data = [instruction segment start - 1])
AF55FF0B STOUI $85, $255, 11 (store 100 to octabyte after M₈[$255]¹)
A2555537 STBU  $85, $85, $55 (data[i] = i)
27555501 SUBUI $85, $85, 1   (i--)
5555FFFE PBPB  $85, @-16     (jump back two instructions if i > 0)
E0552000 SETH  $85, 2000     ($85 = data+1)
AD55FF03 STOI  $85, $255, 3  (store $85 to M₈[$255]¹)
00000601 TRAP  0, 6, 1       (write first 100 data bytes to stdout²)
00000000 TRAP  0, 0, 0       (halt)
980A00FF lop_post 255        (begin postamble, rG = 255)
20000000
37555500                     ($255 = 0x2000000037555500)
980B0000 lop_stab            (begin symbol table)
204D2061
2069246E
584B4344
81000000                     (val["Main"]="XKCD")
980C0004 lop_end 4           (symtab is 16 bytes long)

Footnotes:
1) Octabyte storage disregards the last three bits of the location to store.
2) Syscall 6 is fwrite, which takes as arguments the Z operand for file descriptor (1 is stdout), M₈[$255] as the buffer pointer, and M₈[$255+8] as the buffer length.

I didn't obfuscate this at all, except by arranging for a lot of repeated bytes (all the Us and 7s); I just wrote a simple algorithm and hand-assembled it.

\$\endgroup\$
4
\$\begingroup\$

Self-modifying Brainfuck, 250 bytes, Cracked by pxeger

5<4# ++++++++v++{++{+<     v:-1  <"d"\"i"
I=((print))#d+"100"ci}$'mai n'  \ " > *>:"d"$-o:1-?v;
n=""#printf  >-}++++=^;-#  >,   :|1h:  ^         -1<
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))
##-[>++<-----]>[->+.<][>^<++++>]1@3 \\iiiiidiisiodso

Try it online!

Explanations

SMBF

The actaul code executed is

<+++++++++++++<-<+>>---++++>-<,+-[>++<-----]>[->+.<][><++++>]

Try it online!

The bit up until the , is a red herring, parts of code for other languages. The , takes input, setting a null byte, and somehow [>++<-----]> results in 100. Then, [->+.<] prints the characters up to that in ascending order.

Python 3

5<4# ++++++++v++{++{+<     v:-1  <"d"\"i"
I=((print))#d+"100"ci}$'mai n'  \ " > *>:"d"$-o:1-?v;
n=""#printf  >-}++++=^;-#  >,   :|1h:  ^         -1<
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))
##-[>++<-----]>[->+.<][>^<++++>]1@3 \\iiiiidiisiodso

Try it online!

The actual code executed is:

5<4
I=((print))
n=""
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))

A lot of this is for polyglotting with Vyxal, which has the same comments so executes the same code.

The i command in Vyxal is indexing, which errors if the first argument isn't a number. We deal with this by aliasing print and putting it in double parentheses, so Vyxal never executes it.

The n="" is so printing it doesn't error.

The (1/2 and 1 or 0) is just a red herring to make you think it's python 2 or something.

So in the end, we're just printing every number between 1 and 100. But it's as numbers, and there's a space before each one.

Vyxal

5<4# ++++++++v++{++{+<     v:-1  <"d"\"i"
I=((print))#d+"100"ci}$'mai n'  \ " > *>:"d"$-o:1-?v;
n=""#printf  >-}++++=^;-#  >,   :|1h:  ^         -1<
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))
##-[>++<-----]>[->+.<][>^<++++>]1@3 \\iiiiidiisiodso

Try it Online!

The executed code is the same as Python's:

5<4
I=((print))
n=""
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))

As stated before, i indexes, and often errors. Sk4 takes care of the i in in. range ends up pushing a 1, so (100) pushes 100 once. : I does nothing, so (n, prints the iteration number of looping over that 100 times, printing 0...99 inclusive.

><>

5<4# ++++++++v++{++{+<     v:-1  <"d"\"i"
I=((print))#d+"100"ci}$'mai n'  \ " > *>:"d"$-o:1-?v;
n=""#printf  >-}++++=^;-#  >,   :|1h:  ^         -1<
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))
##-[>++<-----]>[->+.<][>^<++++>]1@3 \\iiiiidiisiodso

Try it online!

The executed code is:

5<                                   \"i"
                                      *>:"d"$-o:1-?v;
                                    :  ^         -1<
                                    a
                                    \\

The "i" is for Deadfish~. Basically, the bit up until the * on the second line pushes 100 to the stack by multiplying a (10) by itself. The bit after that on lines 2 & 3 is a simple looping counter, outputting each character. But this prints 0x00 to c, not 0x01 to d, so it's completely invalid.

Deadfish~

5<4# ++++++++v++{++{+<     v:-1  <"d"\"i"
I=((print))#d+"100"ci}$'mai n'  \ " > *>:"d"$-o:1-?v;
n=""#printf  >-}++++=^;-#  >,   :|1h:  ^         -1<
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))
##-[>++<-----]>[->+.<][>^<++++>]1@3 \\iiiiidiisiodso

Try it online!

Deadfish~ almost works, but the o and d in the ><> program completely (intentionally) throw it off.

The actual executed code is:

{{di(i)dci}doi}h

The iiiiidiisiodso at the end is a red herring, and isn't even executed.

This almost prints 1 to 100, but doesn't quite work.

Befunge-93 (And several variants)

5<4# ++++++++v++{++{+<     v:-1  <"d"\"i"
I=((print))#d+"100"ci}$'mai n'  \ " > *>:"d"$-o:1-?v;
n=""#printf  >-}++++=^;-#  >,   :|1h:  ^         -1<
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))
##-[>++<-----]>[->+.<][>^<++++>]1@3 \\iiiiidiisiodso

Try it online!

The executed code is:

5<                         v:-1  <"d"\"i"

                           >,   :|

                                 @

We start by pushing 100 on the stack with "d", then decrement and print until it reaches 0, at which point the redirect | sends the IP to the @, which terminates the program. This prints c to 0x00, which is wrong.

\ is a mirror for ><>, but rotates the stack in Befunge-93, which does nothing important.

brainfuck

5<4# ++++++++v++{++{+<     v:-1  <"d"\"i"
I=((print))#d+"100"ci}$'mai n'  \ " > *>:"d"$-o:1-?v;
n=""#printf  >-}++++=^;-#  >,   :|1h:  ^         -1<
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))
##-[>++<-----]>[->+.<][>^<++++>]1@3 \\iiiiidiisiodso

Try it online!

The executed code is the same as SMBF's:

<+++++++++++++<-<+>>---++++>-<,+-[>++<-----]>[->+.<][><++++>]

However, because the tape's full of 0s instead of the program's codepoints, it does the wrong thing and prints 0x00 to 0xff.

Cascade

5<4# ++++++++v++{++{+<     v:-1  <"d"\"i"
I=((print))#d+"100"ci}$'mai n'  \ " > *>:"d"$-o:1-?v;
n=""#printf  >-}++++=^;-#  >,   :|1h:  ^         -1<
for Sk4 in range(100): I(n,Sk4+(1/2 and 1 or 0))
##-[>++<-----]>[->+.<][>^<++++>]1@3 \\iiiiidiisiodso

Try it online!

I'm not sure this counts. I intended to do this with an actual loop, but I couldn't figure out how to make it small enough, so I just went with printing 0x01 to 0x03.

Executed code (Unwrapped):

 @
 <
\ "
 |1
 /2
  3
  "

Red herrings

The (1/2 and 1 or 0) resembles something used to determine Python 2 from Python 3. Of course, this won't work in Python 2, because print is a statement.

The $'mai n' is intended to look like Rail. This doesn't work because of the space, and if it did, it wouldn't do anything.

The printf is just an excuse for an extra i for Deadfish~.

The iiiiidiisiodso was a double red herring, because originally I wanted the actual lang to be Deadfish~. But I decided that was too obvious. I later added the brainfuck as a red herring, then realised it almost worked in SMBF, and tweaked it a little

The [>^<++++>] is just a mess to fill space, but looks like it could do something in some bizzare BF-derivative.

The area with all the +-{}= near the first 100 was meant to resemble my new language Tarfish, which I thought people might think I'd use.

This took several hours to make, and I'm proud of it.

\$\endgroup\$
3
  • 8
    \$\begingroup\$ @wasif One, it's not Befunge-93 - the letters need to be ascending, and there needs to be a d and no 0x00. Two, please don't bruteforce, it's against the spirit of the challenge, and Dennis has specifically asked not to do it. \$\endgroup\$
    – emanresu A
    Commented Sep 5, 2021 at 19:54
  • \$\begingroup\$ Cracked! \$\endgroup\$
    – pxeger
    Commented Sep 8, 2021 at 8:44
  • \$\begingroup\$ EOF is SMBF is -1 (actually 255), though +-[>++<-----] then results in 102, not 100 \$\endgroup\$
    – Jo King
    Commented Sep 8, 2021 at 9:02
3
\$\begingroup\$

Labyrinth, 17 bytes, cracked by totallyhuman

[##!]
[\X_]
@-99@

Try it online!

Output is decimal and linefeed-separated.

Explanation

[] and letters aren't commands in Labyrinth, so they act as walls and they might as well be spaces:

 ##!
 \ _
@-99@

The final @ is also a red herring, because the control flow never gets there. The main program is just the following loop:

#    Push the current stack depth. This is i-1 (where i is the number printed in the
     current iteration).
#    Push the current stack depth. This is i.
!    Print i as a decimal integer.
_99  Push 99.
-    Subtract it from i-1. This gives 0 iff we want to terminate the program. In that
     case the IP moves to the @, otherwise it continues the loop.
\    Print a linefeed.

@ terminates the program.

\$\endgroup\$
3
  • \$\begingroup\$ Cracked. \$\endgroup\$ Commented Feb 6, 2018 at 23:44
  • \$\begingroup\$ @totallyhuman and now with an explanation of the code, please. ;) (I'll edit the post tomorrow when I'm at a PC again.) \$\endgroup\$ Commented Feb 6, 2018 at 23:57
  • \$\begingroup\$ Hah, no. I tried three of your languages before I got to this one. Remarkably like Retina (I assume that's what you were going for) though. Maybe I'll go through Labyrinth's docs though. :P \$\endgroup\$ Commented Feb 7, 2018 at 0:00
3
\$\begingroup\$

Prelude, 41 bytes, cracked by Conor O'Brien

for{# [1+1];
64+(1-v(1-)++);
100^x; rev!}

Try it online!

Output as code points.

\$\endgroup\$
1
3
\$\begingroup\$

Element, 15 bytes, cracked by RIyeh

1 100'[2:`1+a`]

Not too hard.

\$\endgroup\$
5
  • \$\begingroup\$ Was this meant to work in Surface? If so, it counts up forever. \$\endgroup\$
    – MD XF
    Commented Feb 7, 2018 at 0:32
  • \$\begingroup\$ @MDXF Nope. 15char \$\endgroup\$ Commented Feb 7, 2018 at 0:33
  • 1
    \$\begingroup\$ Cracked by Rlyeh \$\endgroup\$
    – Maya
    Commented Feb 7, 2018 at 13:53
  • \$\begingroup\$ Oh hey, it's my language! Also, here's the same thing in only 12 bytes: d,'[1+2:`a`] \$\endgroup\$
    – PhiNotPi
    Commented Feb 11, 2018 at 3:47
  • \$\begingroup\$ @PhiNotPi oh nice. I'd never used Element, and I just read the dovs. It looks really cool. \$\endgroup\$ Commented Feb 11, 2018 at 16:10
3
\$\begingroup\$

MY, 4 bytes, cracked by ErikTheOutgolfer

⌶tIv

This is in the Dyalog APL classic codepage, if that's acceptable. APL snippet that can be used as a code page.

Note, the code uses the byte values of characters in its source, not the APL characters.

Output format: Array of integers

Here's the hex if you need it:

0a24 4926
\$\endgroup\$
6
  • 2
    \$\begingroup\$ You changed the codepage to mislead us >_> \$\endgroup\$ Commented Feb 7, 2018 at 10:40
  • \$\begingroup\$ I did, because if I had it in the original codepage, it'd be too easy \$\endgroup\$
    – Adalynn
    Commented Feb 7, 2018 at 11:51
  • \$\begingroup\$ So is really 0x0a, a newline? \$\endgroup\$
    – MD XF
    Commented Feb 8, 2018 at 4:10
  • \$\begingroup\$ Yes, that is really 0x0a. \$\endgroup\$
    – Adalynn
    Commented Feb 8, 2018 at 14:15
  • \$\begingroup\$ Gotcha. I have to swear it wouldn't have been easy if the language's encoding was used instead of Dyalog's. \$\endgroup\$ Commented Feb 8, 2018 at 15:52
3
\$\begingroup\$

Attache, 58 bytes, cracked by Dom Hastings

??MultivariateHypergeometricDistribution
Map[Print,1..100]

Try it online!

Verbose languages are pretty cool :>

Fortunately, Attache is pretty short

Prints newline-separated list of numbers.

\$\endgroup\$
1
3
\$\begingroup\$

Brain-Flak (Brainhack), 445 bytes, cracked by Christopher

#begin(
 #import(Integer)
 #import(String)
 #import(STDOUT)
 #define(Name:Main)(In:None)(Out:String,Int)(Mixed:TRUE)(Flags:None)(Requires:"String.format")(Coding:"UTF-8"))
 #begin Main(
  Integer.ranges.from$100.forEach{STDOUT.write(String.format{$0 }.with*$0=Self)(dropWhere{!$0}[ignoreIf:(0)])}
  Except{OutOfBounds}
 )
STDOUT.stream.read.forEach{with*$0=Self(Integer.ranges.from$100.filter(by:{1...101~=$0})[ignoreIf:(0)])}(if!Error){exit$0;}

Output is a space-separated list of integers in decimal.

\$\endgroup\$
2
  • \$\begingroup\$ Hehe i think i know \$\endgroup\$
    – user63187
    Commented Feb 9, 2018 at 18:08
  • \$\begingroup\$ Cracked (first one I have done!) \$\endgroup\$
    – user63187
    Commented Feb 9, 2018 at 18:10
3
\$\begingroup\$

1+, 35 bytes, cracked by Rlyeh

11+""*""*"+""+++1\1<#":1+^"/^"\^<#:

Outputs numbers separated by newlines. This one is probably going to be easy, but I had some fun with it nonetheless.

Explanation time!
11+""*""*"+""+++                 [construct 100] [stack: 2 100]
1\1<                   [push a 1 and create a 0] [stack: 100 1 0]
#   [loop start, 0 required for first iteration] [stack: 100 x]
":                         [duplicate and print]
1+                                   [increment]
^"/^"\^ [duplicate both the counter and the 100] [stack: 100 x 100 x]
<                             [compare x to 100] [stack: 100 x (0 or 1)]
#    [jump back to first label if counter < 100]
:                      [print 100 one last time]

The basic idea for this program was to use a counter starting at 1 which would be printed, incremented and then compared to 100, using 1+'s only built-in comparison operator <, sending program flow either to the first or second #.

In the posted version, the 100 is constructed once (1+, as the name may suggest, only has the constant 1, any other value must be created somehow), then stored below the counter on the stack for the duration of the printing process.
I later (after posting) realized that this was unnecessary, because doing so requires a long sequence of operations; I managed to get it down to 27 bytes by reconstructing the 100 every time (and using a shorter path for constructing it):

111+1<#":1+"11+"1++"+"*^<#:
\$\endgroup\$
4
  • 1
    \$\begingroup\$ Is the language 1+? \$\endgroup\$
    – Rlyeh
    Commented Feb 9, 2018 at 13:38
  • \$\begingroup\$ @Rlyeh Yes, it was. \$\endgroup\$
    – ivzem
    Commented Feb 9, 2018 at 15:09
  • \$\begingroup\$ It looked like it but I wasn't sure, couldn't find an online interpreter and ended up installing the wrong python. \$\endgroup\$
    – Rlyeh
    Commented Feb 9, 2018 at 15:32
  • \$\begingroup\$ Cracked \$\endgroup\$
    – Rlyeh
    Commented Feb 9, 2018 at 15:42
3
\$\begingroup\$

Lily, 27 bytes, cracked by Cowabunghole

for i in 1...100:{print(i)}

Seems simple, but I feel like this is fairly (maybe) obscure. Prove me wrong!

\$\endgroup\$
1
3
\$\begingroup\$

Implicit, 212 bytes, cracked by Dennis

int f(int x_1)
{
    int i, foóßar = 1;
    int *arr = 0x23d3f44e >> 0xa;

    for (i = ']'; 100 % foóßar++, *(arr+i/1234) += ']'; 0-101)
        putchar(&arr[i]);

    return -8;
}

int main(void)
{
    f(42);
}

Obviously this is not C, it's my language. Stripping no-ops gives us this:

intf(intx_1)inti,foóßar=;int*arr=x23d3f44e>>xa;for(i=']';%foóßar++,*(arr+i/1234)+=']';-101)putchar(&

The & ends the program.

All alphabetical characters push their codepage value to the stack. Let's replace every run of alphabetical characters we don't care about with Z.

Z(Z_1)Z,ZóßZ=;Z*Z=Z23Z3Z44Z>>Z;Z(Z=']';%ZóßZ++,*(Z+Z/1234)+=']';-101)Z(&

( starts a loop and ) ends it. The loop continues while the top of stack is nonzero. Pushing an ASCII character and then performing _1 always sets the top of stack to zero, so we can completely ignore the first loop.

Pushng Z and then dividing by 1234 also always results in zero, so we can ignore the inner loop (and all the code inside it) too.

The last loop is only an open-loop and immediately exits, so we can kill that too. Our code thus becomes:

Z,ZóßZ=;Z*Z=Z23Z3Z44Z>>Z;Z(=']';%ZóßZ++,*+=']';-101)Z&

; means 'pop'. If we take out any code that pushes to the stack and then is immediately popped, the code becomes:

Z,óßZ*Z=Z23Z3Z44Z>>Z(=']%ZóßZ++,*+=']-101)Z&
  • The first comma swaps the top two stack values, but there's only one, so we can remove it.
  • The Z23Z3Z44Z>>Z just pushes a ton of Zs to the stack, which are never used, so we might as well just be pushing Z.
  • Most of the mathematical operations are never used, so let's replace those with Z too.
  • ' (read string) is useless because we never provide any input.

Our code golfs down to:

ZóßZ(Z]%ZóßZ]-101)&

Okay, so now we reveal what's really going on.

  • ó is equivalent to ].[ (pull register to stack, increment, push to register).
  • ß is equivalent to @10 (print ASCII 0x10).

Since we pull the register every time we actually care to interact with memory, we can completely ignore everything non-register-related that interacts with the stack when the register isn't the top of stack:

óß(]%óß]-101)&

So, the program increments the register, prints a space, opens a loop, pulls the register, prints it, prints a space, pulls the register, subtracts 101, and loops while register - 101 is nonzero. Then it exits.

:)


Side note: The shortest Implicit program to perform this task would be (;.%ß<100ö.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ Cracked. \$\endgroup\$
    – Dennis
    Commented Feb 9, 2018 at 5:18
3
\$\begingroup\$

Wise, 41 bytes, cracked by Potato44

   ~-<<:>>-~
||<<<:<:>:>>>||
   |[: ?-~]|

Outputs as decimal numbers.

Wise has only bitwise operators. The executing code is:

~-<<:<<<:<||[:?-~]|

and everything else is decoration or countering the decoration.

~-<<:<<<:<|| Creates the number 100 
[            While the number is not 0
 :?          Dupe and push the copy to the bottom of the stack
 -~          Decrement the number
]|           End the loop and pop the extra 0 by OR'ing it with the 1
             And output implicitly
\$\endgroup\$
2
  • 2
    \$\begingroup\$ Cracked. I suddenly realized your answer is Wise when I thought one of the other answers might have been Wise. \$\endgroup\$
    – Potato44
    Commented Feb 9, 2018 at 15:41
  • 4
    \$\begingroup\$ You might say your answer has been wisecracked....... I'll see myself out. \$\endgroup\$ Commented Feb 9, 2018 at 21:44
3
\$\begingroup\$

O, 9 bytes, cracked by PhiNotPi

Shouldn't be difficult, not trying to obscure it, so it may work in other than the intended language

['d#,;r]o

Output:

[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]
\$\endgroup\$
1
  • \$\begingroup\$ Cracked. \$\endgroup\$
    – PhiNotPi
    Commented Feb 11, 2018 at 3:55
3
\$\begingroup\$

QuakeC, 144 bytes, cracked by totallyhuman

$flags as spam
void(string s)dprint=#25;string(float f)ftos=#26;void()main={local float j;j=1;while(j<101){dprint(ftos(j));dprint(" ");j=j+1;}};

Outputs decimal numbers, separated by spaces.


As an aside, in QuakeC, built-ins are assigned numerical IDs which you can then forward declare as proper functions in order to use them. #25 and #26 are the IDs used for dprint and ftos in actual Quake, but some less-compliant (but significantly easier to use than booting up a real Quake server) VMs have different IDs.

The $flags as spam is a no-op: $ is deliberately ignored by Quake C compilers, since it's used for pragmas by the modelgen tool.

\$\endgroup\$
2
  • \$\begingroup\$ This is QuakeC. \$\endgroup\$ Commented Feb 11, 2018 at 23:12
  • 1
    \$\begingroup\$ @totallyhuman Correct. \$\endgroup\$ Commented Feb 11, 2018 at 23:14
3
\$\begingroup\$

Eitherfuck, 35 bytes, cracked by Ryleh

#+,<<+-----<-----0+++++[+++++<][+<]

This is definitely Brainfuck. Try it online!

\$\endgroup\$
3
  • \$\begingroup\$ It looks like Eitherfuck \$\endgroup\$
    – Rlyeh
    Commented Feb 11, 2018 at 16:41
  • \$\begingroup\$ @Rlyeh Link to crack? \$\endgroup\$
    – MD XF
    Commented Feb 11, 2018 at 18:46
  • \$\begingroup\$ Cracked \$\endgroup\$
    – Rlyeh
    Commented Feb 12, 2018 at 4:37
3
\$\begingroup\$

23.dezsy, 35 bytes, cracked by totallyhuman

22,1,16,10,10,-1,1,10,2,12,27,0,211

Outputs one number per line.

\$\endgroup\$
4
  • \$\begingroup\$ Prints 01234567891011121314151617181920210012345678910111213141501234567890123456789 in CJam, hope that isn't what you were going for... Edit, does the same thing in Convex. \$\endgroup\$
    – MD XF
    Commented Feb 11, 2018 at 2:58
  • \$\begingroup\$ @MDXF No, it's not CJam or Convex. \$\endgroup\$
    – jimmy23013
    Commented Feb 11, 2018 at 3:22
  • \$\begingroup\$ This is 23. \$\endgroup\$ Commented Feb 11, 2018 at 23:49
  • 1
    \$\begingroup\$ @totallyhuman Correct. I thought this is one of the most obscure languages that is eligible and has been used on PPCG. \$\endgroup\$
    – jimmy23013
    Commented Feb 12, 2018 at 5:01
3
\$\begingroup\$

MiLambda, 52 bytes, cracked by @ErikTheOutgolfer

v
E
Ξ
ς
v<
E`A:*[>+.<]
υ^
ε
Ξ
ς
v<
Δ
Θ
>σλ

The output format is raw characters.

This is MiLambda, a 2D language where most of the commands are Greek letters. I tried to make the program look non-2D by putting each command on a separate line and deflecting the IP down at the beginning of the program. The loops don't necessarily look like loops (since υ isn't exactly an obvious conditional direction change); this could have been better hidden if I had been able to get vertical conditional directionals to work. To obfuscate it a bit, I just put A:*[>+.<] on one of the lines (A:* looks like something from a stack-based language to compute 100, and [>+.<] looks like a character counting loop in some BF derivative).

\$\endgroup\$
3
  • \$\begingroup\$ cracked \$\endgroup\$ Commented Feb 7, 2018 at 12:49
  • \$\begingroup\$ Removing the language name from the title messes up the leaderboard snippet \$\endgroup\$
    – Jo King
    Commented Feb 13, 2018 at 7:48
  • \$\begingroup\$ @JoKing Realized that just after changing all of my answers over :( \$\endgroup\$ Commented Feb 13, 2018 at 7:50
3
\$\begingroup\$

><>, 82 bytes, cracked by Jo King

def i = 1 ** (1+0): {if i == 99, $g = ?#: {$d or $n} i -> 98 + 0.0: put i++: loop}

Prints numbers in decimal, separated by carriage returns, including a leading one.

This lasted a long time considering that ><> is my main language to golf in… Ignoring the extra stuff pushed to the stack and the meaningless shuffling, this is how it works:

def i = 1 ** (1+0)   Push 1 (rather circuitously)
:                    Duplicate
{if i == 99, $g      Push 1,0 and get the char at
                        that position (it's "e"=101)
= ?#                 If the thing on the stack equals
                        101, crash the program
: {$d or $n          Print CR then the number
} i -                Increment (by subtracting -1)
> 98 + 0.            Push 17,0 then jump back to that
                        position (the first ":").
0: put i++: loop}    And the fish never reaches here!

\$\endgroup\$
1
  • 1
    \$\begingroup\$ This is ><> \$\endgroup\$
    – Jo King
    Commented Feb 14, 2018 at 6:44
3
\$\begingroup\$

Java (OpenJDK 8), 166 bytes, cracked by Jo King

/*‮*/ inter\u0066ace S‭{/*//Hello World!‮*/static void main(/**/String[]a‮){for(char b‮=0;b‮++
<10/*‮*/*10;)System\u002e/*‭*/out/*‮*/.print(b‮);}}

‮!ti tnaw uoy erehw ti gnitteg no kcul dooG
‮.TUODTS ot 46x0 ot 10x0 morf sedoc iicsa eht stuptuo tI
‮... sseug ot ysae ytterp eb dluohs sihT

\$\endgroup\$
2
  • 5
    \$\begingroup\$ hex dump please? I can't even select the code, and when I try to navigate ‮);}} with the arrow keys, it gets stuck in an infinite loop :( \$\endgroup\$
    – Jo King
    Commented Feb 12, 2018 at 7:50
  • \$\begingroup\$ This is Java \$\endgroup\$
    – Jo King
    Commented Feb 12, 2018 at 8:00
3
\$\begingroup\$

BitCycle, 140 bytes, safe

exec("""
0v&~2*50
0v~^1|+x
00~110=m
0v~^e:'d
+:(~100)
v[~^aCC]
0}~1{Xv#
v&~^|25~
(v4*25+)
+H-x-_+_
e^2,|b@5
1mXv,100
Y^_~+,h.
n!`"<"`~
""" )

Outputs in unary, with 1 for the numbers and 0 for the separator.

Or, you can add the -u flag to get output in decimal, separated by commas.


Here's the code I started with pre-obfuscation:

     v ~
     v~^
00000 ~
     v~^

    +  ~
    v ~^
00000>~
v   < ~^

    >  v
 v    <
>A\C\ ^
 ^  / @
1BCv
 ^ ~+
 !  <  <

This element:

 v ~
 v~^
> ~
 v~^

is one of the best ways I've found to generate large numbers. It takes one or more zero bits in at the > and sends four times as many zero bits out the bottom v. Here, to get 100 zero bits, I fed five of them into this "quadruplicator," and then fed the output plus five more into a second quadruplicator.

Then the bottom part counts up from 1 to whatever number of zero bits it gets in the A collector. (Detailed explanation available on request.) Once A is empty, a bit hits the @, which halts the program.

For the obfuscated version, I packed everything in a little tighter, replaced the spaces with various no-ops, changed some of > < to } { or + or ~ and \ / to - | (equivalent under certain circumstances) to look less like a 2D language, and finally threw in the exec for good measure.

\$\endgroup\$
3
\$\begingroup\$

MashedPotatoes, 641 bytes, safe

synchronized(std::ignore){std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;std::cout<<"Hello,world!"<<std::endl;goto nullptr;WHILE 0.0f>`uniq-c`
s/++i//g
WEND goto __dict__;(format t"goto void(0);WHILE <> <(int)std::ignore
use strict qw/Object/;
WEND goto nullptr;goto __dict__;proc $ARGV{STDERR} {OUTPUT=*read-eval*}")}

Prints 1 to 100 as numbers, separated by newlines. Probably not too difficult but whatever.

I was worried it would be too easy since I used a language of my own design, but I couldn't resist the opportunity to actually use this language for one of the few things it can actually do without being too awful.

\$\endgroup\$
2
  • 2
    \$\begingroup\$ This is the safe answer that uses the most bytes. That makes me the winner, right? \$\endgroup\$ Commented Feb 19, 2018 at 5:28
  • \$\begingroup\$ Haha, this language is awesome. Perfect for obfuscation challenges (too bad it's kind of a one time thing). \$\endgroup\$ Commented Feb 21, 2018 at 17:06
3
\$\begingroup\$

Glypho (shorthand), 39 bytes, safe

11+dd*1+*d*d1-+[d1-+>-+o11+dd*1+*d*1+>]

Try it online!

I like using languages that are in plain sight but somehow manage to evade what people think of. That's why every cop of mine is on TIO.

\$\endgroup\$
2
  • \$\begingroup\$ This is safe; please reveal the language! \$\endgroup\$
    – MD XF
    Commented Feb 23, 2018 at 1:00
  • \$\begingroup\$ Aw dangit, I could have easily identified this but I didn't see it in time. \$\endgroup\$
    – lynn
    Commented Feb 23, 2018 at 19:28
3
\$\begingroup\$

ELF (x86/x64, Linux), 383 bytes, safe

0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000  .ELF............
0000010: 0200 0300 0100 0000 b080 0408 2c00 0000  ............,...
0000020: 0000 0000 0000 0000 3400 2000 0100 0000  ........4. .....
0000030: 0000 0000 0080 0408 0080 0408 7f01 0000  ................
0000040: 7f01 0000 0500 0000 0010 0000 31c0 5068  ............1.Ph
0000050: 2a01 0000 b0a2 89e3 89e1 cd80 4074 f583  *...........@t..
0000060: c408 b964 0000 0051 9185 c07d 1450 6a2d  ...d...Q...}.Pj-
0000070: 31db 4389 da89 d8b0 0489 e1cd 8059 58f7  1.C..........YX.
0000080: d831 dbb3 0a53 31d2 f7f3 83c2 3052 09c0  .1...S1.....0R..
0000090: 75f4 89e1 31db 4389 da89 d8b0 04cd 8058  u...1.C........X
00000a0: 3c0a 75ee 5949 83f9 9b75 bce9 ca00 0000  <.u.YI...u......
00000b0: 31c0 b002 cd80 09c0 7592 5958 09c0 75fb  1.......u.YX..u.
00000c0: 31db 31c0 b02d cd80 89c5 ba5f b8f6 ea81  1.1..-....._....
00000d0: f20f f9a2 a231 c949 418b 048c 09c0 0f84  .....1.IA.......
00000e0: 9600 0000 3910 75f0 8078 043d 75ea 8d70  ....9.u..x.=u..p
00000f0: 0556 31db 31c9 ac3c 3a74 0708 c074 0341  .V1.1..<:t...t.A
0000100: ebf4 39d9 0f47 d908 c075 e98d 5c1d 0c31  ..9..G...u..\..1
0000110: c0b0 2dcd 805e 89ef ac3c 3a74 0708 c074  ..-..^...<:t...t
0000120: 03aa ebf4 b874 6447 df35 5b1c 23b8 ab35  .....tdG.5[.#..5
0000130: 0217 1402 ab35 436f 41f3 ab89 e2b8 7a00  .....5CoA.....z.
0000140: 8728 5035 1e38 c15d 5035 0354 6914 5035  .(P5.8.]P5.Ti.P5
0000150: 0003 404f 5035 1455 4001 5035 1b4e 5b5f  [email protected]@.P5.N[_
0000160: 5089 e331 c050 5355 89e1 89eb b00b cd80  P..1.PSU........
0000170: 89d4 8a46 ff08 c056 759b 31c0 40cd 80    ...F...Vu.1.@..

I think you can see that I like hiding my programs in binary files. Output format: decimal numbers. Oh, and to save CPU time on TIO: the obvious "language" timeouts.


... since this was explicitly designed so that it does not work on TIO - the numbers are printed after waiting 4 minutes and 58 seconds, as per

The program must terminate within 5 minutes on a typical desktop PC.

The separator used is 0A 2D, or


-

If using integers, you should output with a constant non-digit delimiter between each number.

Outputs 295 leading bytes, and a single trailing one. Much less than a thousand (evil laugh).

You may also output with leading and trailing characters [...] but please be sensible (don't output a thousand bytes of rubbish either side of the count for instance).

Also, try running it on a desktop computer. You won't regret. I promise.

\$\endgroup\$
2
  • 2
    \$\begingroup\$ The funny part is that I ran this, but discarded the solution because of the garbage output. \$\endgroup\$
    – Dennis
    Commented Feb 24, 2018 at 20:54
  • \$\begingroup\$ @Future readers: 2a01 at offset 0x50 is the timeout, change it to 0100 if you want it to run in TIO. (Setting it to zero removes the easter egg.); Pedantic edit, it's probably 2a010000 little-endian but whatever \$\endgroup\$
    – Oskar Skog
    Commented Jun 11, 2021 at 20:27
3
\$\begingroup\$

CPL, 80 bytes, safe

N(s)=value of§if(s=100)then Join(100,NIL)result is Join(s, N(s+1))§Main()=N(1)

One caveat: The only interpreter for this language I could find has an issue: it only allows programs to be used as libraries providing a set of functions, not as a full program. To make a full program that gives output possible, once you've transpiled this to a Python program, add print(Main()) to the end of the intermediate Python program before running it.

If this makes this answer ineligible, that's fine, I'll mark it as non-competing, but I think it's a fun challenge nonetheless.


The wikipedia page links to this translator into Python: http://norvig.com/sciam/cpl.g

If you dig around on Peter Norvig's site, you can find his full description of the language: http://norvig.com/sciam/sciam.html

\$\endgroup\$
1
  • \$\begingroup\$ This post is safe now. \$\endgroup\$
    – user202729
    Commented Mar 1, 2018 at 4:15
1 2
3
4 5
8

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.