61
\$\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\$
  • 7
    \$\begingroup\$ How not to compete in this challenge. \$\endgroup\$ – Magic Octopus Urn Feb 8 '18 at 17:55
  • 1
    \$\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 Feb 8 '18 at 23:08
  • \$\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\$ – caird coinheringaahing Feb 8 '18 at 23:16
  • \$\begingroup\$ If a submission is written in a language (say C), but it only works in a specific compiler (say ELVM 8cc), does the compiler have to have a wikipedia/rosettacode/esolangs page, or is it only required for the language itself? \$\endgroup\$ – NieDzejkob Feb 13 '18 at 13:49
  • \$\begingroup\$ @NieDzejkob I'd say that the compiler has to be on Wikipedia/Rosetta Code/Esolangs or be on TIO. \$\endgroup\$ – caird coinheringaahing Feb 13 '18 at 15:45

161 Answers 161

2
\$\begingroup\$

Cardinal, 47 bytes, cracked by MD XF

{%c++}=t=+~\%c<100;
ADD.+L0|~tt\
\OR;MULTIPLY c

Outputs as decimal numbers separated by newlines, with 2 trailing newlines.


Cardinal spawns pointers in every direction for each %. The main one here is the one going right from the first %c, which sets the inactive value to 100 active value to 0. After that it enters a loop, where it increments, prints the number and a newline, until the number modulo 100 is 0, where it exits. The executing code is:

%c++ =t=+~\
 D.+L0|~tt/
 R;MU

Note that the second %c is necessary, as it is used to flip the \s into the right position.

\$\endgroup\$
  • \$\begingroup\$ Cracked. \$\endgroup\$ – MD XF Feb 11 '18 at 2:46
2
\$\begingroup\$

Piet, 242 bytes, cracked by Erik the Outgolfer

The code contains a... few unprintable characters, so here's the reversible xxd:

