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
3
\$\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\$
0
3
\$\begingroup\$

Cascade, 59 bytes, cracked by exedraj

v>@/<
1%_\|
/]8\<
d+^}|
_/{-/
^*d|1
9#h\/
k-Q.|
e3d+/
4!5|5

Have fun! Output is newline separated integers.

Try it online!

Explanation

After deobfuscating, the code becomes:

  @/ 
  _  
 ] \ 
d ^ |
 / -/
^ d|1
 # \/
 - .|
e d+/
  5|5

And here's a sort-of explanation:

enter image description here

It's complicated, but I'm quite proud of myself for making this.

\$\endgroup\$
2
  • \$\begingroup\$ this is cascade \$\endgroup\$
    – lyxal
    Commented Aug 14, 2021 at 8:02
  • \$\begingroup\$ @exedraj How did you get it? \$\endgroup\$
    – emanresu A
    Commented Aug 14, 2021 at 8:48
3
\$\begingroup\$

Braincrash, 104 bytes, safe

   !  ! ! !       !      ! !       !       !       !       !   !!  !       !  !    !    ! ! !    !     !

Have some more fun, while you're at it...

\$\endgroup\$
2
  • \$\begingroup\$ This is safe now, so what was it? \$\endgroup\$
    – pxeger
    Commented Dec 1, 2021 at 16:34
  • \$\begingroup\$ @pxeger Lol, this has been safe for two and a half months. \$\endgroup\$
    – emanresu A
    Commented Dec 1, 2021 at 18:48
3
\$\begingroup\$

Burlesque, 87 bytes, Cracked by steffan)

proc gen_range {r1%add!}

fancydef add:
    \\/\.+
end

cnt := 100
gen_range(cnt())
end
\$\endgroup\$
3
  • \$\begingroup\$ cracked, burlesque \$\endgroup\$
    – naffetS
    Commented May 16, 2022 at 14:55
  • \$\begingroup\$ i honestly just googled "site:esolangs.org fancydef" lol \$\endgroup\$
    – naffetS
    Commented May 16, 2022 at 14:55
  • \$\begingroup\$ Ah, darn, I thought by using some un-(poorly-)documented stuff it might not show up. Ah well. \$\endgroup\$ Commented May 16, 2022 at 16:47
3
\$\begingroup\$

res (safe), 307 bytes

+- 2 3 4 5 6 7 @2@ @1@ @9=| 11 12 13 14 15 16 17 18 19 20 |89| )88) 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 ~

