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

11
\$\begingroup\$

Sesos, 6 bytes, safe

}%*xg2

Output is in decimal.

Try it online!

Sesos can be written in either binary or assembly format. The assembly file that generated the binary file above follows.

set mask
set numout

fwd 1, add 44

nop
	fwd 1, add 1, put
	rwd 1, sub 3
jnz

Try it online!

It took some odd choices (a useless fwd 1, a nop that could have been a jmp, add 44 and sub 3 instead of add 100 and sub 1), but I managed to create a binary file consisting solely of printable ASCII characters (so it wouldn't look like a binary file).

\$\endgroup\$
50
\$\begingroup\$

Beatnik, 114 bytes, cracked by Johannes Griebler

Mit' tää kauniina kelaa?
Mil tää öisin pelaa?
Sun suu kauniina sanoo:
Kroohhpyyh-ZZZ-ZZZZ Z
Nukuttaapi kovin!

It's a poem in Finnish! And a program. It prints the numbers as bytes.

English translation:

What does that beautiful think?
What does it play at night?
Your beautiful mouth says:
(snoring) ZZZ ZZZ
I feel very sleepy!

I'm surprised it took this long to crack this, especially as the another Beatnik submission was cracked quickly.

This does not work with the Python interpreter (used in TIO) because of the way it handles special characters. It considers Kroohhpyyh-ZZZ-ZZZZ to be three different words, while it should be interpreted as one big. Use the C interpreter to run this.

Explanation:

Mit' tää                   | Push 1
kauniina kelaa?            | Duplicate and print
Mil tää                    | Push 1
öisin                      | Nop
pelaa?                     | Pop 2 and push their sum
Sun suu                    | Nop
kauniina                   | Duplicate
sanoo: Kroohhpyyh-ZZZ-ZZZZ | Push 101
Z                          | Subtract
Nukuttaapi kovin!          | Jump 12 words backwards (to the first "kauniina")
\$\endgroup\$
  • 4
    \$\begingroup\$ Dang, I fell for that trap. \$\endgroup\$ – totallyhuman Feb 6 '18 at 22:08
  • 6
    \$\begingroup\$ Those "Z"s look suspicious... \$\endgroup\$ – 12Me21 Feb 7 '18 at 15:58
  • 25
    \$\begingroup\$ Apparently in Finnish you snore with more Z's than in English... \$\endgroup\$ – Enrico Borba Feb 8 '18 at 8:29
  • 3
    \$\begingroup\$ Cracked by Johannes Griebler \$\endgroup\$ – caird coinheringaahing Feb 11 '18 at 20:53
  • 6
    \$\begingroup\$ @quartata I knew people wouldn't bother to install the C interpreter. That's why I made sure that this program does not work in TIO. :P \$\endgroup\$ – fergusq Feb 11 '18 at 22:18
24
\$\begingroup\$

Hexagony, 62 bytes, cracked by totallyhuman

i=100 while(i>0){p(100-i+"d")!}i=%<>--1;if(_@==0){_@=-100}end;

Prints decimals separated by a single lowercase d.

I'd be impressed if this works in any unintended language.

Since this has already been cracked, here is the actually executed code:

    i = 1 0 0      * equal to 105100, just has to be above 0 for the first number
   . . . . . .
  . . . . . . .
 . . . . . . . .
" ) ! } i = % < >  * prints the number and stops if i % 100 == 0
 . . . . . . . _
  @ . . . . . .
   . . . . . .
    } . . d ;      * prints "d" and stores 100 in the memory edge

Everything else is a no-op, denoted by ..

\$\endgroup\$
23
\$\begingroup\$

8086 DOS COM, 58 bytes, cracked by tsh