00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR
00000010: 0000 000a 0000 000a 0803 0000 01cd eb0f  ................
00000020: 1900 0000 5450 4c54 451e 010e 02cd 0500  ....TPLTE.......
00000030: 212a 0134 3e65 be20 f0c7 0000 0000 0000  !*.4>e. ........
00000040: c080 0000 c000 00ff 0000 c000 c0ff 00ff  ................
00000050: 0080 0000 8080 8080 0000 c000 00c0 c0c0  ................
00000060: c000 00ff 00c0 c0ff 00ff ffff c0c0 ffff  ................
00000070: 00c0 ffc0 c0ff ffff ffff 0000 ffc0 8cf4  ................
00000080: 0b00 0000 5949 4441 5408 d735 ca41 12c2  ....YIDAT..5.A..
00000090: 300c 04c1 3d4d 1283 1209 61e4 90ff ff13  0...=M....a.....
000000a0: 4315 7be8 dac3 a877 9969 5329 63d5 ddd5  C.{....w.iS)c...
000000b0: 5eaa 4535 c22f adc9 30c5 6da1 8bb9 e327  ^.E5./..0.m....'
000000c0: 7fcb a7c6 1bdc 69a6 469c c120 51d2 67f2  ......i.F.. Q.g.
000000d0: a4be c163 de13 43bb 991d 49db f900 2114  ...c..C...I...!.
000000e0: 04cf a503 d231 0000 0000 4945 4e44 ae42  .....1....IEND.B
000000f0: 6082                                     `.

Output format: decimal numbers separated by spaces.

The Piet program was supposed to be a trap, but I forgot to specify the output format. Oh, well...

\$\endgroup\$
  • \$\begingroup\$ cracked \$\endgroup\$ – Erik the Outgolfer Feb 11 '18 at 15:09
  • \$\begingroup\$ @Erik Uh, I forgot to specify the output format. Reposted. \$\endgroup\$ – NieDzejkob Feb 11 '18 at 15:14
  • \$\begingroup\$ Oh so you failed to mislead us that way >_>_<_< \$\endgroup\$ – Erik the Outgolfer Feb 11 '18 at 15:17
  • \$\begingroup\$ @Erik Yes, well said \$\endgroup\$ – NieDzejkob Feb 11 '18 at 15:21
2
\$\begingroup\$

I, 5 bytes, cracked by H.PWiz

1i101

Returns (the only output-form this language supports) a list.

Try it online!

\$\endgroup\$
  • \$\begingroup\$ Cracked this is I \$\endgroup\$ – H.PWiz Feb 12 '18 at 2:44
2
\$\begingroup\$

Golunar, 30 bytes, cracked by Jo King

814918243305927192311963944207

This is Golunar. The program is a decimal representation of the number of zeroes in the corresponding Unary program. This translates to the Unary program with 814,918,243,305,927,192,311,963,944,207 zeroes, or to the brainfuck program
++++++++++[->++++++++++<]>[->+.<].

\$\endgroup\$
  • \$\begingroup\$ Cracked (I knew someone was going to post a Golunar program) \$\endgroup\$ – Jo King Feb 7 '18 at 6:02
2
\$\begingroup\$

Proton 1, 79 bytes, cracked by MD XF

class M{fun main{args:Array<String>}{for(i=0;i<100;){if(i or i==0)print(++i)}}}

Try it Online!

hehe this abuses Proton 1's lenience to undefined variables and placing expressions right next to each other so much. class, M, fun, main, and args are all just seen as (undefined) variables. The {} are all just code-blocks except for {args:Array<String>}, which I think is a dict from None to Array<String>, though I'm not even sure how that doesn't error.

Credit goes to @totallyhuman who also guessed the language; however, because my initial program printed 0..99 instead of 1..100, and both totallyhuman (chat) and MD XF (comment) asked me about that, and I saw the later message first in my inbox, MD XF got it first. Good job to both of them though!

\$\endgroup\$
  • \$\begingroup\$ If this is supposed to work in Proton, it doesn't print 100. Red herring or bug? \$\endgroup\$ – MD XF Feb 13 '18 at 3:22
  • \$\begingroup\$ Cracked. \$\endgroup\$ – MD XF Feb 13 '18 at 3:36
  • \$\begingroup\$ I took totallyhuman's suggestion and I always try user-created languages. You made Proton so I figured I should try it out. \$\endgroup\$ – MD XF Feb 13 '18 at 3:36
  • \$\begingroup\$ For fairness' sake: chat.stackexchange.com/transcript/240?m=42825026#42825026 \$\endgroup\$ – H.PWiz Feb 13 '18 at 3:36
  • \$\begingroup\$ @MDXF Hm ok good idea :P \$\endgroup\$ – HyperNeutrino Feb 13 '18 at 3:37
2
\$\begingroup\$

Felix, 33 bytes, cracked by Esolanging Fruit

for i in 1..100 do println$i;done
\$\endgroup\$
  • \$\begingroup\$ This prints 1 to 100 not 0 to 99, right? \$\endgroup\$ – Robert Fraser Feb 13 '18 at 19:02
  • \$\begingroup\$ @RobertFraser it printed 0 to 100 before, now it's correct, my bad. \$\endgroup\$ – Magic Octopus Urn Feb 13 '18 at 19:22
  • \$\begingroup\$ Cracked. \$\endgroup\$ – Esolanging Fruit Feb 14 '18 at 3:18
2
\$\begingroup\$

Groovy, 22 bytes, cracked by Emigna

{(1..'d')*.toString()}

The crack: Try it online!


After lengthy discussion, this would not work as a program, a valid submission would have been:

print (1..'d')*.toString()

Putting this in it's own file, passing it to the groovy interpreter and allowing it to execute will print the numbers 1 to 100 to the user.

\$\endgroup\$
  • \$\begingroup\$ Hint: this time it's not 05AB1E... or isssss it? \$\endgroup\$ – Magic Octopus Urn Feb 14 '18 at 18:45
  • \$\begingroup\$ This is Groovy. \$\endgroup\$ – Emigna Feb 15 '18 at 12:28
  • \$\begingroup\$ @Emigna bahhh... I thought adding the wrapper would stop most people from bruting it. Didn't expect people to just, y'know, know it :P. \$\endgroup\$ – Magic Octopus Urn Feb 15 '18 at 13:47
  • \$\begingroup\$ @Dennis so putting it into a file called a.groovy, without the braces, and calling it from CMD groovy a.groovy is fine, and I can knock off 2 bytes? \$\endgroup\$ – Magic Octopus Urn Feb 15 '18 at 14:21
  • \$\begingroup\$ @Dennis I guess I need to add a print statement too by that logic? Also I'm deleting above comments after the edit I made, good catch though Dennis. Also, neat trick with the Batch TIO. \$\endgroup\$ – Magic Octopus Urn Feb 15 '18 at 14:26
2
\$\begingroup\$

Macaulay2, 27 bytes, safe

<<stack\\(1..100)/toString;

Prints numbers separated by newlines.

Macaulay2 is a language designed for computations in advanced commutative algebra and algebraic geometry. It has a wikipedia page, it's available for free from its official website, and it fits PPCG's criteria for a programming language. It's widely used in the algebra community, even if no one seems to know about it here…

The stack function was meant as a red herring — it concatenates strings vertically (useful for printing matrices and whatnot with just ASCII), and has nothing to do with stack-based memory.

\$\endgroup\$
2
\$\begingroup\$

Ouroboros, 27 bytes, safe

$0$1@l();
($1+JOYjoy$100=_)

Outputs as bytes.


Try it here!

Ouroboros is usually pretty distinctive with constructs like 1( at the ends of lines, so I tried to get creative with the parentheses to disguise it. Also with $ before numbers to make it look vaguely Perl-inspired.

Snake 1

$  Switch to shared stack
0  Push 0
$  Switch back to own stack
1  Push 1
@  Rotate top 3; since there's only one item on the stack, uses two implicit zeros
l  Push length of stack (3)
(  Eat that many characters from the end of the snake

This swallows the IP, and the snake halts.

Snake 2

(   Swallow characters; with an empty stack, swallows 0 characters: no-op
$   Switch to shared stack (on the first iteration, this just had a 0 pushed to it by
    snake 1; on future iterations, it will be the previous number printed)
1   Push 1
+   Add
JO  No-ops
Y   Copy top of shared stack to own stack
j   No-op
o   Output top of current stack (which is the shared stack) as ASCII character
y   Copy top of own stack to shared stack
    We now have a copy of the current number on each stack
$   Switch to own stack
100 Push 100
=   Push 1 if 100 equals current number, 0 otherwise
_   Negate
)   Regurgitate that many characters: if 0, does nothing; if -1, swallows a character

Thus, if the current number is 100, the IP is swallowed and the snake halts; otherwise, control loops back to the beginning of the snake, where we switch back to the shared stack, increment the number there, and so forth.

\$\endgroup\$
2
\$\begingroup\$

PBASIC (BS2), 20 bytes, safe

Hexdump:

00000000: 1400 6607 3cfd 03fd 6cfd fd66 0621 535a  ..f.<...l..f.!SZ
00000010: fd03 07fd                                ....

Outputs as ASCII bytes to the screen.


This one is a bit of a gray area since the only free "interpreter" I know of is the demo version of Proteus, and it's a little difficult to write directly to the EEPROM in it.

\$\endgroup\$
  • \$\begingroup\$ It looks like some form of tokenised BASIC on an 8-bit microcomputer to me. \$\endgroup\$ – NieDzejkob Feb 14 '18 at 16:12
  • \$\begingroup\$ This is safe; please reveal the language! \$\endgroup\$ – MD XF Feb 19 '18 at 4:10
  • \$\begingroup\$ @NieDzejkob Your instincts were good. \$\endgroup\$ – a spaghetto Feb 19 '18 at 17:14
2
\$\begingroup\$

K, 62 bytes, safe

p:{`0:$x} /output
i:1;do[100;p[i];p[:[i<100;","]];i+:1];p@"\n"

