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

3
\$\begingroup\$

Prelude, 41 bytes, cracked by Conor O'Brien

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

Try it online!

Output as code points.

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

ELVM IR, 587 bytes, cracked by Dennis


	.text
main:
	mov D, SP
	add D, -1
	store BP, D
	mov SP, D
	mov BP, SP
	.file 1 "-"
	.loc 1 2 0
	mov A, 1
	mov B, BP
	add B, 2
	store A, B
	.L0:
	mov B, BP
	add B, 2
	load A, B
	mov D, SP
	add D, -1
	store A, D
	mov SP, D
	mov A, 101
	mov B, A
	load A, SP
	add SP, 1
	lt A, B
	jeq .L3, A, 0
	jmp .L4
	.L3:
	jmp .L2
	.L4:
	mov B, BP
	add B, 2
	load A, B
	mov D, SP
	add D, -1
	store A, D
	mov SP, D
	putc A
	add SP, 1
	.L1:
	mov B, BP
	add B, 2
	load A, B
	mov D, SP
	add D, -1
	store A, D
	mov SP, D
	add A, 1
	mov B, BP
	add B, 2
	store A, B
	load A, SP
	add SP, 1
	jmp .L0
	.L2:
	exit
\$\endgroup\$
  • 2
    \$\begingroup\$ Cracked. \$\endgroup\$ – Dennis Feb 7 '18 at 0:18
  • 1
    \$\begingroup\$ @Dennis Knew you'd be the one to crack this, nice job \$\endgroup\$ – MD XF Feb 7 '18 at 0:31
3
\$\begingroup\$

Element, 15 bytes, cracked by RIyeh

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

Not too hard.

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

MY, 4 bytes, cracked by ErikTheOutgolfer

⌶tIv

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

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

Output format: Array of integers

Here's the hex if you need it:

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

Attache, 58 bytes, cracked by Dom Hastings

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

Try it online!

Verbose languages are pretty cool :>

Fortunately, Attache is pretty short

Prints newline-separated list of numbers.

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

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

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

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

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

1+, 35 bytes, cracked by Rlyeh

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

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

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

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

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

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

Lily, 27 bytes, cracked by Cowabunghole

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

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

\$\endgroup\$
  • \$\begingroup\$ Cracked \$\endgroup\$ – Cowabunghole Feb 9 '18 at 17:09
  • \$\begingroup\$ @Cowabung got 'em \$\endgroup\$ – FantaC Feb 9 '18 at 20:10
3
\$\begingroup\$

Implicit, 212 bytes, cracked by Dennis

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

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

    return -8;
}

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

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

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

The & ends the program.

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

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

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

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

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

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

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

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

Our code golfs down to:

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

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

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

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

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

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

:)


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

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

Wise, 41 bytes, cracked by Potato44

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

Outputs as decimal numbers.

Wise has only bitwise operators. The executing code is:

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

and everything else is decoration or countering the decoration.

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

O, 9 bytes, cracked by PhiNotPi

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

['d#,;r]o

Output:

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

QuakeC, 144 bytes, cracked by totallyhuman

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

Outputs decimal numbers, separated by spaces.


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

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

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

Eitherfuck, 35 bytes, cracked by Ryleh

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

This is definitely Brainfuck. Try it online!

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

23.dezsy, 35 bytes, cracked by totallyhuman

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

Outputs one number per line.

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

MiLambda, 52 bytes, cracked by @ErikTheOutgolfer

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

The output format is raw characters.

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

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

><>, 82 bytes, cracked by Jo King

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

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

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

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

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

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

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

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

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

BitCycle, 140 bytes, safe

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

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

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


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

     v ~
     v~^
00000 ~
     v~^

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

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

This element:

 v ~
 v~^
> ~
 v~^

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

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

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

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

MashedPotatoes, 641 bytes, safe

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

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

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

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

Labyrinth, 167 bytes, safe

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

Unobufscated code

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

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

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

Glypho (shorthand), 39 bytes, safe

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

Try it online!

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

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

CPL, 80 bytes, safe

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

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

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


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

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

\$\endgroup\$
  • \$\begingroup\$ This post is safe now. \$\endgroup\$ – user202729 Mar 1 '18 at 4:15
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\$
  • \$\begingroup\$ Cracked. \$\endgroup\$ – Uriel Feb 6 '18 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\$
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\$
  • \$\begingroup\$ Cracked. \$\endgroup\$ – totallyhuman Feb 7 '18 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\$ – totallyhuman Feb 7 '18 at 0:55
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\$
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\$
2
\$\begingroup\$

Hy, 63 bytes, cracked by Ruslan

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

Outputs in decimal, newline-separated.

\$\endgroup\$
  • \$\begingroup\$ If I guess Lisp and am right, does that give me credit for a crack? \$\endgroup\$ – Kelly S. French Feb 7 '18 at 18:25
  • \$\begingroup\$ @KellyS.French Only if you specify which Lisp interpreter it works in. ;) \$\endgroup\$ – DLosc Feb 7 '18 at 19:25
  • 1
    \$\begingroup\$ It's hy. Here's corresponding crack. \$\endgroup\$ – Ruslan Feb 9 '18 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\$
  • \$\begingroup\$ Is the language free? \$\endgroup\$ – jimmy23013 Feb 10 '18 at 6:51
  • \$\begingroup\$ Cracked? Didn't test, but I am pretty sure I got it right. \$\endgroup\$ – Mr. Xcoder Feb 10 '18 at 10:18
  • \$\begingroup\$ @Mr.Xcoder not what i used :P \$\endgroup\$ – Christopher Feb 10 '18 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\$ – NieDzejkob Feb 10 '18 at 17:03
  • \$\begingroup\$ @NieDzejkob not VBA \$\endgroup\$ – Christopher Feb 10 '18 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\$
  • \$\begingroup\$ Cracked. \$\endgroup\$ – MD XF Feb 11 '18 at 2:20

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.