Get the raw version here (it's not /// btw)

Glhf getting this one lol.

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

Cascade, 47 bytes (safe)

(/>d.v#
_--_-_-
d)(o[e]
*!100d(
/-;.m|<
d(1'o>^

Try it online!

Output as newline-delimited integers with a leading newline.

I'm not sure how to explain this so I won't.

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

Literate Vyxal 3, 42 bytes, safe

n = 100
for index in range(n)
 print index

Try it Online!

Output as newline-separated decimal integers.

Vyxal 3 has a literate mode, which allows writing builtins as words instead of single characters. Without the NOPs, this is just

100 for n print
100             # Push 100
    for         # Loop the context variable `n` over the range 1 to 100
        n       # Push n
          print # Print it

Everything else is just to make this look like python, although I wouldn't be surprised if there's a python-esque lang somewhere that doesn't require the :. Even then, though, it would output the range from 0 to 99 instead of 1 to 100.

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

Deadfish~, 7 bytes, cracked by Uriel

{{iow}}

The output should be this:

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

The OP explicitly allowed this in chat. Pretty trivial, but I wanted to see how the community reacts to such solutions.

\$\endgroup\$
1
  • \$\begingroup\$ Cracked. \$\endgroup\$
    – Uriel
    Commented Feb 6, 2018 at 21:18
2
\$\begingroup\$

Befunge-93, 97 bytes, cracked by DLosc

Starting off with an easy one.

shovv fRom-0to*1E#' <iostream
?>e[10]++;B:12\;g\=`||(
@. >!1:then.do+^\x61@
:^A&>#+:$#<math>eaa$q
\$\endgroup\$
1
2
\$\begingroup\$

Locksmith, 492 bytes, cracked by totallyhuman

Perhaps it wasn't too smart to use a language of my own.

I wanted to see if I could secure a victory through obfuscation...

import java.util.Random;
interface Main{
  public	static void  main(String[]args){
for(int	i  	=0; i  <		90*  11; i ++)
System. out.println(i);
f(   	 	7);
g();
}
public static 	int f(int n){System.out.println(n);if(n<=0)return+n&3;
else return f(	n/7)*6	+7*f(n-5)+7;
}
public static void g(){
Random k=new Random(45);
String j="YmlULmxZXERFZmNvbg==";
int m;
for(int i=m=0;i<121;i++){
m+=j.charAt(0)+j.	charAt(i&1)+k.nextInt();
}
System.out.println(k.nextInt((int)Math.pow(7201,19))^6^m);
}
}

Try it online!

Equivalent to:

09011
70
3767
57
4501210
1
7201196
\$\endgroup\$
2
  • \$\begingroup\$ Cracked. \$\endgroup\$ Commented Feb 7, 2018 at 0:45
  • 5
    \$\begingroup\$ I did try Whitespace and other Java versions though. :P Eventually realized you make a ton of esolangs and I've been eyeing Locksmith for a while now... \$\endgroup\$ Commented Feb 7, 2018 at 0:55
2
\$\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
2
\$\begingroup\$

Fantom, 55 bytes, cracked by totallyhuman

unfortunatelly don't have much time to obfuscate this

class A{static Void main(){(1..100).each|x|{echo(x)}}}
\$\endgroup\$
1
2
\$\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\$
5
  • \$\begingroup\$ This is brain-flak. \$\endgroup\$
    – DJMcMayhem
    Commented Feb 8, 2018 at 18:56
  • \$\begingroup\$ @DJMcMayhem wth \$\endgroup\$
    – user63187
    Commented Feb 8, 2018 at 18:56
  • \$\begingroup\$ Cracked. \$\endgroup\$
    – Mr. Xcoder
    Commented Feb 8, 2018 at 18:57
  • \$\begingroup\$ Too many balanced brackets = very suspicious \$\endgroup\$
    – Jo King
    Commented Feb 8, 2018 at 19:02
  • \$\begingroup\$ @JoKing I also use brain-flak a decent amount \$\endgroup\$
    – user63187
    Commented Feb 8, 2018 at 19:11
2
\$\begingroup\$

PARI/GP, 23 bytes, cracked by DevelopingDeveloper

#for (o=1,100,print(o))

Thought maybe since it was such an uncommon language nobody would know about it :(

\$\endgroup\$
1
2
\$\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\$
3
  • \$\begingroup\$ This has an extra 0 :) \$\endgroup\$ Commented Feb 8, 2018 at 20:53
  • \$\begingroup\$ @ConorO'Brien fixed. \$\endgroup\$
    – Riker
    Commented Feb 8, 2018 at 21:06
  • \$\begingroup\$ This is ah-tahsh. \$\endgroup\$ Commented Feb 8, 2018 at 21:10
2
\$\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\$ Cracked. \$\endgroup\$
    – Dennis
    Commented Feb 9, 2018 at 17:04
2
\$\begingroup\$

Hy, 63 bytes, cracked by Ruslan

(defn !(&optional(> 1))(if(< > 101)(do(print >)(!(inc >)))))(!)

Outputs in decimal, newline-separated.

\$\endgroup\$
3
  • \$\begingroup\$ If I guess Lisp and am right, does that give me credit for a crack? \$\endgroup\$ Commented Feb 7, 2018 at 18:25
  • \$\begingroup\$ @KellyS.French Only if you specify which Lisp interpreter it works in. ;) \$\endgroup\$
    – DLosc
    Commented Feb 7, 2018 at 19:25
  • 1
    \$\begingroup\$ It's hy. Here's corresponding crack. \$\endgroup\$
    – Ruslan
    Commented Feb 9, 2018 at 18:10
2
\$\begingroup\$

Gambas, 98 bytes, cracked by NieDzejkob

Public Sub Main()
Dim num as short
For num = 1 To 100 Step 1
    print num  
Next
End 
'1-100.print

The edit is from when coping over I snipped part of the code off.

\$\endgroup\$
7
  • \$\begingroup\$ Is the language free? \$\endgroup\$
    – jimmy23013
    Commented Feb 10, 2018 at 6:51
  • \$\begingroup\$ Cracked? Didn't test, but I am pretty sure I got it right. \$\endgroup\$
    – Mr. Xcoder
    Commented Feb 10, 2018 at 10:18
  • \$\begingroup\$ @Mr.Xcoder not what i used :P \$\endgroup\$
    – user63187
    Commented Feb 10, 2018 at 16:52
  • \$\begingroup\$ If this is VBA, this answer is invalid. You know that? (can't test it, no windows license nor VM handy) \$\endgroup\$
    – Maya
    Commented Feb 10, 2018 at 17:03
  • \$\begingroup\$ @NieDzejkob not VBA \$\endgroup\$
    – user63187
    Commented Feb 10, 2018 at 17:08
2
\$\begingroup\$

AsciiDots, 58 bytes, cracked by MD XF

//$#n=100(v.|)
[+]:<>/99#*%2
#~H6+-e>*</xxxx>
(^)>*{L}<d>;

Prints numbers in decimal separated by newlines.

\$\endgroup\$
1
  • \$\begingroup\$ Cracked. \$\endgroup\$
    – MD XF
    Commented Feb 11, 2018 at 2:20
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\$
1
  • \$\begingroup\$ Cracked. \$\endgroup\$
    – MD XF
    Commented Feb 11, 2018 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\$
4
  • \$\begingroup\$ cracked \$\endgroup\$ Commented Feb 11, 2018 at 15:09
  • \$\begingroup\$ @Erik Uh, I forgot to specify the output format. Reposted. \$\endgroup\$
    – Maya
    Commented Feb 11, 2018 at 15:14
  • \$\begingroup\$ Oh so you failed to mislead us that way >_>_<_< \$\endgroup\$ Commented Feb 11, 2018 at 15:17
  • \$\begingroup\$ @Erik Yes, well said \$\endgroup\$
    – Maya
    Commented Feb 11, 2018 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\$
1
  • \$\begingroup\$ Cracked this is I \$\endgroup\$
    – H.PWiz
    Commented Feb 12, 2018 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\$
1
  • \$\begingroup\$ Cracked (I knew someone was going to post a Golunar program) \$\endgroup\$
    – Jo King
    Commented Feb 7, 2018 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\$
8
  • \$\begingroup\$ If this is supposed to work in Proton, it doesn't print 100. Red herring or bug? \$\endgroup\$
    – MD XF
    Commented Feb 13, 2018 at 3:22
  • \$\begingroup\$ Cracked. \$\endgroup\$
    – MD XF
    Commented Feb 13, 2018 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
    Commented Feb 13, 2018 at 3:36
  • \$\begingroup\$ For fairness' sake: chat.stackexchange.com/transcript/240?m=42825026#42825026 \$\endgroup\$
    – H.PWiz
    Commented Feb 13, 2018 at 3:36
  • \$\begingroup\$ @MDXF Hm ok good idea :P \$\endgroup\$
    – hyperneutrino
    Commented Feb 13, 2018 at 3:37
2
\$\begingroup\$

Coconut, 190 bytes, cracked by quartata

main :: RunIO
main = print (list (range (1, 101)))

list :: Fn ((Range, Int) -> (List, Int))
list = xs -> List.fromObj (xs)

range :: Fn ((Pair, Int) -> (Range, Int))
range = (x,y) -> {x..y}

Try it online!

Coconut extents Python by syntactical constructs for functional programming.

main = print (list (range (1, 101))) is the only line that is actually doing something, though a more idiomatic way would be (1,101) |*> range |> list |> print.

The lines with :: should be reminiscent of Haskell's type annotations, but Coconut is actually dynamically typed and :: is its chain operator which works lazily, which is probably the reason why those nonsensical declarations do not throw an error.

I also wanted to create the impression that functions can be used before their definition appears in the code, but actually Coconut is interpreted sequentially and list and range are build-in functions which work fine in the second line, but are redefined to nonsensical functions afterwards.

Calling list after the redefinition produces a NameError: name 'List' is not defined, because there is no function List.fromObj.

Calling the redefined range with two numbers, e.g. range(1,101) returns a singleton set which contains a function object, because the .. operator is used for function composition. This does not cause an error yet, but trying to evaluate this composed function of course throws a TypeError: 'int' object is not callable.

\$\endgroup\$
7
  • 1
    \$\begingroup\$ Cracked. \$\endgroup\$ Commented Feb 11, 2018 at 21:28
  • \$\begingroup\$ @quartata That was quick. What gave it away? \$\endgroup\$
    – Laikoni
    Commented Feb 11, 2018 at 22:07
  • 1
    \$\begingroup\$ print(list(range(1,101)), despite your attempts at spacing it to make it look more Lisp-like, is just too damn Pythonic. \$\endgroup\$ Commented Feb 11, 2018 at 22:07
  • \$\begingroup\$ Couldn't you have just done {1..101} instead of using range? \$\endgroup\$ Commented Feb 14, 2018 at 3:31
  • \$\begingroup\$ @EsolangingFruit {1..101} is not actually a range expression. The .. operator is used for function composition. The code only works because it is executed sequentially, that is in the main part the build-in range function is used, before it is redefined to nonsense on the last line. \$\endgroup\$
    – Laikoni
    Commented Feb 14, 2018 at 9:53
2
\$\begingroup\$

Felix, 33 bytes, cracked by Esolanging Fruit

for i in 1..100 do println$i;done
\$\endgroup\$
3
  • \$\begingroup\$ This prints 1 to 100 not 0 to 99, right? \$\endgroup\$ Commented Feb 13, 2018 at 19:02
  • \$\begingroup\$ @RobertFraser it printed 0 to 100 before, now it's correct, my bad. \$\endgroup\$ Commented Feb 13, 2018 at 19:22
  • \$\begingroup\$ Cracked. \$\endgroup\$ Commented Feb 14, 2018 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\$
5
  • \$\begingroup\$ Hint: this time it's not 05AB1E... or isssss it? \$\endgroup\$ Commented Feb 14, 2018 at 18:45
  • \$\begingroup\$ This is Groovy. \$\endgroup\$
    – Emigna
    Commented Feb 15, 2018 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\$ Commented Feb 15, 2018 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\$ Commented Feb 15, 2018 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\$ Commented Feb 15, 2018 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\$
0
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\$
3
  • \$\begingroup\$ It looks like some form of tokenised BASIC on an 8-bit microcomputer to me. \$\endgroup\$
    – Maya
    Commented Feb 14, 2018 at 16:12
  • \$\begingroup\$ This is safe; please reveal the language! \$\endgroup\$
    – MD XF
    Commented Feb 19, 2018 at 4:10
  • \$\begingroup\$ @NieDzejkob Your instincts were good. \$\endgroup\$ Commented Feb 19, 2018 at 17:14
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.