I wonder that this one is safe since i didn't really obfuscate the code.

Only the /output is a comment i forgot to delete. :D

Try it online!

I think on tio its not exactly the same language, but it works the same.

\$\endgroup\$
  • \$\begingroup\$ This is now safe! \$\endgroup\$ – Christopher Feb 20 '18 at 19:24
2
\$\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  ..@OP5.U@.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
    \$\begingroup\$ The funny part is that I ran this, but discarded the solution because of the garbage output. \$\endgroup\$ – Dennis Feb 24 '18 at 20:54
2
\$\begingroup\$

Hexagony (Esoteric IDE), 506 bytes, safe

Base64:

4p2iI3sqJkp6SCpSc2FwTippXiFmIVlT4pyG4p2z4p6LaCrinrMhJkDinaFWU1Xi
nINk4p6fJOKem2jinoo+4p6P4p224p6H4p2uKuKctl5e4p2gXmYo4pyM4pySQEAk
4p6YS0khJeKcseKdp+KcsCrinIVeV+Kdgihe4p2jKOKerWRGc+KcnkFAS+Kcrngp
VOKcnOKcgUVRJAoKdmFyaT0iIjEwMApwcmludCgKaWYgPiAwCSAKICh7e0VOUDA7
CiAiKSEiCiBnb3RvIHByaW50KApyYW5nZSgxMDApCikKIH19KQoKQE92ZXJyaWRl
CnB1YmxpYyBib29sZWFuIGVxdWFscygpIHsgICAvKiBmb3IoaT0wO2k8MTAwOysr
aSlTeXN0ZW0ub3V0LnByaW50KGkpOyAqLyAgIHJldHVybiAxPjA7fSAJICAJIAkJ
CgojUHl0aG9uCgogICAgcHJpbnQgICggICcJJyAgLiAjIGEgcsinbidkJ+G7jMK1
IGNv4bmDbcSXxp10CiAgICBqb2luKHN0cihpKzEpIGZvciBpIGluIHJhbmdlKDEw
MCkpKQoKfSB2YXIgaTp3b3JkOyBiZWdpbiBmb3IgaSA6PSAxIHRvIDEwMCBkbyB3
cml0ZShpLCAnICcpOyBlbmQuCi8vIFsuK10=