huCX5DBP^h~0_GG1<h32X542P[18F18h42X%AAP[h!.X%OOS`M a@<euws

I/O format: raw characters

Explanation

The basic program looks like this:

    mov ax, 0x0e01 ; <b8><01><0e>
    xor bx, bx     ; <31><db>
_loop:
    pusha          ; `
    int 0x10       ; <cd><10>
    popa           ; a
    inc al         ; <fe><c0>
    cmp al, 101    ; <e
    jne _loop      ; u<f6>
    ret            ; <c3>

However, this variant uses many unprintable characters, which would be a big hint. Fortunately, some printable instructions include:

and ax, imm16    %
xor [si], di     1<
xor [si+bx], di  18
xor ax, imm16    5
inc r16          @ABCDEFG
dec r16          HIJKLMNO
push r16         PQRSTUVW
pop r16          XYZ[\]^_
cmp al, imm8     <
pusha            `
popa             a
push imm16       h

First, to avoid the unprintable characters caused by inc al, I used inc ax instead, since an overflow is not expected. Then I found a way to initialize AX and BX at the beginning with just printable characters.

    push 0x3234     ; h42
    pop ax          ; X
    and ax, 0x4141  ; %AA
    push ax         ; P
    pop bx          ; [

    push 0x2e21     ; h!.
    pop ax          ; X
    and ax, 0x4F4F  ; %OO
_loop:
    pusha           ; `
    int 0x10        ; <cd><10>
    popa            ; a
    inc ax          ; @
    cmp al, 101     ; <e
    jne _loop       ; u<f6>
    ret             ; <c3>

Then, I employed self modifying code to fix the unprintables in int 0x10. That instruction in the final program resides at 0x0131, which is the value in SI these 5 instructions get me:

    push 0x4375     ; huC
    pop ax          ; X
    xor ax, 0x4244  ; 5DB
    pop ax          ; P
    push si         ; ^

Then, I found the best way to get the value of 0x10cd (x86 is little endian) is to xor 0x3080 with 0x204d:

    push 0x307e   ; h~0
    pop di        ; _
    inc di        ; G
    inc di        ; G
    xor [si], di  ; 1

    ; ...

    pusha         ; `
    dw 0x204d     ; M<space>
    popa          ; a

Then, I used the same XOR value two more times, on the two final bytes in the program.

    push 0x3233     ; h32
    pop ax          ; X
    xor ax, 0x3234  ; 542
    push ax         ; P
    pop bx ; BX = 7 ; [

    xor [si+bx], di ; 18
    inc si          ; F
    xor [si+bx], di ; 18

    ; ...

    cmp al, 101     ; <e
    db 0x75 ; jnz   ; u
    dw 0x7377

First 0x7377 is xored with 0x3080 to get 0x43f7. Then 0x??43 (some garbage byte at 0x013a) ^ 0x3080 = 0x??c3, which sets the two final bytes to the correct values.

\$\endgroup\$
  • \$\begingroup\$ COM file? \$\endgroup\$ – tsh Feb 7 '18 at 6:44
17
\$\begingroup\$

ETA, 83 bytes, safe

n = "e";
is n equh one hundre-
SNACK?! 0v0
   _   M-<
  / \_/
HA|E SNAKE!!! >:(
  T

Another one that's more ASCII art than code (though this one should be harder to crack). Outputs in ASCII codepoints.


Try it online!

ETA uses the 8 commands ETAOINSH (case-insensitive), and ignores everything else. The executing code here is:

ne
isnehonehne
SNA
HAE SNAE
T

Which means:

ne  Push 0 to the stack
is  Increment the top value (get input, where EOF is -1, and subtract)
neh  Duplicate the current value
o    Output the character
neh  Duplicate the top value
ne S   No-op (push 0 and subtract)
NA HAE Push 100
S      Subtract 100 from the current value
NAE    Push 1
T      Pop value and jump to line 1 if the value is not 0
\$\endgroup\$
  • 4
    \$\begingroup\$ HA|E TRYING TO CRACK THIS!!! >:( \$\endgroup\$ – MD XF Feb 11 '18 at 3:49
16
\$\begingroup\$

MATL, 46 bytes, cracked by totallyhuman

Flatten[{1,100}] (* From x: 1 To 100: huhu% *)

I had fun trying to make this look somewhat like Mathematica, and trying to keep it fairly non-obvious. I only know two languages, so cracking it was probably not that hard.

Explanation:

F                  % Push False (0)
 l                 % ones. Stack: 0, 1
  a                % any. Stack: 0, 1
   tt              % duplicate last element twice. Stack: 0, 1, 1, 1
     e             % Reshape, last element reshaped into 1 row/column
                   % Stack: 0, 1, 1
      n            % numel of last element on stack. Stack: 0, 1, 1
 [                 % Opening bracket for creating array
  {                % Opening bracket for creating cell array
   1,100           % Push 1, 100
        }]         % Closing brackets. Stack: 0, 1, 1, 1, 100
(                  % Assignment indexing. Put a 1 in the 100th place of the variable above
                   % Stack: 0, [1, 0, ... (98 x 0) ... ,0 ,1]
 *                 % Multiply 0 by array. Stack: [0, 0, ... 0]
  F                % Push False (0). Stack: [0, 0, ... 0], 0
   r               % Push random number. Stack: [0, 0, ... 0], 0, 0.2431
    o              % Convert last number to double. Stack unaltered.
     m             % ismember. Stack: [0, 0, ... 0], 0
       x           % Delete last element on stack. Stack: [0, 0, ... 0]
        :          % Range to 0. Stack is empty.

1                 % Push 1 
  T               % Push True (1)
   o              % Convert to double. Stack: 1, 1
     100          % Push 100. Stack: 1, 1, 100
        :         % Range to 100. Stack: 1, 1, [1, 2, 3 ... 100]

huhu              % Horizontal concatenation and unique twice.
                  % Stack: [1, 2, 3 ... 100]
     % *)         % Comment to complete the Mathematica syntax comment.             
\$\endgroup\$
  • \$\begingroup\$ This is MATL. \$\endgroup\$ – totallyhuman Feb 8 '18 at 12:39
  • 10
    \$\begingroup\$ You are taking MATL to unknown levels of expressiveness \$\endgroup\$ – Luis Mendo Feb 8 '18 at 19:22
15
\$\begingroup\$

Curry PAKCS, 57 bytes, cracked by Potato44

f[]=""
f([x]++s)=show x++" "++f s
main=putStr(f[1..100])

Looks like Haskell but it doesn't run in Haskell.

\$\endgroup\$
  • 1
    \$\begingroup\$ @EsolangingFruit I am telling the truth when I say it's not Haskell (at least my intended solution is not). \$\endgroup\$ – Sriotchilism O'Zaic Feb 7 '18 at 5:19
  • 1
    \$\begingroup\$ @EsolangingFruit It's also not an optimal solution. I have a shorter solution but I like this one better. Happy hunting! \$\endgroup\$ – Sriotchilism O'Zaic Feb 7 '18 at 5:21
  • 3
    \$\begingroup\$ I was hoping this worked in Curry (it's a logic language and supports patterns like [x]++s), but you need to import IO to use putStr and it also doesn't seem to have .. for ranges. \$\endgroup\$ – Esolanging Fruit Feb 7 '18 at 5:28
  • 5
    \$\begingroup\$ Cracked. This was Curry but it needs a proper curry interpreter such as PAKCS \$\endgroup\$ – Potato44 Feb 9 '18 at 7:44
  • \$\begingroup\$ @Potato44 Of course you would crack this. Good job! \$\endgroup\$ – Sriotchilism O'Zaic Feb 9 '18 at 8:04
15
\$\begingroup\$

Whirl, 3905 bytes, cracked by Potato44

+------------------------------------------------------------+
|111111111111111111111111111111111111111111111111   $\       |
|000110011000111100011100100/010 0010 %p0-d% 0+{10000/111    |
|111000100111110001001000011 / 1111000100111110001001  frick |
|000 {01111110001(( 001111100010010000 1111110001()\ () !    |
|001111100010010000111 111000100111 1100010010000111111000100|
|111110001001(0000111)11100010011111!}000100100001111110001  |
|0011111|_0001001000011111100010011111 000100100001111110 001|
|001111100010010000111#1110001 001111100010010000111111000100|
|11111 H) /!00010010000111 1/1 100/0100111110001001000       |
| 011111100  & 01001111100010010000  111111000100111110001001|
|@  00001 11111000100111110 00100100001 111110 001001 111    |
| 1000 1001000011 11110 00100111110001001000011111100010  the|
|the 01111 100010010000111 111000 1001 111100010010 00011111 |
|1000100JO   1111100 010010000111 +=   11100010 011 11 KING  |
| 1000100100001 11111000100111110001 "0010000111111000100111 |
|110001001000011 11110 00100127  : 1111000100100 001   1     |
|11   11000100  11111000100100001111110001001111100010010000 |
|11111100 a  01001111100010  010000111111   000100111        |
| 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1|
|00 01 00 10 00 01 11 11 10 00 10 01 11 11 00 01 00 10 00 01 |
| 111 110 001 001 111 100 010 010 000 111 111 000 100 111 110|
|0010 0100 0011 1111 0001 0011 1110 0010 0100 0011 1111 0001 |
| 00111 11000 10010 00011 11110 00100 11111 00010 01000 01111|
|110001 001111 100010 010000 111111 000100 111110 001001     |
| 0000111 1110001 0011111 0001001 0000111 1110001 0011111    |
|00010010 00011111 10001001 11110001 00100001 11111000       |
| 100111110 001001000 011111100 010011111 000100100 001111110|
|0010011111 0001001000 0111111000 1001111100 0100100001      |
|                      ^1111100010^                          |
|0 111110001001000011111100010011111000100100001111110001    |
|0011111000100100001111110001001111100010010000111111000100  |
|  111110001001000011111100010011111000100100001111110001001 |
|   111100010010000111111000100111110001001000011111100010   |
| 0111110001001000011111100010011111000100100001111110001    |
|0011111000100100001111110001001111100010010000111111000100  |
|  1111100010010000111111000100111110001001000011111100010011|
|11100010010000 111111000100111110001001000011111100010011   |
|11100010010 00011111100010011111000100100001111110001001    |
|11110001+ 00100001111110' 001001111 10001001000011111100010 |
| 011111000100100001  1111100 010011  11100010010 00011      |
|1111JKL5 000100111110   0010010000   11111  1000   10011    |
|111 J 6700010010000111111^& E 00010011 L  11100 L 0 Y? bin  |
|100[print()100001111110   -001001111100010010000111]  111000|
|100 not 1111100 BRAIN010010000 FU1111 11000100CK  111110001 |
| rk:start 0010 0001111110001001 1111  0001001000011111100   |
|0100111110 dckx 001001  000011111  1000100111  11000100 help|
|100001 111110001001111100010010000111111000 1001111100010010|
|000-[111111000100??11111000100100001>1111100 {x=0-100}px    |
|111110001 00100001  11111000100111110 0010010000111111000100|
|1111 1000100100 +++001111  110001 0011111000  100100001 1111|
|100010  011111000100100001111<-1100010011111000100 10000111 |
|111 eval('\b00010011111000100100001111')-110001001--1111000-|
|1001000011]1111000100111110001001000011111100  010011111000 |
|10 +01>0000111 1  1 100 01001 1111 0001001 000011--1111  -  |
|0001001111100010010000111111000 1001111100010010000111111000|
|10011[111-0 0 01001000011 11110001001111100  010   010000111|
|111000 <100  1111100+010010 00 0.11111100010011111000100100 |
|001111110001001111100010>0100001111110001001111100010010000 |
|011000101010010101010111000000101011001]010100101010000 1010|
|111111111111111111111111111111111111111111111111111111111111|
+------------------------------------------------------------+

This is either going to be cracked really fast or not at all.

This had a lot of red herrings. Totallyhuman fell for the brainfuck one, which outputs every number except 1. Nhohnhehr has a valid 60 by 60 room, and it outputs in bits, but it outputs garbage. Brain-Flak has a few suspicious brackets etc... But Whirl is the intended language. This language only cares about 1s and 0s, and since I couldn't figure out loops, I just hardcoded adding one, printing, adding one etc., 100 times.

\$\endgroup\$
  • \$\begingroup\$ @totallyhuman How many tries have you made before the correct one? {edit: still wrong} (remember one-guess rule) \$\endgroup\$ – user202729 Feb 9 '18 at 11:21
  • 2
    \$\begingroup\$ @totallyhuman It's missing the ascii code point for 1 \$\endgroup\$ – Jo King Feb 9 '18 at 11:26
  • 1
    \$\begingroup\$ Love this one. So many red herrings \$\endgroup\$ – dylnan Feb 9 '18 at 15:36
  • 2
    \$\begingroup\$ Cracked. The mention of Fortuna reminded me of Whirl. \$\endgroup\$ – Potato44 Feb 9 '18 at 17:34
  • 2
    \$\begingroup\$ @Potato44 Haha awww man I tried Whirl but thought it was the same output as brainfuck!!! Nice job \$\endgroup\$ – dylnan Feb 9 '18 at 17:46
14
\$\begingroup\$

???, 1167 bytes, cracked by Dennis

The Man They Called Dennis (a song).

Dennis: a extremely decent golfer.
PPCG: a group of golfers.

Act I: Chorus.
[Enter Dennis]
"Dennis;
The man they call Dennis.
He took inspiration from J and he made the lang Jelly.
Stood up to the challenges and gave 'em what for.
Our love for him now ain't hard to explain.
The Hero of PPCG: the man they call Dennis."
[Exeunt]

Act 2: Verse 1
[Enter Dennis, PPCG.]
Now Dennis saw PPCG's backs breakin';
He saw PPCG's lament.....
And he saw that challenge takin'
Every answer and leaving no votes
So he said "You can't do this to my people; You can't let long language's answers win your challenges.
And Dennis booted up TIO! - and in five seconds flat,
FGITWed, all your challenges."
[Exeunt]

Act 2: Chorus - revised, since my program is ending soon
[Enter Dennis]
"He took inspiration from J and he made the lang Jelly
Stood up to Python - and gave 'em what for
Our love for him now ain't hard to explain
The Hero of PPCG, the man they call Dennis (song slows with a dramatic high note finish)"
[Exeunt]

With thanks to Dennis for providing a character for this program, and Jayne Cobb for being the original Hero of Canton.

Honestly not sure how long this is going to last, but it was quite fun.

\$\endgroup\$
  • 6
    \$\begingroup\$ This is ???. \$\endgroup\$ – Dennis Feb 14 '18 at 20:44
  • \$\begingroup\$ I thought it was shakespeare \$\endgroup\$ – FantaC Feb 15 '18 at 19:54
  • \$\begingroup\$ @tfbninja it makes no sense in shakespeare and likely errors out. I haven't tested it. Shakespeare requires you to use only actual characters as well, I doubt that Dennis was part of that. :) \$\endgroup\$ – Rɪᴋᴇʀ Feb 15 '18 at 20:12
  • \$\begingroup\$ Yeah it does error out, I had just stumbled on shakespeare before and this reminded me of it. \$\endgroup\$ – FantaC Feb 15 '18 at 21:04
  • \$\begingroup\$ @tfbninja yep, that was intentional. \$\endgroup\$ – Rɪᴋᴇʀ Feb 15 '18 at 22:05
13
\$\begingroup\$

Jolf, 7 bytes, cracked by DevelopingDeveloper

Lazy!~1

Output is numbers separated by a |.

How this works:

Lazy!~1
   y!     define a canvas (no-op)
  z  ~1   range 1..100
La        join by `|` (for building regexes)
\$\endgroup\$
  • \$\begingroup\$ I don't know what language this is but the code makes me think that it won't stop after 100. Is that the case? If so, is it allowed? \$\endgroup\$ – NieDzejkob Feb 8 '18 at 16:44
  • \$\begingroup\$ @NieDzejkob The solution is not unorthodox in any way :) \$\endgroup\$ – Conor O'Brien Feb 8 '18 at 16:55
  • \$\begingroup\$ cracked \$\endgroup\$ – DevelopingDeveloper Feb 8 '18 at 19:57
13
\$\begingroup\$

Whitespace, 369 bytes, cracked by Adyrem

def v(n=[]): #[	  		  	  

  #!"⠖⠔⠄⠑⠃⡆⠊⡬⠀⠞⠈⠀
 #;;;
   	 print(n*chr(33)) 		  	 	
 
for		n in range(100):	
   #
   #"	     
	#"<<;?)*aanlll>1#<-#.:_:*aa@#.#!9fo"
     	v(n)
	>d$/")!;\    
 
		 xXxxxXXXxXXxX>({.<
 xx%c++=t=+~\

   D.+L0~-tt/	  	
	..R;MU
     	]+@x+++++++++[->++++++++++<]>
	    [->+[->+>.<<]>
 [-<+>]
		<.<
]

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

This is a polyglot in at least 9 languages, but only one should work. Goooooood luck!

Hint:

The output format is unary


Welp. That was cracked fast.

For reference, the 9 languages were:

  • Whitespace (the intended language: outputs in unary spaces separated by tabs)
    • This was intended to be both a fake red herring and ironic, as the output would be completely invisible.
  • Python (the clue: would work up to 99 !s, but fails due to inconsistent use of tabs and spaces in indentation ;) )
  • Hexagony (prints the numbers separated by their character codes)
  • Befunge-98 (prints the 100 numbers backwards)
  • ><> (prints odd numbers starting from 10)
  • Cardinal (prints 1 through 99)
  • brainfuck (prints in unary separated by the character codes)
  • Wise (prints negative 1 through 100)
  • and Braille (prints character codes 1 through 99)
\$\endgroup\$
  • \$\begingroup\$ What's the output format? \$\endgroup\$ – Adyrem Feb 14 '18 at 12:13
  • \$\begingroup\$ @Adyrem added it \$\endgroup\$ – Jo King Feb 14 '18 at 12:18
  • \$\begingroup\$ cracked \$\endgroup\$ – Adyrem Feb 14 '18 at 12:37
  • 1
    \$\begingroup\$ +1 almost skipped over Whitespace because I "didn't get any output" \$\endgroup\$ – Adyrem Feb 14 '18 at 13:17
12
\$\begingroup\$

The Powder Toy Save File, 529 bytes, cracked by tsh

Fix of my last (now deleted) answer, which I missed a part of.

00000000: 4f50 5331 5c04 9960 961c 0c00 425a 6839  OPS1\..`....BZh9
00000010: 3141 5926 5359 b855 1468 00c2 eaff f6ff  1AY&SY.U.h......
00000020: 5446 0c4a 01ef 403f 2f5f 74bf f7df f040  TF.J..@?/_t....@
00000030: 0203 0000 4050 8000 1002 0840 01bc 16a5  ....@P.....@....
00000040: 61a2 6909 18c1 4c64 4f22 7a83 4030 08c9  a.i...LdO"z.@0..
00000050: a323 6932 0c8f 536a 0d0a 34f4 a635 31aa  .#i2..Sj..4..51.
00000060: 7a4d 0c8f 5000 0006 4681 ea00 3469 e90e  zM..P...F...4i..
00000070: 1a69 8219 0d34 c8c9 8403 4d00 6134 6993  .i...4....M.a4i.
00000080: 0008 1a09 1453 4ca0 311a 7a9a 68d3 468d  .....SL.1.z.h.F.
00000090: 0003 d4c8 000d 000d 0f98 debe 75b8 487f  ............u.H.
000000a0: 2256 900d a121 2107 bb12 1208 4409 e89e  "V...!!.....D...
000000b0: ddeb 1f17 e331 5ead 7cec db16 65d5 6090  .....1^.|...e.`.
000000c0: 2422 b0ca cc2a 5585 c9c9 dc44 4ac0 f14d  $"...*U....DJ..M
000000d0: 6076 5a40 8484 536a 953b b44b 190a 90f0  `vZ@..Sj.;.K....
000000e0: 8a20 310e 95ad ca24 2d4b 0097 1a69 a919  . 1....$-K...i..
000000f0: 8d5b 0010 0242 1c59 8981 409a ec10 9024  .[...B.Y..@....$    
00000100: 2369 e1d8 a222 53dc 8231 dc4f a891 4b0b  #i..."S..1.O..K.
00000110: cf61 20d8 c1b4 4269 e25b 072d 5fb4 f1c4  .a ...Bi.[.-_...
00000120: a66b 62c8 069c ebc6 0225 9900 9852 21e9  .kb......%...R!.
00000130: d2e3 63d8 069a 7a69 124e eafc 3c5d 4028  ..c...zi.N..<]@(
00000140: dd15 6f81 0d2b 8007 816d f581 36f9 e58f  ..o..+...m..6...
00000150: 8cec 30e0 0378 40f9 b52c 4a17 b999 808d  ..0..x@..,J.....
00000160: d583 106f fd5e aaf5 ea8f a01b f5fc 9be5  ...o.^..........
00000170: 8e40 e05d 3a0a 2470 964d ef31 4c17 45da  .@.]:.$p.M.1L.E.
00000180: 3242 6692 251a aacc 6523 220c 73a7 7e3b  2Bf.%...e#".s.~;
00000190: cecf 635d 3cb6 08a0 7930 9566 0833 1d90  ..c]<...y0.f.3..
000001a0: 993a 5b8a e548 b34c 3fa8 0cbe 84aa d23e  .:[..H.L?......>
000001b0: 0129 c73b 1859 afa8 a984 990d cb0c db77  .).;.Y.........w
000001c0: 8fa8 df2f eda2 b779 72a7 4333 9382 0794  .../...yr.C3....
000001d0: 1f14 2340 c199 344a 48e1 6214 85a8 82a9  ..#@..4JH.b.....
000001e0: 5f6a 5a55 6993 6395 4350 41a2 396f 3613  _jZUi.c.CPA.9o6.
000001f0: 20f1 4d52 d289 b60f 2ea1 0040 8009 08ea   .MR.......@....
00000200: e782 4084 847f 8bb9 229c 2848 5c2a 8a34  ..@.....".(H\*.4
00000210: 00            

Download: https://hellomouse.cf/moonyuploads/golfmagic

Output format: Unary value drawn on the screen

\$\endgroup\$
  • \$\begingroup\$ Can you provide a reversible xxd hexdump instead of that one please? \$\endgroup\$ – MD XF Feb 7 '18 at 2:39
  • \$\begingroup\$ sure. One moment. \$\endgroup\$ – moonheart08 Feb 7 '18 at 2:40
  • \$\begingroup\$ It seems like a save of some simulate game. But I don't know if this is a language defined by OP... \$\endgroup\$ – tsh Feb 7 '18 at 7:13
  • \$\begingroup\$ @tsh Here, we'll take this up in chat as you've figured it out. I've scanned the rules and it seems to count. \$\endgroup\$ – moonheart08 Feb 7 '18 at 13:40
  • \$\begingroup\$ OK, cracked \$\endgroup\$ – tsh Feb 7 '18 at 13:50
12
\$\begingroup\$

Hexagony, 69 bytes, cracked by totallyhuman

#define ss "/}O'=){/'HI}-){"
+1<2+3
"}@"$>!'d'/1
> ss ss {<}
1/1=2-1;

Output has decimal numbers followed by f, i.e.:

1f2f3f4f5f6f7f8f9f10f11f12f13f14f15f16f17f18f19f20f21f22f23f24f25f26f27f28f29f30f31f32f33f34f35f36f37f38f39f40f41f42f43f44f45f46f47f48f49f50f51f52f53f54f55f56f57f58f59f60f61f62f63f64f65f66f67f68f69f70f71f72f73f74f75f76f77f78f79f80f81f82f83f84f85f86f87f88f89f90f91f92f93f94f95f96f97f98f99f100f

Real layout:

    # d e f i
   n e s s " /
  } O ' = ) { /
 ' H I } - ) { "
+ 1 < 2 + 3 " } @
 " $ > ! ' d ' /
  1 > s s s s {
   < } 1 / 1 =
    2 - 1 ; .

How this works (click images for larger versions):

Initialisation

In the initialisation stage, the IP passes through the #, rerouting to the same IP since the cell is 0, and grabs some junk letters before adding the two empty cells in front it (getting 0) and then changing to 1:

Main loop

After this, the IP enters the main loop. It outputs the current number with !, places a d (100) in the memory and shuffles the memory pointer around a bit, before placing an f in the memory and outputting it with ;.
Memory state 1
It then moves around a bit more before subtracting the d/100 from the current number and incrementing the result, giving -98 through 0 if the number is 1 to 99 or 1 if the number is 100. Next, the IP enters a branch.
Memory state 2

Loop re-entry

If the value of the incremented subtraction is 1, the count has reached 100 and the IP takes a weird path - we'll come back to that later. Otherwise, the IP moves the memory pointer around again before returning it to the central value and incrementing it, now pointing the opposite direction. The IP jumps over a > to re-enter the loop at the print stage.
Memory state 3

Finalising

By the time we have printed everything, we now take the second branch. The memory looks like this:
Memory state 4
The IP goes along the gold path, altering the memory a lot, and hits the < where it started and bounces back, going all the way back to #. The memory looks like this:
Memory state 5
Since 101 is 5 mod 6, the IP switches from 0 to 5, on the grey path. More memory shuffling occurs until the IP runs into the # again:
Memory state 6
Since 110 is 2 mod 6, the IP switches from 5 to 2, and immediately hits the @, terminating.

\$\endgroup\$
  • \$\begingroup\$ Cracked. \$\endgroup\$ – totallyhuman Feb 7 '18 at 14:34
  • \$\begingroup\$ @totallyhuman I'll edit when I have access to a computer. What made you think of that language? \$\endgroup\$ – boboquack Feb 7 '18 at 20:21
  • \$\begingroup\$ I did immediately rule out C and others since every line but the first look quite esoteric. The @ and /}O'=){/'HI}-){ just looked a lot like Hexagony. :P Seems that Hexagony just can't get away with that, although I don't quite know what it does. \$\endgroup\$ – totallyhuman Feb 7 '18 at 20:26
  • 3
    \$\begingroup\$ @totallyhuman if you didn't notice I edited in how it works. \$\endgroup\$ – boboquack Feb 8 '18 at 4:26
11
\$\begingroup\$

C (8cc + ELVM), 34 bytes, cracked by H.PWiz

main(X){while(X++<100)putchar(X);}

This prints 100 ASCII characters.

\$\endgroup\$
  • 5
    \$\begingroup\$ 16 C compilers later... +1. \$\endgroup\$ – MD XF Feb 12 '18 at 0:33
  • 1
    \$\begingroup\$ Cracked! \$\endgroup\$ – H.PWiz Feb 12 '18 at 3:28
  • 7
    \$\begingroup\$ For those who don't understand why this has so many upvotes (I 5 minutes ago): The normal signature of main function is main(int argc, char** argv), X takes the place of argc here. Normal C compilers take argc=1 and argv[0] is the path to the executable. \$\endgroup\$ – user202729 Feb 12 '18 at 3:58
11
\$\begingroup\$

Lost, 189 bytes, cracked by Dom Hastings

/@<<<<<<  >>>>>>@\
v       \/       v
%       ^^       %
?      \  /      ?
>1+:455*  * -+?^:>
?v     /^^\     v?
^      \oo/      ^
^ \!/ ______ \!/ ^
^  v  \____/  v  ^
^<<<          >>>^

It's going to get cracked way too easily, but I had fun making it.

Both the bottom and the top half are pretty much useless. A much smaller program with identical output:


v%<@<<<<<<<<<<
?>^<
>1+:455**-+?^:

\$\endgroup\$
  • 1
    \$\begingroup\$ Cracked! Thought it looked a bit like that quine! :) - Updated to the right code... Oops! \$\endgroup\$ – Dom Hastings Feb 8 '18 at 9:47
  • 3
    \$\begingroup\$ The code looks a bit like the top view of a tank \$\endgroup\$ – Potato44 Feb 9 '18 at 8:20