Exact output content:

 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

(with a leading space, without any trailing whitespace, numbers separated with spaces)

Try it online!


But... it doesn't look like Hexagony!

Timwi added a secret debugging feature to Esoteric IDE, in this commit. Specifically, if a appears at the first of the program, the source code is treated as linear, using if > 0 and goto for control flow.

However, I can't find Timwi talking about it anywhere.

No related search result... so I guess this must be safe. Personally, I was very surprised, and could only know that while reading the Esoteric IDE source code (and I can't understand why the Hexagony interpreter need the character and ) (after I have written LinearHexagony for the same purpose) (my version is sonewhat better, as it has support for multiple IPs, but unfortunately doesn't support if, only conditional goto).


So, if the source code starts with a , then

  • A line if > 0 will be treated as conditional command. Use indentation similar to Python to specify code blocks.
  • A line starts with goto ... well, goto a label.
  • A line that is equal to the target of some goto is considered a label.

In this code, I used print( as the label name.


Yes, Esoteric IDE normally only run on Windows, which is not free. However


And... some details about why I deleted my previous answer. It outputs character codes from 1 to 100, and it was supposed to be valid. However, on line 423 of Mainform.cs,

txtOutput.Text = _env.Output.UnifyLineEndings();

On Windows, it modifies the value of CR (13) to LF (10). That is... wrong.

On an unrelated note, I manually replaced all CRLF in the source code to LF to prevent people guessing it's on Windows.


Esoteric IDE was linked on Esolangs wiki page.

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

dc, 17 bytes, cracked by totallyhuman

0[1+pd100>a]salax

Have fun. It won't be too hard to solve, I have a more intresting one coming soon.

\$\endgroup\$
  • \$\begingroup\$ Cracked. \$\endgroup\$ – totallyhuman Feb 6 '18 at 20:11
  • \$\begingroup\$ Heh, knew it would be a quick crack. \$\endgroup\$ – moonheart08 Feb 6 '18 at 20:12
1
\$\begingroup\$

0815, 21 bytes, cracked by MD XF

}:S:<:1:+$~<:64:-^:S:

Output is raw bytes.

\$\endgroup\$
  • \$\begingroup\$ Cracked \$\endgroup\$ – MD XF Feb 8 '18 at 4:24
1
\$\begingroup\$

05AB1E, 106 bytes, cracked by totallyhuman

TnL,q,a,b,c,d,I,t=input();v=c;u=b*c*TnL
exec"if v>=30:v=c;u+=d\nv=v*v/25+6*v+140-u+I;u+=a*(b*v-u);print v\n"*t

Outputs as an array of integers from 1 to 100.


TnL,q prints [1, ..., 100] then immediately exits due to q, all other junk is ignored.

\$\endgroup\$
  • \$\begingroup\$ This is 05AB1E. \$\endgroup\$ – totallyhuman Feb 8 '18 at 15:26
  • \$\begingroup\$ @totallyhuman incorrect! It's OBVIOUSLY python, or whatever answer I stole the filler from. \$\endgroup\$ – Magic Octopus Urn Feb 8 '18 at 15:41
1
\$\begingroup\$

Triangular, 31 bytes, cracked by MD XF

Should be quite easy

,i#%)`A;A^A@&NN*L!o|_\Om;;-?!>/

Newline separated integers

Stripped of all the unnecessary characters and formatted it looks like the following:

        , 
       i # 
      % . ` 
     A . A . 
    A . & . . 
   * . ! . . .
  \ . m . . . .
 . > / . . . . .

It goes around this loop of characters in an anti clockwise direction. Redirect SW, increment the stack, output the number, push 10 twice and multiple for 100, redirect around (3 steps), mod, skip the next command (exit) if not 0, push 10 (newline), output the character and start loop again.

Of course this could be golfed down quite a bit.

\$\endgroup\$
  • \$\begingroup\$ Cracked. Were all the no-ops intentional? \$\endgroup\$ – MD XF Feb 8 '18 at 2:45
  • \$\begingroup\$ @MDXF Thanks for the edit and yes the no-ops where intentional. \$\endgroup\$ – MickyT Feb 8 '18 at 8:33
1
\$\begingroup\$

Foo, 9 bytes, cracked by MD XF

(100+1$c)

Another easy one.

\$\endgroup\$
  • \$\begingroup\$ Cracked. \$\endgroup\$ – MD XF Feb 7 '18 at 0:19
1
\$\begingroup\$

Java, 600 bytes, cracked by totallyhuman

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0063\u006c\u0061\u0073\u0073\u0020\u0058\u0020\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0061\u0029\u007b\u0066\u006f\u0072\u0028\u0069\u006e\u0074\u0020\u0069\u003d\u0031\u003b\u0069\u003c\u003d\u0031\u0030\u0030\u003b\u0069\u002b\u002b\u0029\u007b\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0069\u0029\u003b\u007d\u007d\u007d

Outputs decimals.

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

Gopher, 217 bytes, cracked by MD XF

'&^<'?×++<%@-<!÷-<'&^<.!<'?^×-<%!÷--<?^×++<++<%!÷<?×<+<&?^++<%!@-<&××-<.@÷+<'&^<.@÷÷+<×<÷-<'×-<?^×+<.!<++<<<'?××-<!÷--<%!÷<?+<&?^+<#÷-<'^×++<×+<÷--<×+<.@÷÷+<÷--<--<++<××-<<-<^+<-<<÷÷+<=

Output is a series of space-separated numbers.

\$\endgroup\$
  • \$\begingroup\$ Cracked \$\endgroup\$ – MD XF Feb 8 '18 at 4:09
1
\$\begingroup\$

Fortress, 72 bytes, cracked by moonheart08

export Executable
run(args) = do
for i<-seq(1#100) do
println(i)
end
end

Links: Specification, Direct download of version 0.1 alpha.

\$\endgroup\$
  • \$\begingroup\$ Cracked \$\endgroup\$ – moonheart08 Feb 7 '18 at 2:57
  • 1
    \$\begingroup\$ @moonheart08 That's a link to this answer :) \$\endgroup\$ – Conor O'Brien Feb 7 '18 at 2:58
  • \$\begingroup\$ Wrong link, @moonheart08 \$\endgroup\$ – Zacharý Feb 7 '18 at 2:58
  • \$\begingroup\$ whoops! Real link \$\endgroup\$ – moonheart08 Feb 7 '18 at 3:00
1
\$\begingroup\$

Perl 5, 139 bytes, cracked by totallyhuman

$,=$
";*a&*z;*aa&*az;*ba&*bz;*ca&*cv;s;;
$.++;e##cv]
      ;;;   print++$
      _..          $
=*
5/3   ;;;
6/4   ;;;
7/5   ;;;
8/6   ==*cv

Outputs decimal integers, space separated.

\$\endgroup\$
  • \$\begingroup\$ This is Perl 5. \$\endgroup\$ – totallyhuman Feb 8 '18 at 0:11
  • 1
    \$\begingroup\$ @totallyhuman, well, it was fun while it lasted. I almost managed to take a whole breath. :-) \$\endgroup\$ – msh210 Feb 8 '18 at 0:13
1
\$\begingroup\$

Python 3, 133 bytes, cracked by totallyhuman

#import<stdio>
1//1;f=__import__;
2//1;String=str
0//1;i = 1;
while(i<101):#{
    f("sys").stdout.write(String(i)+" ");
    i+=1;
#}

Might be a bit obvious but, it can also be very confusing.

EDIT: I hoped I could confuse you more with this, but totallyhuman cracked it. By the way: This was my inspiration: https://www.python.org/doc/humor/#python-block-delimited-notation-parsing-explained

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

Brain-Flak, 664 bytes, cracked by Mr. Xcoder

for(each num in #1/#100)
(
    do #pointOfNum(num)
Push (#pointer@#num)
if(result(pointer@(num/pointOfNum(run2)+#diff)))
while(each num of pointer@num)
do
(ITS GO TIME!)
DO THE MATH
)
def fun add{
while add #(point@100)
})
def {
do@#point()
})
open{ref}add(42))
do
{SAY IT TO THE NAND})
{
push why1998@point
})
if(output!ready
(push@#out
{buy})
onGler<@spoin>
pushet)
<Divmod@point@uf2X3>
discov def n{
<div@23>
point@(4524#f34)
(@#do(@3h)
{point*723
numdif}
)#huCX5DBP^h~0_GG1<h32X542P[18F18h42X%AAP[h!.X%OOS`M a@<euws
[give@point
(for@point13)])
div<pointmod>
divide((42/9
{
over@point27
})
[pointto(27)]
giv@12)}
div<mod>
def run{
pointOfnum
fun@#(23)
why1998
}