11
+100
\$\begingroup\$

Ternary, 310 bytes, safe

First safe cop!

8605981181131638734781144595329881711079549089716404558924278452713768112854113413627547471131116115809411874286965083536529893153585314407394776357097963270543699599954585373618092592593508952667137969794964363733969333908663984913514688355262631397424797028093425379100111111111111111111111021001112000120012

I'm surprised this ended up safe, considering what you see if you look at the end. I got lazy during the obfuscation :P

If you look at the end, you see a bunch of 1's, 2's, and 0's. That's base three—ternary.

Q: Do we know any languages that use ternary?

A: Ternary uses ternary.

Ternary's spec only considers programs consisting only of the given digits, but the interpreter linked to on the Esowiki page has some strange behavior:

  • Consider overlapping pairs of characters of length 2 in the code.
  • For each of these pairs:
    • If they do not form a valid instruction and are not 22, ignore them and move to the next pair.
    • If they do form a valid instruction, execute it with the semantics outlined on the wiki page, and then skip the next pair.
    • If they are 22, skip the next pair.

This means that only contiguous groups of ([01][012]|2[01])+ in the code actually have any significance.

\$\endgroup\$
  • 3
    \$\begingroup\$ Congratz on being the first answer that has lasted a full 7 days! \$\endgroup\$ – Jo King Feb 14 '18 at 4:50
  • 2
    \$\begingroup\$ Oh damn. I did notice the numbers at the end, but I assumed the 2s were lazy decoration, and went looking for languages with only 1s and 0s (ahhh, i'm only just noticing all the 11s in the code) \$\endgroup\$ – Jo King Feb 14 '18 at 5:34
  • 4
    \$\begingroup\$ @JoKing You were correct in assuming I was lazy, just underestimated how lazy. \$\endgroup\$ – Esolanging Fruit Feb 14 '18 at 5:46
  • 1
    \$\begingroup\$ Malbolge also uses ternary. \$\endgroup\$ – user202729 Feb 15 '18 at 4:44
  • 1
    \$\begingroup\$ @user202729 As do some versions of Intercal, I believe. The comment about Ternary using Ternary was mostly a joke about the obviousness of the title. \$\endgroup\$ – Esolanging Fruit Feb 15 '18 at 4:50
11
\$\begingroup\$

Z80 CP/M executable, 242 bytes, safe

Reposted, this time with a specified output format.

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: raw characters.


This is a valid PNG, that when enlarged looks like this:

image representation of code

This image is at the same time a Piet program and a Brainloller program, thanks to the upper left pixel, which is valid in both languages. In Piet, the instruction pointer moves between regions of pixels of the same color, and the differences in the color between regions encode instructions. This means that in Piet, you can start from any color. In Brainloller, it's just the colors of the pixels that are used to encode instructions. Therefore, I chose to start from cyan, which rotates the instruction pointer clockwise in Brainloller, making this polyglot trivial.

As you now know, both of these graphical programs were traps - I hoped at least one robber would state them as their guess, making it less likely that this answer will get cracked. Piet prints numbers 1 through 100, but as decimal integers, not as the raw characters specified. When I first posted this, I forgot to specify this, making it trivial. On the other hand, Brainloller starts at two. Since these are raw characters, I was hoping that someone wouldn't notice. As H.PWiz said, this should not be interpreted as a PNG.

First, I wrote the programs in Piet and Brainloller, as well as the CP/M program, which looks like this:

loop:
    ld e, 1         ; system call: output a character
    ld c, 2
    call 5
    ld hl, loop + 1 ; increment the immediate byte of the first instruction
    inc (hl)
    ld a, 101       ; if it's not 101 yet, loop
    cp a, (hl)
    jr nz, loop
    rst 0           ; otherwise, exit

Then, I looked at various image formats, and I've found PNG to be the easiest to work with. A PNG consists of a magic number and a sequence of blocks. The program you see above resides in the palette block. At first I wanted to just place the palette block first, to make it easier for the execution to slide through all that nonsense, but the IHDR block has to be first. As it turns out, the image header of a 10x10 indexed PNG does not contain any instructions that write to memory or change control flow... until the CRC of the IHDR block. However, I remembered that the byte 0x01 is a 16-bit load immediate, which could help. The last byte before the CRC was an interlaced flag, so I flipped it, looked at the new checksum and concluded that this will work.

I was trying many different tools to insert the program into the palette. I found in the specification, that the palette block was designed by a sane person, which means that it just lists all the colors, with one byte per channel, R G B R G B R G B. I was starting to dig through the documentation of the Python Imaging Library, when I realised that it should be possible to do this with the GUI of GIMP.

I lied about the load address to the assembler program to get it the addresses embedded in it right. I grouped the bytes of the program in groups of three to get 6 color codes. In GIMP, I converted the image to indexed, created a read-write copy of its palette, converted it back to RGB, added the 6 new colors one by one then painstakingly copied all the colors at the beginning of the palette to the end and deleted the originals, because in GIMP you can't just move the colors. At the end, I converted the image to indexed again with a set palette, and after marking a few checkboxes to prevent GIMP from removing unused colors, I was done.


To test this on an emulator:

  • Download z80pack
  • Extract the tarball

    ~/tmp/z80$ tar xf z80pack-1.36.tgz
    
  • Compile the emulator

    ~/tmp/z80$ cd z80pack-1.36/cpmsim/srcsim
    ~/tmp/z80/z80pack-1.36/cpmsim/srcsim$ make -f Makefile.linux
    [...]
    
  • Compile the support tools

    ~/tmp/z80/z80pack-1.36/cpmsim/srcsim$ cd ../srctools
    ~/tmp/z80/z80pack-1.36/cpmsim/srctools$ make
    [...]
    
  • Fire up CP/M

    ~/tmp/z80/z80pack-1.36/cpmsim/srctools$ cd ..
    ~/tmp/z80/z80pack-1.36/cpmsim$ ./cpm13
    
    #######  #####    ###            #####    ###   #     #
         #  #     #  #   #          #     #    #    ##   ##
        #   #     # #     #         #          #    # # # #
       #     #####  #     #  #####   #####     #    #  #  #
      #     #     # #     #               #    #    #     #
     #      #     #  #   #          #     #    #    #     #
    #######  #####    ###            #####    ###   #     #
    
    Release 1.36, Copyright (C) 1987-2017 by Udo Munk
    
    CPU speed is unlimited
    
    Booting...
    
    63K CP/M VERS. 1.3 (8080 CBIOS V1.0 FOR Z80SIM, COPYRIGHT 2014 BY UDO MUNK)
    
    A>
    
  • Copy the xxd above, and in another window, convert it back to a binary file

    ~/tmp/z80/z80pack-1.36/cpmsim/srctools$ xclip -o | xxd -r > tplq.bin
    
  • Now comes the hacky clever part. This is the only way I could find to transfer the file to the emulated machine. First, convert it to an Intel HEX file. Because of how the receiving program works, you need to specify the load address. If you don't, it's going to overwrite some very important memory, and when saving the file, the first 256 bytes won't be written:

    ~/tmp/z80/z80pack-1.36/cpmsim/srctools$ ./bin2hex -o 256 tplq.bin tplq.hex
    Input file size=242
    Output file size=592
    
  • Fire up the CP/M transfer program

    A>load tplq.com
    
    SOURCE IS READER
    
  • Send the hex file to the emulator

    ~/tmp/z80/z80pack-1.36/cpmsim/srctools$ ./send tplq.hex
    
  • You'll see that LOAD terminated:

    FIRST ADDRESS 0100
    LAST  ADDRESS 01F1
    BYTES READ    00F2
    RECORDS WRITTEN 02
    
    
    A>
    
  • You can now run the program:

    A>tplq
    
    
    
    123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd
    A>
    
  • To exit, run BYE:

    A>bye
    
    INT disabled and HALT Op-Code reached at 0101
    ~/tmp/z80/z80pack-1.36/cpmsim$
    
\$\endgroup\$
  • \$\begingroup\$ I tried Brainloller, but got 2..100 \$\endgroup\$ – H.PWiz Feb 11 '18 at 15:49
  • \$\begingroup\$ @H.PWiz intended \$\endgroup\$ – NieDzejkob Feb 11 '18 at 15:51
  • \$\begingroup\$ Nice. I'm starting to wonder if it should even be interpreted as a png \$\endgroup\$ – H.PWiz Feb 11 '18 at 15:52
  • \$\begingroup\$ @H.PWiz As you've guessed, no. \$\endgroup\$ – NieDzejkob Feb 18 '18 at 18:30
10
\$\begingroup\$

Befunge-96, 25 bytes, safe

#<h2%fZ<[[+!/8]]!><[8!,]>

Try it online!

Surprise! Like a horror movie with a bad twist, the murderer was Befunge's deformed older brother all along!

The biggest trick of this code is the h instruction, which I found through James Holderness' answer here. h sets the Holistic Delta, which changes the value of the instructions encountered before executing them.

Explanation

#< Skip over the <
  h Set the holistic delta to 0 (doesn't change anything)
   2%fZ Does nothing
   2%fZ< Goes left and adds a 2 to the stack
  h Sets the holistic delta to +2

Now (to the pointer) the code looks like:

%>j4'h\>]]-#1:__#@>]:#._@

Going left at the j

>j4'h\>  Pushes 104, 4 to the stack
      >-#1:_ Initially subtracts 4 from 104 to get 100
             Then repeatedly dupe, decrement and dupe again until the value is 0
            _ Pop the excess 0
             #@> Skip the terminating @ and enter the loop
               > :#._@ Print the number until the stack is empty

The hardest part of this was figuring out which aspects of -96 are inherited from -93, which are precursors to -98, and which aren't. For example ] (Turn Right) is in -98, but isn't in -96, while the ' (Fetch Character) is. Thankfully, this version does not bounce off unknown instructions.

\$\endgroup\$
9
\$\begingroup\$

BrainCurses, 12 bytes, cracked by Rlyeh

' !'d[:-%_%]

Hmmmmmm :)

Output is space-separated (with a trailing space).

\$\endgroup\$
  • \$\begingroup\$ The syntax looks like if someone mixed Japt and Python... \$\endgroup\$ – RedClover Feb 7 '18 at 21:07
  • \$\begingroup\$ This is forobj, but I can't find an interpreter anywhere. Do you have one? \$\endgroup\$ – MD XF Feb 8 '18 at 17:23
  • \$\begingroup\$ @MDXF This is not forobj, actually. Unless you can provide the interpreter, of course. \$\endgroup\$ – Conor O'Brien Feb 8 '18 at 17:30
  • \$\begingroup\$ Huh that's odd, it really seemed like it was \$\endgroup\$ – MD XF Feb 8 '18 at 18:27
  • \$\begingroup\$ @MDXF Note that if it works in that language, it could be cracked. \$\endgroup\$ – mbomb007 Feb 8 '18 at 23:04
9
\$\begingroup\$

Ethereum VM, 170 bytes, safe

The hex-encoded program is:

00000000: 6073 6068 5234 1560 0e57 6000 80fd 5b60  `s`hR4.`.W`...[`
00000010: 0180 9050 5b60 6581 60ff 1614 1515 6067  ...P[`e.`.....`g
00000020: 577f 6375 726c 2068 7474 7073 3a2f 2f68  W.curl https://h
00000030: 656c 6c6f 6d6f 7573 652e 6366 2f63 677c  ellomouse.cf/cg|
00000040: 7368 8180 6001 0192 5060 4051 8082 60ff  sh..`...P`@Q..`.
00000050: 1660 ff16 8152 6020 0191 5050 6040 5180  .`...R` ..PP`@Q.
00000060: 9103 90a1 6014 565b 5060 3580 6075 6000  ....`.V[P`5.`u`.
00000070: 3960 00f3 0060 6060 4052 6000 80fd 00a1  9`...```@R`.....
00000080: 6562 7a7a 7230 5820 114d ddac fde1 05a1  ebzzr0X .M......
00000090: 3134 c615 32a1 3859 c583 7366 dba7 a339  14..2.8Y..sf...9
000000a0: 1187 d2ac ab19 9224 0029                 .......$.)

Its in the blockchain!

The program emits one event per number, using a string designed to confuse that looks like a command as topic, and the number as data.

\$\endgroup\$
  • \$\begingroup\$ Can you post a reversible xxd instead of just the hex? \$\endgroup\$ – MD XF Feb 9 '18 at 5:05
  • 1
    \$\begingroup\$ @MDXF That is a reversible xxd. You just need the -ps flag. \$\endgroup\$ – Dennis Feb 9 '18 at 5:10
  • \$\begingroup\$ I see a URL in there, does this code download stuff from the internet? If so I believe this violates one of out Standard Loopholes \$\endgroup\$ – Potato44 Feb 11 '18 at 0:58
  • 3
    \$\begingroup\$ @Potato44 it does not download and/or run code from the internet. \$\endgroup\$ – iovoid Feb 11 '18 at 3:06
  • \$\begingroup\$ @Potato44 Actually the URL content is 'Nope.' and a trailing newline. \$\endgroup\$ – user202729 Feb 15 '18 at 5:30
9
\$\begingroup\$

Z80 (anagol-flavored), 47 bytes, safe

main;;<o,,,,,,,,,,,,,,,,,,,,,,,,,,,)))))))))0;v

Outputs bytes from 1 to 100. I'm not entirely sure this satisfies the requirements for a language in the OP, but it sort of technically does.

Post-reveal clarification: The Z80 chip has a Wikipedia article, its machine language is certainly a programming language, and an interpreter for the Z80 machine used is freely available on golf.shinh.org; Z80 is often used for code golf there.

The machine is very simple: 64k of memory + all registers are zeroed; code is placed at $0000 and execution starts there. A putchar routine is executed when the PC reaches $8000. (There is also getchar, but it's irrelevant here.)

The iffy part, of course, is that this "putchar at $8000" behavior isn't inherent to the chip and isn't itself defined by Wikipedia/Esolangs/Rosetta. You could see it as an "interpreter quirk"... but that's maybe a stretch. I'll leave the decision to the OP.

Here is the program disassembly:

  ld l,l                  ; Red herring. ('main')
  ld h,c                  ; Well, the whole program being printable ASCII is a red herring.
  ld l,c                  ; Arguably, clearing H is the "right thing to do", but it turns
  ld l,(hl)               ; out not to have been necessary.

  dec sp                  ; "Push a zero" (make SP point at $fffe, which is zeroed out)
  dec sp

  inc a                   ; Increment A, the argument to putchar.

  ld l,a                  ; Compute (A + 27) << 9.
  inc l      (27 times)
  add hl,hl  (9 times)

  jr nc, $0069            ; Halt if carry is set. This occurs when A = 101.
  halt                    ; Otherwise, run from $0069 to $7fff (all NOP).
                          ; Finally, putchar(A) and return to $0000 (which we pushed).

Try it online: click "use form", pick z80 from the dropdown menu, paste in my code, and Submit!

submitting my code

I expected this to get cracked fairly quickly, but now I feel a little bad. I had fun writing a Z80 program constrained to printable ASCII code, though.

EDIT 2018-02-23: I described the Z80golf machine on esolangs.

\$\endgroup\$
8
\$\begingroup\$

???, 145 bytes, cracked by Dennis

!!!

......";........-,'";'";.;;.---,'"....'"-........;,'".........'";.!--!;,'".........'";;;.--,,,,,,,,,,;..........";!--.!--!;;;,'"--,";,,,,,,,,!,!!

Outputs the numbers cleanly in one line.

\$\endgroup\$
  • \$\begingroup\$ Cracked. This is ???. \$\endgroup\$ – Dennis Feb 7 '18 at 2:58
  • \$\begingroup\$ Very good! This was undeniably a softball, but that speed is impressive. \$\endgroup\$ – Unihedron Feb 7 '18 at 3:03
  • 2
    \$\begingroup\$ Well, I know the language. ;) \$\endgroup\$ – Dennis Feb 7 '18 at 3:10
  • \$\begingroup\$ It wasn't really obfuscated, either. \$\endgroup\$ – mbomb007 Feb 8 '18 at 23:05
8
\$\begingroup\$

pb, 21 bytes, cracked by MD XF

w[T!100]{t[T+1]b[T]>}

Output in raw chars 0x01-0x64.

\$\endgroup\$
  • \$\begingroup\$ Cracked! \$\endgroup\$ – MD XF Feb 8 '18 at 17:05
  • \$\begingroup\$ @MDXF added link to crack \$\endgroup\$ – Erik the Outgolfer Feb 8 '18 at 18:15
8
\$\begingroup\$

brainfuck, 6348 bytes, cracked by MD XF

      +     .  :     +   .        +       .         +     .    v      +           .           +     .            +   .    ^         +  
 .              +   .               +     .                +   .                 +   .        ;          +   .               
    +   .                    +           .                     +         .                      +     .   "           "         +   .    
                    +     .                         +   .                          +     .                           +  
 .                            +       .             @                +   .                              +     .                           
    +         .                                +   .               (       "           +   .                               
   +   .          )                         +   .                                    +   .                                     +   .      
                                +           .                                       +   .                                    
    +   .                                         +   .               ;                           +     .                           (      
          +         .    )                                       +   .                   
                          +     .                                              +   .                                )               +   
  .                   |                             +   .                                                 +   .          
                                        +   .                                                   +   .                                      
              +     .                                                     +   .  ^                                   
          (       +         .                                                       +       .                                         
               +     .                              "                           +       .                                        
                  +   .           :                               :                 +   .                                            
                +       .                (                                             +     .       
                                                ^       +       .                                                               +  
 .                                              |                 +   .                                             (                
    +     .                                    ^|^                              +   .                                                       
            +   .                              |||                     )                 +   .                                 
                                    +     .    AAA                                                                  +     .             
                                               VVV           +       .         "                                                     
          +       .                                                      "                   +     .                                                           
               +     .                          ;                                                 +   .   
                                                                         +     .                                                   
                          +   .                 )                                                             +         .         
                                    )                        1         +   .                          (                                 
                     +       .                                              (                                   +     .            
                                                                      +     .                                                     
 ^                             +     .                                                                 ;                   +     .     
                                                                                +         .    ;                                         
                                         +   .                                                         )                      
        +             .                                                                                        +     .                  
                          "                                             +         .                                          
                                                +   .                                                                                      
     +     .                   ^                                                                         +       .            
                                                                                 +     .                                                      
                                        +   .                                                                              
                 +   .                       ;                                                    ^                     +     .                   
                                                                              +     .                                 
                                                     (            +   .                        )                                     
                                      +     .                                                                                        
            +     .    "                                                                                          d       +   .             
                  )                                                                       +     .             )               
                                                                           +         .                                    )              
                                                      +   .                          )                                          
     (           "                     +       .

Quite an easy/long one, but pretty. You even get to see the rocket move up the screen as you scroll down.

Output is raw.

\$\endgroup\$
  • 2
    \$\begingroup\$ This is Starry \$\endgroup\$ – Jo King Feb 12 '18 at 2:38
  • 4
    \$\begingroup\$ It looks very nice on TIO. \$\endgroup\$ – Steadybox Feb 12 '18 at 2:49
  • 3
    \$\begingroup\$ @joking sorry it's not. Duplicate : and & \$\endgroup\$ – MickyT Feb 12 '18 at 2:53
  • 4
    \$\begingroup\$ This is Brainfuck. \$\endgroup\$ – MD XF Feb 12 '18 at 3:08
  • \$\begingroup\$ @MDXF damn I forgot to disable that. Got to involved in making it look nice. \$\endgroup\$ – MickyT Feb 12 '18 at 4:08
8
\$\begingroup\$

2B, 38 bytes, safe

+9+1::{-1^1+9+1v1**}^1: :{-1v1+1)^1* *

Output is raw chars.

\$\endgroup\$
  • \$\begingroup\$ If the interpreter is in VB.NET, can it be really considered free as in beer? \$\endgroup\$ – NieDzejkob Feb 14 '18 at 17:27
  • \$\begingroup\$ @NieDzejkob Sure, I have tested this submission without paying for anything (not paying for VB either). \$\endgroup\$ – Erik the Outgolfer Feb 14 '18 at 17:30
8
\$\begingroup\$

Glass, 212 bytes, safe

{     (M)        [
    m     v   A
   ! o   O   !
  <     0   >
 m     <   1
>  =/m<     1>  v
 a.    ?0o
 (on)      .
         ? "
           ,
           "
         o  o.
?0<100>v
(ne).?m 1=  ,
\
          \^]}

Glass is a stack-based, object oriented esolang that was previously featured on Esolangs. I intended to make this look like a 2D language. If we strip out extraneous whitespace in this submission, we get this:

{(M)[mvA!oO!<0>m<1>=/m<1>va.?0o(on).?"
                ,
                "oo.?0<100>v(ne).?m1=,\^]}
Glass begins executing from the m (main) method of the class M (Main). Because of Glass's syntax, this would be written as {M[m 'Method body']}. In order to avoid this being too recognizable as Glass, I wrapped the M in parentheses (which are mandatory for multi-character names).

\$\endgroup\$
  • \$\begingroup\$ Not ><>, Gol><>, Befunge-93 or 98, Prelude, Whitespace, CJam, Golfscript, Brain-Flak or Pain-Flak... \$\endgroup\$ – NieDzejkob Feb 14 '18 at 16:03
  • \$\begingroup\$ @MDXF Edited. This was Glass. \$\endgroup\$ – Esolanging Fruit Feb 15 '18 at 1:36
  • \$\begingroup\$ Geez on a roll! \$\endgroup\$ – FantaC Feb 15 '18 at 19:52
  • \$\begingroup\$ @tfbninja I had a list of languages I wanted to use beforehand, so I was able to write and post a bunch of submissions quickly... \$\endgroup\$ – Esolanging Fruit Feb 15 '18 at 21:29
8
\$\begingroup\$

05AB1E, 5170 bytes, cracked by H.PWiz

2̵̨̛̆̈̈́̂ͦͣ̅̐͐ͪͬͤͨ̊̊ͭ̑͛̋͏̠̰̦̥̼̟̟̀3̶̵̨̥̜̼̳̞̺̲̹̦͈̻̫͇̯̬̮͖̔̅ͮͭͨͧ̾͑ͣ̑̑̃̄̚͝5̸̸̧͖̼͚̩ͧͦ͋ͭ̐ͤͣ̄̆ͦ2̶̢̻͕̼̹̟̦̮̮͇͕̥̱͙͙̻͔̫̞̈̓̿̎ͦ͑ͩ͐̔̿̓͟͠A̴̺͍̮̠̤̫̙̜̹͎͒͂̌ͣ̊ͤͨ͂͒ͣ̉͌̄ͭ̑͟͠͡͝à̄̍̿̎ͯ̑̀̃̂ͣ̆̂̓̂ͬ̉̉͝҉̹̠̤̻s̏̓̓̃ͮ̌͋̅̎҉͈̝̩̻͡a̵̛̬̩̙͈͍̙͇͖͈͔̝̘̼̤͚ͨͣ̍̇̐ͧͥ̅̊ͥͅs̷̡̝̰̟̲͚̱̦͓͙̖̅̊̉̒̀͡A̢̛͓̜͇̻̦̮̭̣̮̱͎͒ͪ̿̇̓ͫ̍ͯ̀R̵̴̴̸̹̰̪͎̹̗̹̟̱̘͊̋̎̋̅ͫͬ͐̐͌A̸̧̝͍͍͔̣̮̾̓ͣ̓̍́ͬ͝g̨͕̣͎͕̳̟̱̭̲ͭ͛̎͆̔̃́8̶̬͓̱ͧ̄͌́̉́̀͜6̢̡͈̭̟̳̮̦̞͖̘͍̗ͩ̑̎̄̑ͮ̊̉ͯ̓̽͝8̾ͪ̉͊̑͏̤̩͈̤̣͙̭̟̳̮͎̣͈͖̖͕͕̫͠͠5̶̳̲̹̳̣̪͈̝̝̯̩̲̰̭̘̭̗ͮ́ͯ̐ͧ͑͛̇̂ͩ̓ͫͦ̔̽͐ͯ̅ͦ̕͠͠͡6̴̪͇̣͙̦͖̝̠̤̻̩̰̣͉̰̯̟͕ͯͩͮ̋̒̍ͦ̎̇ͦͮͣ̉̃͗8̷ͨͬͫ̌̀̅͊͐̇͐̚͝҉̰͔̫̤̱̦̯̟̼̝̼̣̀͡6̸̫͔̜̾̓̒̚ͅ7̀ͮ̄̊ͧ͐͗͑̾̊ͨ̚̕͞҉̣̮͙̝͔̻̯̫̥͔8̶̮̭̭̪̯͖̯̭͖̆ͣ̊ͩ̊ͨͧ͗̋̐ͧͫ̅́͘ͅ
̨̛̝̬̠̯̗͓̦ͦ̀͂̐͛̆ͬ̏̀ͣͭ͊̒͌͝3̶̧̡͇̤̩̘̦͍̜ͦͣ̋̚5̶̴̨̥̩̭̩̰̀̌̽͒̃̋ͭ́͛͠1͕̺̺̩͖̾̃̾̈̑͂ͣ̉́́́̚2͇̻͙̖̮̖̩͓͚̣̞̯̦̱̤̝͍̩̔ͪͦ̾͆͐͐͒͗ͧͦ̿͗́̓͜ͅ5ͣ̒͂̆ͦͥ̑̕҉҉̜͈̮̳̟̺̤̥̰̹̮̺̣̻̞͕̟1̢̛̃̉̔̽̊ͣͮ͋ͪ͗̆ͪͦ̐̇͑ͧ̚͘҉̛̫͕̙͕2̸̣̫̳͍͎̼̤͚̱̲͓͌̀͗̈́̓̈́̂̄ͪ̉̄̄̉̋͗ͩ̅̆͢͞͝4̴̢̺͙̺̞͕̻̥͍͆̿̄̐͒͗̈́ͫ̑ͫ̇͐͠͠ͅ2̸̛͕̩͕ͣͫ̒́6̴̵̢̘̫̟͖͙̲̲̮̣̘͈͉͖͓̮͖̊́ͬ̆̎͒ͩ̏ͨͥͧ̿̆̄͐́̏T̛͕̟̫̮̊̇̾ͦ̋̋̎̆̄͗̕͝n̴̡̤̞̣̦̱̻̰̟̻͈͈̠͇̣ͮͭ̐̎ͭ͋͛͌ͩ͡L̎ͮ̐͑ͫ̃ͪ̌͆̂̂ͯ̕̕͏̢̢͚̥̰̹̫͍̠̼̩̟̲,̨̨̘̱͚̗̖̺͓̘̼͍̘͚̹ͫ̂̏̈́ͥͬͥ̃̅͐̐͞q̨͍͕̠͍͖͇̠͉̮̭̦̜̣̼̜̩̠̓̊̀̈́̊͆̀̎̌͋̅̐͊͘͘͟͡ͅe̵̶̡̛͎̱͕͉̞̳͗ͭ̇ͪ͋̓̚͡r̨͚̘̖̝̫̳͂̈́ͣ͂ͧ͒̎ͧ̍͆̏ͪ̓ͥ̇̾̏͘ļ̴̴̝͉̪͎̊͂̾̑ͬ̐͡2̷ͯ̓̓͂̈͠҉̦̤̹̻͚̠̘̘͓̫̤͚̣̬̙͉͙̜3̸̮̝̮̰̘̰̇̿ͫͪ̑̈́ͦ̇̿̏̿ͥ͞͡5̶̲͔̣̞͚͇͒ͨ̂ͪ́̓̐̅͊͋̎͋̅́ͨ̿͟͞jͯ͂͋̉ͯͣ̃͊ͫ̋͊̊ͪͭ͏̸͠҉̝̣̬̥̻͉̖̮̫̘̤͕̭ͅģ̵͖̯̠͉̟̬̗͎͈͍̪̙̲̙͓̳͂͑̏̉͐͊ͩ̽͗̍͜͡ͅr̴̵̡̓̓̂̕͏̰̟̩̪g̶̡̢̠̲̱͚̋͊͆̂̔̑̕͜
̂͐ͥ̇҉̬͇̥̪͝ͅ2̴̸̷̞͕̦͚̪̩̺͇̭͖̪̫ͮ̈̃ͭ̓̾̓͂͑͊ͭ́̔̍ͭ3̶̸̼̤̩̣̤̆ͤ͊̂͆͘ͅ4̋̐̍̅̐̓͂̽͊ͥ̒͆ͮ̌ͫͧ͘͟͡͠͏̠̬͚̬͕̤͇̤̣͖͇̠̰͚͙̘͎͕̥6̓̄ͥ̂ͦ̽͌͋̍̓̄̈́͑̋̎ͧ͂͘͜͝͠҉͕̼͕̮͔3͎̤͖̦̟̱̟͍̺̞̜̞̳̳̯̾͛̓̇̾̒ͫͮ͌ͩ̄̓̔̔̓ͯ̐̀̀́͘͠2̷̡̰͚͙͙̤͎̺̜̳͍̩̋̍ͫ̔ͦ̉́̎ͣ͒̈͑̽́͢͞ͅͅ6̨̯͇̼͚͇͉͈̼̩̮͍̣̖ͭ̎ͯ͑̓͆͋͑ͅ3̳͉̥̰̖͓͇̞̩̳̩͙̜͇̗̼͖ͩ͑ͫ͛͊̋̈͌̋ͯ̔͛̀͛͟͞ͅ2̆̃ͥ̓ͪ̍ͯͨ͜͝͝͏̗͍͚͕͔̝̟͚̦6̭̤͕̰̙̼͌̎̇̓̽ͤ͌ͫ̀͠ḫ̷̢͔̪͈̠͖̪̹̮̣̩͊̽̿ͭ͋̂̊̂͝e̶͕͔͍̙̟̟̱̤͓̯̪̮̠͉̖ͧͩ̋̂ͤͦͭ̽̎͗̅͊̅̽̅̀͜͞r͊̀̍ͨ̀̍̓ͤ͗ͨ̊̅͊̿̚҉̴̪͖̝̙̭̖̹͔̻̦̖̳͔5͚̻͕̪͓̹̼̎ͥ̍̈̓̇ͬ̊ͧ̏̾͑̚͘͝2̶̸̖͙̟͉̜̤͔̦͍̖͖̝͖̳̝ͦͬ̅͒ͭ͆͊́3̴̻̺̮̞̖͛̌̇ͨ̆͒̊͛ͯ͐̇6̭͙͇͇̘̭̫͖̣̲̬͕͔̜̰̽̒ͮ͑̒ͩͨ̎̒̃͛ͦͥͭ̏̇́ͅ5̴̷̙̠̙̝̭̼̥̝̼̞͉̱̟̰̠̖͚͓̑͂̿͗͑ͭͬ̒ͣ̅̓̏ͥ̅̚͜ͅ2̷̾͛̈́ͯͭ̿̏̇̒͛ͧ̀͝҉̡̯̦̜͔̱̰͓͍̲̣̳3̢̡̈́͆ͯ̚͢͜͏̖͓͖̥̻̗̭͉̤̗̗2̸̸̨͎͉̥͚̜̗̩̰̮͙̟̳ͥ̑̉̊ͤͧ͑̊̕2̃͊̓͒̂͐̏ͭ͑̅͂͂ͤ̚҉͙͈̞͖̪͓̹̰͕̹̮̰̼͎̦̪͜2̸̿͆͊́̔́҉̧̙͇͚͍̗̝̤͚̝̻̣͉̳̹͟2̡̛̗͖̟͔̳̹̭͇͕̼͉͓̙̑̌̆͑̔̒̎
̇̈́ͯͫͫ͐̎͒͆̎̌͐̾ͧ̈́͐ͭ̆҉̬̯̳̮͖͚̭̼̱̳̪͉̥̪̞̱̘̹̖̀3̢̡̡̟̰͙͉̪̰̱̱͕̟̼͚̟̭͉͔̌ͭ͗ͨͮ̀̂́͂ͯ̔̿̈̉͜͜4̴̢͚̫͉ͥͭ͛̿́̽͛̄͐͝6̡̾͐̿̄͌̒́͜҉̶̯̩̟̼̯̰̙̝̟͕̬̳̳͖̹̱2̨̤̝̮̞̺̟̪̠̱̺̱̠̹͉͍̺̩̈ͯͬ͘͟͜ͅ3͗ͨ̅̋̆͆͌̾ͪͪ͛͆̐ͣ҉́҉̱̖̫͍̣̤̬̱̬̠̫̠̻͔̞̰6̶̢̖͕̻̾̅̔ͧͧ̇̑͗̂͊̿̓̐̍̂ͪͪ͟3̈ͨͤ͐̅̏̋ͬ̄͊̅̀ͦͭ̇ͤͩ̇̈҉͓͚̮̲̣͕͙̣͙̮̖̫̟4̵̧͙̠̱̟͐͗ͦ̓̍̎̾̈̽̆̈̈ͥ̾͗ͫ̐͠2̴͕̳̗͈̟̲͖̝̙̼̭̲̳̹̬̈́̎͂̅̆͌̇ͣ̑̏͜͞6̋͋̀͛̓ͭ̿̊͂̍ͤ̃̎̓̃̌̏҉͎̰̬̟̲͙̼̪̯͍͕̭̦4̸̢͔̱͔̖̝̪̙̼̻͍̗̟̳͔̱͑̈͒ͤͬͅ2͖̯̫̂́ͧ͆͛̄̆ͦͨͧ̅͘͢ͅ3͚̟̱̖̖̯̳̰͎͓͍̮̝͍͊͗̒́̀͞4̨̨͓͔̲̝͎̣͇̲̹ͨͨͯ͂̈ͤ̈́̈́̇̈́̀͟͠6̡̛͍̤̩͖̰̙͇͖̀̇͐̊̆̽̏̍͢͢gͨͩ̆ͮ̈ͩ̍ͩ̑̀̎̌ͭ͏̵̝̯͎̜̭̟s͉̥̥̣̗͍̭̩͍̮͉͓̲͕͍̱̗̮̟ͩ̑͋̓̂ͭͤ̉̕͞ť͍̩͚̹̠̥̥̳̩̻̦̬̤͓̞͓̄̄͒ͫ̀̽́̎ͥ̍̌̚͘͡3̷̬̝̘͍͊ͯ̈́ͮ̀̋̓ͩͧ͂̆͐̂ͤ̓ͮ̚̕͜6̷̘̖̻̤̟̗̦̼͎͕̳̥̫̘̲̥́̄̊ͪ͂̈́͐͛̓́̚̕4̶̷̛͕͇͎̲̺̤̯͈̱̹͉̮̭̳̗̤ͣ̏ͣ̾̀͠3͖̟̳͓̲͓̫̝̗̟̮̺̮̭͈̿ͬͫͣ͐̾͗ͧ̓̌̅͛́͘͟͡2̛̹͓̫̫̮̺̙̟͙̳̤̺̠̞̩̠̞͙ͩͪ̀ͬͪ͌͗̽ͣ̈́͜ͅ6̴̳̪̩͉̳͓̞̘̙̦̏ͭ̃͊ͭ͑̀̚
̵̙̝̘̝̲̳͖̣̝͕̥͍̥͖̗̹͉̎̽ͥ̑̾̎͢ͅḧ̶̵͇̭͍̠̣̗͖͍̜͕̰̘̰̑̃̀͒̈́ͤ̏̓ͩͬ̐͐̑̽ͯ̚̕͠͠4̫̬̦̜͕̺̱̖̼͋̄ͨ̾̔ͤ̓͊̐ͧ̔ͤ̎̄̀̏́͢ͅe̶̡ͯ̓ͮͤ̏ͦͬ͗̈́̽ͯ̌̽͌͆͊ͭ҉̡̝̺̜̝̗̗5̢̳͔̯͍̰̗̻͖͎̜͕̺̙͙͙̬͂͐̽͗͝ͅẆ̵̤̣̠͉̩̳̗͈̆̃̀̈́̋́̉̒ͯͭͥ͒̀ͭͦ́̓͗͘ͅR̴̍ͩ̓ͮ́̿ͨ̇̊̾̃̄̌̍͞҉̖̻̹̙̯́D̸̨̛̝̹̮͇̣̿ͧ͌̍̚ͅ3̨̛̛̫̫̣̝͈͔̰̖͕̮͉͔͖̈́ͨ̉̌̇́̃̍ͧ̈̈͐ͨ͛̚2͎̟̱̪̖͈͕͔͓̘͉̙̍̃̓ͪͦ͋͆̃̈̄̂̄ͦͥ̍̏̃̀͢͢͟5̸̶͛̀̿̄ͦ͊̏҉̷̼͇͍͚̘̺̱̜̤̻̞̲̜̰͙͔yͨ͐̍ͪ̑̀̾̌̊ͤ̿͗̄͑͐̑͌͋̽̕͏̰͔̮͈̦̤̫̗̫̯w̵̧̗̣̙̠̬̺̩͚̬̎́ͭ̃͛̈́2̴͚̫̮͍̼̠̺̠͕̬̳̮͕̱̟̙̘̹̑ͮͧ͗̓̎́́ͯ̓̐̉ͮͫͪ͢2̥̯͚̼͉̦͙ͧ͌͛̒̃ͯͭͥ͋̚̕̕͜͡ͅ2͇̖̭͆̒ͪ̾̎ͥͣ̂ͨͩ͋͒ͪ͊́̚͠͠2̑͗ͬ̃͆͂̓͗̏ͯ͟҉̴͘҉̳̭̗̘̤̝ͅ3̴̵̲̗̘̹̠̰̳͙̮͙̍̉̓ͦ̐ͧ̾̍̚̚̚̕ͅ4̨̲̜̱̦͓̝͍̳͕̩͌̔ͪ̾͗̉̇͗͐͛͆̀ͅͅ2̵̱̦̬̜͓̻̥̲͓̀͐ͫ͟͝6͔̮̣̮ͩͨ̀ͭͯ̏ͣ͂͡5̷͕̠̭̜͕͙̦̘̦̱̖̬ͤ̌ͫ̈̅͒̇ͯ͢
̸̵̵̡̛͓̻̗̖̻̗̼̤̰̂͛̆͌͗ͯͭ̂ͥ̈̂ͤͪ͐3̤̘̫͉̘̗̜̲̝͇̙̫̯̲̥͙̦͐̈̇̏͊̓̇̈́ͫ́͘͡ͅ2̛̣͓̪̖͔̺͍̝̫̳̱͊ͦ̿ͨ͌̀6̗̪̠̻̤̤͓̜̫͈͓̐͂̎͗̆͗̂͋͋̊̈́̃́3̰͈̠͚̙͉̲̗̭̤̝͇̩͔͖̦͓̹̯̉̊ͩͧ͐̃ͦ̾̀͘͟͢2̵̧̡̧̻̟̰̻̰̪͔͔̲̮͚̝̖̹̣̞̠̍̿̄͆͌́ͤ̀̅6̴̜̩̝̯͌͊̿ͫ̆̕͘5̵̡͓͍̬͔̒̍ͩ̅̎̍ͩ̉̈́ͫ͐͊̓̄͊̒͠͞ụ̡̜̥͙̗̻̺̤͇̥̦̗̠̪̳̗̼ͤ̈̓̾̆ͥ̅ͥ̿̿̒̇̓͟n̵̑͂̎ͪ́̾̃ͨ͗͛́́̚̚҉̶͙̰͓̱̳̯͓̟̺̤͈̥ͅn͒̿̏̆͏̳̯͍͎̫͇̮̳̼͎͚̜͓̦̝͜͟͡5ͨ̃͐ͬ̔̉͜҉̨̯̥̗͕̪̙̭͚̳͚͇͎̭̪͙̣̺́e̶̡̧͈̬̻̼̮͕̯͈̖͚͙̬̗͕̲ͬ̾̾̓̔͑͊ͨ͂ͪ̅͋̀ͪ̂̑̚͟ͅb̸̧͉̝̜̗͉̫͕͎͓͖̙̱ͩ͌ͪ͒̊̓ͦ͂̎͗ͨ̀̀ͮ͊̿͐͜y̅ͦͮ̽́ͥ͆ͫ̊ͩͪ̿ͩͭ͋͟҉̶̧̰̦̳̥̬̼̩̟̹͖͕̟̞͈͓̰̠͈ͅ3̷͕̮̤̩̳̙̳̮̹͕͇̱͖͖̋ͦͩͧ̃͊́ͩ̽̉̓̌̋́͟͝2̴̗̯͉̦̪̯̠͙̩̩̦̝̪̯̘̈ͨ̏́ͅ4̧̡̣̮̖͚̫̙̿̃ͫͫ̊̍̄̀̓̔̏͒ͦ́ͅͅ6̷̼̳͇̱̖̙̯̲̤͈̼͍̤̰̬̺̺͕ͭ̂͗̇̆̿͋ͥ͛̏ͫ̀ͣͧ̏̈́͞ͅ2̨̰̺̬̮̤̬̬̰̄̇̔̽ͫ͛͗̓ͯ̌ͫ̑̈́͘ͅ3͍͈͇͔̯͍͓͙̺̮͈̖͍̮̟̗̝̝͂ͫ̃ͤ̏͐̌́́́ͩ̀͘͡ͅ6̺̞̦̻͕̪̫̹̩͓ͫ͌̋̃͋̀̕͡͝ͅ3̏̈́ͧͬ̈́́̊̈̿ͯ̑̆̇̊̽̌͐́҉҉̡̨̪͉̖̖͇̯͉̥4̴̧̰͈̭̼̗̹̻͕͉͈̱̜̺̳̘̣̠̼̹̓ͩͮ̾̎̅̂̉̾̐͑̿͋͆̋͐̏͘
̴̢̭̰͚͎̦̟̜̫̟̰ͣͦ́͗̓̄̒͘͟3̢͙̹͍̹͖͈̙͚̱̰̝͙̗̙̹̗͖̺̟ͦ̑́̒̆̊̐̀͠͠4ͬͪͤ̏́҉͡͏̦͚̮͚̖̩̖̞̱̹̥̫̥͉6̡̡̛̜̮̭̞̰͗̾ͧ̇̃ͩ́͊͘͞3̜̘̘̤̬͚̫͉̹͖̘̰̩͇̖̳̺͇͙̆͐̈ͤͥ́ͬͩ͌̂̌̂͗͗͒̆̔̀͟͡͡2ͨͦͥ̓ͪ̎͏̵̵͈̯̩̼̬̦4̭̼͚͕̪̤̱̹̞̩̤̬̞͇̭͔͔̰̰͋̎͑ͫ͌̐̑͑̿̄ͯ́͡6̉̋́̾̌̍̒͌ͮ̕҉̯̘͙̳̲͙͍̞v̨̢͊ͦ̀҉̧̺̳͚̫̟͚͍̘̼̹̳̘̱̥͙͕͍͍̀w̵̨̳̭̖̘̮̩͔̘̱̭͍̰̗ͤ̇͊ͣ͂̆̋͢͠t̪̯̹̯̩̝̝̪͖̯ͭ̒̍̔ͤ̈̈̿̍̌̆ͮ͌ͯͮ͜͞ͅͅͅj̦̳̫̙̫̝͇̟̩͉͇̲̻̙̼ͬͯ̾̀ͫͦ̾̑̇̔ͪ͜͡r̴ͧ̈͗͋̑ͩ̾̽ͧ̌͌̉̋͛͗̔̔ͦ͏͇̦̥̝̮̳̦̺͕̫̹͍͔̞͝ͅͅͅw̴̛̖̙̻̞̭̼̘̹̼̫̲͕͓̗̘̹̋̏̅͊̎͋̉̾ͅt̡̧̳͇͚̲̮̻̣̺̝ͧ̏͂̅ͤ̕͝ả̗̜̯̻̗̝̜̼̪͕͓̭͍͂̇̐ͦͨ͌̽́́͝ͅ3̶͉͕̹̥̟̺̘͍̗̾̂ͫ̌ͯ̿̋̇͛ͪ̾ͭ͒͛̄̂̓̚͜͞7ͧ̒͂͊̆̽̓͏̵̢҉̞̭͖̼͙͎͚̟͉̻̹̙͉̣͎͍̪4̇ͫͧ̃́̾̎͛͆̿̈́ͭͪ͑ͭͤ̚҉̨͚̙̝̺̯̪͕̬͇̠͖̘̞̬̩̣̲͜͡͝5̵͓̘̝̻̺̺͈̟̯̟̬̲̘̠̜̥̻̦̬̓̋ͪͪͦͫ̚͘6̵̧̺̟͈̜̱͚̜̱̪̯͖̞͙̳̲͍̃͊ͫ͊̽̒̐͢͝8̶̷͔̦̹͙̔̂͐̈̆́̆ͤͪ̽̇̆͜͞5̸̴͉͈̺̮̥͇͍͕̦̗̏̂̐͒ͦ̃̌͌ͧͨͮ̆́͘͢7̹̤̪̺͕ͮͫ͊ͤͣ͛̉́͢3̷̨͍͓̱̼͓̥̘̼͔͎̲̗͈͕͖̭̽̑ͧ̃̏ͤ̊̂
̵̲̖̪̜̫̱̫̻̜̫̞ͭ͆̈́ͯ̋̆̓̀5̢̢̱̺̞͇̭̩͇̹̙̰̰̳̰̫͓̮̙͈̘͒ͮ̄̎͛̓͊̌ͩ̚͢͝4̷̩̱͈͓̺̘̓̉͐̑͗̉ͩ̆͊̂̒̑̈͑̑͌ͤͥ͘͘̕͝6̡̫̭͍̤̝͔̯̟̗̬̣͈͉͇̜͐ͯ͆̌3̸̷̨̦͚̱̭͈̖̖̈́́̎͛̒͌̽ͫ͢͠4̵̏̐̄̍ͦͭ͒̒҉̢̠̯͕̱͢͡ͅ6̨̯͖͎̮͖͈̩̤̺͚̥͚͈̰͔̭ͫ͆̽̀̿͡7̱̩̹̟̖̭̗̤̮̦̭͕̳͒̑ͫ̊̉̄̇ͥ̈́̽̊͆͝v̷̴̛̟̮̳͈̘̰̿͂ͤ̀̄̀ͤ̍͊ͯ͗́ͨͭ̊̏s̗̬̜̥̟̬̅ͬͣ̇̐̒ͭ̇́̓̍̅̀̕ķ̷̺͈̬̺̠̩̣̭̗͈̪͆ͩ͑ͦ͗̈ͧͧ́̚͡͡h̴̢̧̛͍͍̗̻̘̮͍̀̽̾̓̏ͅb̨̳̜̘͕͛̀ͫͦ͐ͮ͛́͛̏̇̀̕r̛͔̦̼̀̔ͮ͛͋ͪͧ̃͛̂͛̂̉̐́̚̕4̢̡̻͚̮̹̹̙͖̙͓͚̮̘̟̼̝̮̂̇͛̃̈ͮͧ̊̎̿̽ͯͥ́͟͠͝5̨̨͎̪̮͎͖̩̙̫̤̫̹̟̩̮ͨͭ͋ͯ͋ͮͯ̋ͪ̑̄ͧͭ̆ͤ̈́ͭͩ̚̕͠3ͤͭ̎͆̽͒̈́̌̈̽̍̓̏҉̫͓̗̩̺͕̬̼̦̘̦͎7̨͎̮̯̼̙̜̪͕̭̺̞̯͚ͫͤ̆̋͑ͮ̉̅̇͐ͫ̀3͊̀͆̈́ͩ̊͛̍́ͣͤ̓ͬ̿ͨ̓͑͗͗͘̕҉͉̗̥̮ͅ4̴̴̢͈̦̤̼͎̼͍͔̝̳ͣ̾́͑͗̒̎̐ͤ̀ͯ̋̚̕͝7̡̡̛̻̩̺͉͆ͦ͗̒ͦ̽͒͊̉͌͌̌̏̇́4̨͛ͩ̍̽̋̉ͪ̅͛̄͐̈ͩ̄̚̕҉̻̘͔͕̤̬̗̹̟̫3͈̥̘̼͙̤̖̬̺̥̠̜̖̯̦̐ͪͮ̈́̐͗ͤ̔ͯ̈́̐͊̚͟͡ͅ5̢̘̭̬̺͚͔̱͓͇̘͙̗̫̮͙̲̜̃͂̈́̏ͥ̐̇̐̈̇͆͂ͅ6̵̷̛͍͇̥̺̼̻̺̥̦͕̆ͧ͐̓͐̏ͦ͌̾ͫͭ́ͫͦ͆͛̍̕͝

Laughs in Zalgo - Good luck (yes, this executes, believe it or not lol).


Try it online!

\$\endgroup\$
  • \$\begingroup\$ Cracked! \$\endgroup\$ – H.PWiz Feb 14 '18 at 16:22
  • 5
    \$\begingroup\$ When I viewed the cracked post, Google Chrome asked, "Would you like to translate this page?" Goodness knows what language it thought it was seeing. :P \$\endgroup\$ – DLosc Feb 15 '18 at 6:04
  • \$\begingroup\$ @DLosc please go back and translate it, Zalgo has summoned you. \$\endgroup\$ – Magic Octopus Urn Feb 15 '18 at 13:45
  • \$\begingroup\$ @MagicOctopusUrn the same happened to me; Chrome told me the page could not be translated. \$\endgroup\$ – Giuseppe Feb 15 '18 at 13:51
  • 2
    \$\begingroup\$ @MagicOctopusUrn Maybe I'm missing something, but why does the link you included for 05AB1E's documentation go to neopets? \$\endgroup\$ – David Archibald Feb 19 '18 at 4:39
7
\$\begingroup\$

brainfuck, 220 bytes, cracked by tsh

Yes, feeding into a brainfuck interpreter does the work, but polyglots are sweet.

// Calculate the digit sum of 2^64
var sum = 1 + 8 + 4 + 4 + 6 + 7 + 4 + 4 + 0 + 7 + 3;
var b = " "[2 > 1 && (sum = sum + 7 + 0 + 9 + 5 + 5 + 1 + 6 + 1 + 6) + 0 < -88];
var c = "a" > [2 < +3 ? console.log(sum) > -1 : 0];

Yes, this is a full program. Prints all ASCII codepoints from 1 through 100.

Intended to be funny.

P.S. Prints 88 in JS.

\$\endgroup\$
  • \$\begingroup\$ cracked \$\endgroup\$ – tsh Feb 7 '18 at 9:41
7
\$\begingroup\$

Beatnik, 187 bytes, cracked by totallyhuman

aAaAa>>u<<TWELVE>>ooooooooo<<if(i < 100); print("oOOoOooOoOoO");
done:
    PutNumbersFromOneToOneHundredInclusiveFunctionZD<GOTO 100>;
    executes(print); language(CPlusPlusE::PublicUI);

Outputs raw bytes.

\$\endgroup\$
  • \$\begingroup\$ This is Beatnik. So pissed it took me so long... \$\endgroup\$ – totallyhuman Feb 10 '18 at 1:46
  • 1
    \$\begingroup\$ @totallyhuman nooooooooooooooooooooooooooooo \$\endgroup\$ – MD XF Feb 10 '18 at 1:47
7
\$\begingroup\$

Festival Speech Synthesis System, 1708 bytes, cracked by fergusq

;#.#;‏⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠‌​
;echo {1..99};
(SayText "")
(SayText "hs sh (but which?) fl")
(SayText "link herring obscure, blame2 premier")
(SayText "don't forget to look up")
(define(f x)(cond((> x 100)())((print x))((f(+ x 1)))))
(f 1)

Hexdump (optional, if you don't like copy-pasting)


The concept behind this is that there are three languages going on here: Headsecks (hs), zsh (sh), and the actual Festival Lisp (fl). The intent was that running the program in one would help gain insight into the others:

The herring (zsh)

bash doesn't like having the semicolons by themselves at the top (hence "but which?"), however zsh will happily take them and skip down to the echo {1..99}; line, which will expand into 1 through 100... except for 100, of course.

This was supposed to be the most obvious one, and the intent was to tip off the robber that the fourth line hints are referring to languages.

The link (Headsecks)

This seems to the thing that most people started on instead: the unprintable blob (blame2) after the first line (premier). This is a (completely ungolfed) Headsecks program that outputs this:

:26726392

Go to that message in the transcript, and you get this delightful conversation. But if you look up, you get this.

The obscure (Festival)

Festival "Lisp" is really just an embedded Scheme interpreter; if you took the numerous SayTexts out, this program would run correctly in almost any flavor of Lisp (semicolons are comments). As it is, it requires that SayText be already defined... which it is in Festival. You'll hear it rattle out the hints if you have an audio device, after which it will then correctly print out 1 to 100.

\$\endgroup\$
  • 3
    \$\begingroup\$ ...That's... Could we have a hexdump? \$\endgroup\$ – totallyhuman Feb 11 '18 at 2:39
  • 1
    \$\begingroup\$ What's the output format? (I'm assuming those strings don't actually get printed...) \$\endgroup\$ – DLosc Feb 11 '18 at 4:05
  • \$\begingroup\$ @DLosc Regular STDOUT. It might take a little while though. \$\endgroup\$ – a spaghetto Feb 11 '18 at 4:31
  • \$\begingroup\$ Aha! Is this Anguish? \$\endgroup\$ – Jo King Feb 11 '18 at 4:55
  • 1
    \$\begingroup\$ cracked? \$\endgroup\$ – fergusq Feb 11 '18 at 17:28

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.