Took under a minute :|

\$\endgroup\$
  • \$\begingroup\$ This is brain-flak. \$\endgroup\$ – DJMcMayhem Feb 8 '18 at 18:56
  • \$\begingroup\$ @DJMcMayhem wth \$\endgroup\$ – Christopher Feb 8 '18 at 18:56
  • \$\begingroup\$ Cracked. \$\endgroup\$ – Mr. Xcoder Feb 8 '18 at 18:57
  • \$\begingroup\$ Too many balanced brackets = very suspicious \$\endgroup\$ – Jo King Feb 8 '18 at 19:02
  • \$\begingroup\$ @JoKing I also use brain-flak a decent amount \$\endgroup\$ – Christopher Feb 8 '18 at 19:11
1
\$\begingroup\$

Attache, 40 bytes, cracked by totallyhuman

Define[$main,{Print[Range[1,100]]}]
main[]

Output, minus a trailing newline:

[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]

Note that this doesn't work in Mathematica, as it uses braces.

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

><>, 31 bytes, cracked by jimmy23013

0>1+:aa*1+=?;:\
 ^       o"|"n/

Output looks like:

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\$
  • \$\begingroup\$ Cracked. \$\endgroup\$ – jimmy23013 Feb 9 '18 at 14:46
  • 2
    \$\begingroup\$ This was an obvious one... \$\endgroup\$ – NieDzejkob Feb 9 '18 at 14:48
1
\$\begingroup\$

Quartic, 78 bytes, cracked by Esolanging Fruit

Gotta love google

decl	a,z,e
set	a,1
set	z,1
loop	z
print	a
cmp	e,a,'d'
if	e
dec	z
end
inc	a
end

Now for something a bit longer. Output is character codes.

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

Golfscript, 55 bytes, cracked by Dennis

2.upto(100){|i| p i}; printf RUBY_VERSION, $$ > 0; p $_

Outputs [1 2 3 … 100].

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

Triangular, 40 bytes, cracked by totallyhuman

1%P
*>\
A+.A
@~~.@A)][(An!!?_
`*/-S+1%U<
\$\endgroup\$
  • \$\begingroup\$ This is Triangular. \$\endgroup\$ – totallyhuman Feb 9 '18 at 20:52
  • 1
    \$\begingroup\$ @totallyhuman come onnnnnnnnn \$\endgroup\$ – MD XF Feb 9 '18 at 21:13
1
\$\begingroup\$

Add++, 83 bytes, cracked by totallyhuman

DECLARE -> (A, B) => g [1, 2] , 100 () - () 100 V From 1 (#) RAN pop => GRAVREL & G

Outputs as a list with , separating the numbers.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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