Reversed Engineered from Uniqueness (Cop's Thread)

23

0

Given the output of the cop's program (o), the byte-count (n) and the number of unique bytes (c) used, come up with a corresponding piece of code that is n bytes long with c unique bytes which matches the cop's output o.


This is the cops thread. Post solutions that are to-be-cracked here.

The robbers thread is located here.


Cops should post solutions like this:

#[Language], `n` Bytes, `c` Unique Bytes (c*n points) [Cracked](Link-To-Crack)

    [Output]

---

(Optional spoiler)

Rules

  • You may not take any input for your program.
  • The program must use at least 1 byte, but cannot exceed 255 bytes.
  • The output itself is also limited to 255 bytes.
  • The program must have consistent output results when executed multiple times.
  • If your submission is not cracked within 7 days, you may mark it as "safe".
    • When marking it safe, post the intended solution and score it as c*n.
    • Only mark an answer as "safe" if you really want the +15 for an accepted answer; it's more fun to see how long you can go.

Winning

  • The uncracked post with the lowest c*n score, wins the cop's thread.
  • This will be decided after 10 safe answers, or a few weeks.

Caveats

  • If you feel cocky, you may tell the user the algorithm using a spoiler tag.

Uncracked Submissions:

fetch("https://api.stackexchange.com/2.2/questions/147635/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!/^#.*cracked/im.test(i.body_markdown)).map(x=>{const matched = /^ ?#{1,3} ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:.*(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).reverse().forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>

Magic Octopus Urn

Posted 2017-11-10T02:45:44.077

Reputation: 19 422

@Arnauld ahhh... I had misspoken, they're both limited to 255. – Magic Octopus Urn – 2017-11-10T03:30:46.120

1Are functions allowed? (Provided that they return a string, I suppose.) – Arnauld – 2017-11-10T03:32:18.680

Presumably, the output has to be consistent when run? I.e. random generators are forbidden? – caird coinheringaahing – 2017-11-10T07:36:56.453

1@cairdcoinheringaahing. OP has said: "The program must have consistent output results when executed multiple times." – None – 2017-11-10T07:39:33.430

5Just a suggestion for future CnRs: challenges where the user can choose an arbitrary fixed output are quite problematic for CnRs because people can basically mash their keyboard (barring syntax restrictions) and post the result, because there's no need for the cop to understand what their program is actually doing. Otherwise, this is a neat challenge idea. :) – Martin Ender – 2017-11-10T08:07:05.300

@MartinEnder I don't think such answers are going to last for long. ;-P first of all in Python ajd7g9hou2ig2og2 gives the same output as rokrgor9g9g49g4ujg49j as well as most keyboard mashes: nothing, and I think that's true for most languages out there (or for example Husk would give the type error output, etc.) – Erik the Outgolfer – 2017-11-10T09:14:10.337

4@EriktheOutgolfer As I said "barring syntax restrictions". The point wasn't that you actually post a random stream of characters, but a random valid program which you don't need to understand. And especially in many esolangs, it's very easy to write a program that outputs a decent amount of random garbage without having to understand what that program does. – Martin Ender – 2017-11-10T09:23:41.203

Closely related with different rules. – Arnauld – 2017-11-10T14:45:03.643

To get the number of unique bytes from a file: sed -e 's/\(.\)/\1\n/g' < filename | sort | uniq | wc -l – Joshua – 2017-11-12T15:44:31.740

1

Considering that this challenge has already more than 30 answers, I suggest adding a code snippet which lists uncracked submissions like in this post.

– None – 2017-11-13T14:07:52.513

@ThePirateBay did I manage to do that correctly? – Magic Octopus Urn – 2017-11-13T17:06:22.090

@MagicOctopusUrn. I fixed your script, please verify that it now works properly for all submissions. – None – 2017-11-13T21:01:07.883

@ThePirateBay AFAICT it seems good. – Magic Octopus Urn – 2017-11-13T21:28:18.253

Answers

11

Haskell, 173 bytes, 8 unique, 1384 points, safe

"[tag:reverse_engineering]"

It looks like this answer wants to provide a relevant tag to the question, while using only 8 different bytes.

As usual, your solution should work by being pasted in the code block on TIO: Try it online!


Solution

'[':___':_'':_':':':__':__:__'':__:__':____:__:'_':__:___:_':_'_:___:__:__:__':_'_:___:_':']':[]
_:_:_'':_:_:_:__:_:_':_:_'_:_:_:_:_:___:_:_:_:__':____:___':_:__'':_=['_'..]

Yes, this is valid Haskell code: Try it online!

How it works

The underscore _ is used as a wild card in Haskell's pattern matching. ' is used for characters, e.g. 'a'. However, both _ and ' are also part of the allowed characters for identifier names (Within some restrictions, e.g. ' cannot occur at the beginning of the name.). Therefore __, _', _'_, _'' and so on are all valid identifier names. Using some more descriptive names, the above code becomes

'[':t:a:g:':':r:e:v:e:r:s:e:'_':e:n:g:i:n:e:e:r:i:n:g:']':[]
_:_:a:_:_:_:e:_:g:_:i:_:_:_:_:n:_:_:_:r:s:t:_:v:_=['_'..]

The first line yields the string "[tag:reverse_engineering]" if each variable is assigned to the correct character. This assignment is achieved in the second line: ['_'..] yields the string "_`abcdefghijklmnopqrstuvwxyz{|}~ ... ", witch is matched on the pattern _:_:a:_:_:_:e:_:g:_:i:_:_:_:_:n:_:_:_:r:s:t:_:v:_ to get the desired assignment a='a', e='e' and so on.

Laikoni

Posted 2017-11-10T02:45:44.077

Reputation: 23 676

10

Brain-Flak, 62 total bytes, 6 unique, 372 points, Cracked

Here is your output:

10993592

There is something special about this number but its not on the OEIS ;)

In case you are thinking of using a computer tool to solve this, you're out of luck, the integer golfer gets 110 bytes for this number:

(((((((((((((((((((((()()()()){}){}){}){({}[()])}{}()()){})){}{}())){}{})){}{}){}){}){}())){}{}){}()){}){}){})

Try it online!

You're going to have to do this one by hand.


Tips

Here are some tips, I will reveal more an more helpful tips over time. Good luck!

10993592 is the 97th term of a sequence on OEIS, but does not appear because only a few terms are included.


My solution uses 3 loops, but they are not nested 3 levels deep.


My solution

((((((()()()){}){}){}){}){}())(({(({})[()])}{}){{({}[()])}{}})

Try it online!

This uses one of my favorite tricks, the code

(({(({})[()])}{}){{({}[()])}{}})

computes the nth term of A090809. The full submission just pads the code with a 97 to make a large number.

Post Rock Garf Hunter

Posted 2017-11-10T02:45:44.077

Reputation: 55 382

I can't help but notice that 10, 993 and 592 are present in PI at the decimal range 43-63... 592 is present within the first 10 too. I have no idea whether Brain-Flak could achieve that in 62 bytes though... – Yytsi – 2017-11-10T12:57:44.530

ASCII mode or number mode? – user202729 – 2017-11-13T08:31:49.903

@user202729 I used number mode, so I would believe that robbers would need to use that too. I would be seriously surprised if this was possible in ASCII mode based on previous attempts, so it is probably not worth pursuing. – Post Rock Garf Hunter – 2017-11-13T19:58:03.023

Marked as safe? Or do you want to let the robbers work for a few more days? – user202729 – 2017-11-17T05:38:25.110

@user202729 I don't plan on marking this safe for a while. I'll add some hints soon and probably offer up a small bounty for cracking it. Until then crack away. – Post Rock Garf Hunter – 2017-11-17T06:49:20.947

It is 6882th term of A258931 and 4848th term of A049020. It is actually on OEIS, but not displayed as a search result. – None – 2017-11-19T07:30:55.923

1@ThePirateBay I don't think "which OEIS sequence it belongs to" is always useful information, consider how esoteric Brain-flak is. It's also an element of A000027, but that observation is also useless. – user202729 – 2017-11-23T00:51:17.160

@user202729. Of course, being a part of some sequence may be a completely useless fact, but I was just correcting the statement that "10993592 is not on the OEIS". – None – 2017-11-23T21:29:38.037

Infinite bounty link for reference. – user202729 – 2017-11-29T14:08:05.713

1Cracked – Riley – 2017-11-30T20:14:19.213

7

MATL, 6 bytes × 3 unique = 18 points. Cracked

1+0i 0+1i -1+0i 0-1i

Luis Mendo

Posted 2017-11-10T02:45:44.077

Reputation: 87 464

2Damn you, floating point arithmetic! – Stewie Griffin – 2017-11-10T10:41:52.030

2@StewieGriffin I see you are having fun :-D – Luis Mendo – 2017-11-10T10:56:27.620

By the way, i.^(0:3) doesn't give floating point inaccuracies in Octave, but J4:q^ does in MATL... – Stewie Griffin – 2017-11-10T12:07:28.123

@StewieGriffin The difference arises because MATL's display function uses num2str(..., '%.15g '). See for example here. But that doesn't happen for MATL running on Matlab. The conclusion is that num2str works slightly differently in Matlab and in Octave

– Luis Mendo – 2017-11-10T12:24:17.187

Anyway, that doesn't affect this answer. The indicated output can be obtained with MATL running on Matlab and on Octave; and in particular on TIO – Luis Mendo – 2017-11-10T12:26:28.383

Yes, I didn't doubt that... It was just an observation :) – Stewie Griffin – 2017-11-10T12:32:26.827

I thoght so, but just in case people might get confused :-) – Luis Mendo – 2017-11-10T12:34:38.810

cracked! – Giuseppe – 2017-11-10T14:32:54.163

@Giuseppe Well done! :-) – Luis Mendo – 2017-11-10T14:46:40.543

6

JavaScript (ES8), 103 bytes, 42 unique (4,326 points) [SAFE]

Output hexdump:

3E 6E 6D 08 33 7A 22 7D 6C 37 7B 36 61 7B 65 71 3A 37 26 7E 7B 7B 38 7B 7D 69 6A 2B 3D 70 74 07 6F 6C 66 7E 1A 2A 3C 37 2D 36 31 38 6A 78 33 62 30 1E 34 3D 66 7B 37 10 26 6A 6A 32 27 6F 2E 33 1B 30 1E 76 27 27 7E 18 6F 68 26 2D 76 6A 6D 6D 2F 2E 0A 3F 17 7D 2B 73 7A 17 38 62 3A 29 20 0C 61 24 21 27 10 2B 20 63 71 72 17 5D 5F 12 5B 02 14 59 17 5A 11 1E 1D 10 16 07 5F 5F 58 58 4B 18 48 4B 04 5F 06 12 16 14 4D 45 5D 5D 16 3A 1C 1D 11 16 1F 51 59 4E 4B 4C 3D 16 1C 0F 2E 46 0E 08 4B 4B 13 45 21 10 06 0E 11 3F 51 57 3E 00 54 5F 49 05 0E 07 5A 51 3E 08 01 25 10 0B 51 36 43 0B 34 1A 43 47 04 46 0E 55 05 00 06 01 40 33 0F 00 53 36 42 42 45 5F 3D 3A 38 74 39 74 71 71 2C 7C 60 38 38 76 63 44 7F 64 28 66 3E 24 7A 66 57 79 24 3C 3C 21 6A 36 27 30 77 7E 36 7E 2A 3E 29

The score is abnormally big, I know, but anyway I think this one may be interesting to crack. The program is a function which returns a string (just to avoid confusion, this is not REPL).

It shouldn't be too hard, I suppose, everything is about finding the pattern.

Solution

It seems that it was harded than I had thought, according to the fact that nobody had cracked it. I believed there may be multiple solutions which are easy to craft. Anyways, here is the intended solution:

f=m=>[...m=f+f+f].map((a,p)=>p+1&256?'':String.fromCharCode((p&4?m[p^17]:a).charCodeAt^83^p*.3)).join

For some reason it is not displayed properly as code snippet. Here is the TIO link.

user72349

Posted 2017-11-10T02:45:44.077

Reputation:

Marked as safe? – user202729 – 2017-11-17T10:39:21.613

@user202729. I agree, maybe the puzzle was harder than I thought, so it is now marked as safe. – None – 2017-11-29T07:08:32.390

6

Jelly, 7 bytes × 6 unique = 42 points, cracked

843606888284160000

Try it online!

8!×16!¤

Erik the Outgolfer

Posted 2017-11-10T02:45:44.077

Reputation: 38 134

2cracked – Jonathan Allan – 2017-11-10T22:57:51.640

Oh, haha I cracked it with a trailing zero by mistake! – Jonathan Allan – 2017-11-10T23:18:48.167

@JonathanAllan Well, that's easily replaceable with , for example. Now it's too late I guess... – Erik the Outgolfer – 2017-11-10T23:20:39.320

Well I cracked the same problem, with an unnecessary hurdle :p – Jonathan Allan – 2017-11-10T23:23:48.650

@JonathanAllan Try to crack my new one if you'd like! – Erik the Outgolfer – 2017-11-10T23:24:19.967

6

Malbolge, 15 bytes, 13 unique, score 195. Safe!

Outputs:

PPCG

Safe! Intended code:

(&a`#""7[}4XE70

Try it online!

Lynn

Posted 2017-11-10T02:45:44.077

Reputation: 55 648

I'm certain of the procedure to crack this by building by brute force the program that outputs P and building on top of it another P, etc. Getting it to 15 probably takes advantage of the two Ps together. – Joshua – 2017-11-17T17:42:15.270

Malbolge is evil. It's already too hard to write program in Malbolge, let alone crack a submission. – user202729 – 2017-11-18T07:47:02.320

5

Octave, 13 bytes, 5 unique characters, score: 65. Safe!

20085918935040000

This one shouldn't be too hard. If you don't want to jump in to the most difficult ones straight away it might be a nice first challenge :)

Note: When I read the question, I though it said: Output a number, not output a string. The output looks like this on TIO:

ans =    2.0086e+16

And will look like this if you have format long

ans =  20085918935040000

or you may print it like this:

printf('%i',ans)
20085918935040000

What I had, and explanation:

prod prodprod

Simple as that. =)

Explained:

Normally you'd write this as: prod('prodprod'), but Octave treats whatever comes after the function name as a string (array of characters). These are implicitly converted to their ASCII-values, and multiplied together.

Stewie Griffin

Posted 2017-11-10T02:45:44.077

Reputation: 43 471

4

MATL, 11 bytes, 10 unique, 110 points. SAFE!

Output:

10803850202590

Just to "help" you one the way:

This is the product of:

[2, 5, 29, 89, 397, 499, 2113]

and it's one less than the 372884884433rd prime.


And here are some real tips. If it's not cracked in a few hours then I'll reveal the solution.

  1. - There's a q in there

  2. - There's a B in there

  3. - There's a ^ in there

  4. - There's a h in there

  5. - There's a t in there

The real code:

9K^ZqsBthXB

Explanation:

Push two numerals, 9 and K, and do exponentiation. Create a list of all primes below that number, and sum them. Convert to binary, duplicate the binary vector and concatenate it with itself. Convert back to decimal and output implicitly.

Stewie Griffin

Posted 2017-11-10T02:45:44.077

Reputation: 43 471

4

MATL, 4 bytes, 4 unique, 16 points. Cracked

Output:

1388289520800

What I had:

1X%p
This pushes the number 1, checks which class it is, then multiplies the ASCII-values of the resulting string 'double'.

Stewie Griffin

Posted 2017-11-10T02:45:44.077

Reputation: 43 471

Cracked – Luis Mendo – 2017-11-10T09:29:29.193

4

Java 8 (full program), 97 total bytes, 34 unique, 3298 points (Cracked by @RobertoGraham)

Output:

1.4241570377303032

NOTE: This is a full program. If functions in the form of ()-> are allowed instead:

Java 8 (lambda function), 40 total bytes, 18 unique, 720 points (Cracked by @user202729)

It's probably quite hard, but whatever.. It's not like Java is going to win anything with this amount of points anyway..


Hints:

The intended code doesn't contain any single or double quotes. (The function returns a double.)
The intended code doesn't contain any digits (0-9).


Intended solution:

Pretty funny (and impressive) how both given cracks are completely different than what I had in mind, but chapeau to both of the crackers!

Function: ()->Math.log(Math.hypot(Math.PI,Math.E))
Full program: interface M{static void main(String[]a){System.out.print(Math.log(Math.hypot(Math.PI,Math.E)));}}

Kevin Cruijssen

Posted 2017-11-10T02:45:44.077

Reputation: 67 575

Why do you seem to have two programs, but only one output? – Okx – 2017-11-10T11:00:40.420

1@Okx Because the second is a function. – Erik the Outgolfer – 2017-11-10T11:16:24.260

@Okx As Erik mentioned, because they are both the same. The top as a program, bottom as a function. I'm still waiting for Arnauld's comment to be answered so I can remove one of the two..

– Kevin Cruijssen – 2017-11-10T12:31:39.227

So close, a straightforward printing of the string is the right length but two uniques too many :-) – actually, 1 if you don't count the newline… – Kevin – 2017-11-11T19:10:36.643

@Kevin Nice try, though. :) I've added some hints, the code doesn't contain any single quotes, double quotes, or digits. – Kevin Cruijssen – 2017-11-13T07:42:34.587

Probably Math.PI or Math.E, and some combination of the functions (sin, cos, tan, sqrt, cbrt, pow, log10, etc.) The only way I see feasible is to bruteforce through all possibilities. – user202729 – 2017-11-13T10:14:02.343

1Unintended solution (function) with correct counts – user202729 – 2017-11-16T06:14:59.650

@user202729 hehe, nice. Feel free to post it in the Robbers thread, then I'll link to it as cracked. It may not be the intended solution, but yours is much more impressive tbh. – Kevin Cruijssen – 2017-11-16T08:02:05.553

3

Explode, 9 total bytes, 4 unique, 36 points

Output:

22k2Dk}D}

Note that the documentation does not completely align with the implementation for this language - I wrote this one day and haven't touched it since, so any bugs in implementation that may exist are now definitely features.

Also, I do not think this language is Turing-complete, so you could probably brute force it, but that's boring.

I'll give you a sizable bounty if you can automate reverse-engineering output into optimally short Explode code.

Stephen

Posted 2017-11-10T02:45:44.077

Reputation: 12 293

The score of your code is 36 right? The output would score 36 points too, so I'm just making sure it's not a mistake. :) – Stewie Griffin – 2017-11-10T09:02:48.313

@StewieGriffin yep, because when I first read the question I misread it and thought the code had to be the same length as the output. – Stephen – 2017-11-10T13:40:41.027

How short should "golfed Explode code" be? – user202729 – 2017-11-13T10:14:48.420

@user202729 sorry, I should have explained - optimally short Explode code, since it's completely deterministic – Stephen – 2017-11-13T13:59:59.847

But the problem is people may write brute-force code to found the output "in theory", but is impractical in practice. – user202729 – 2017-11-13T14:06:35.210

@user202729 yes - I wouldn't call that reverse-engineering, personally. Maybe I should make this a main challenge. – Stephen – 2017-11-13T14:09:57.190

But it is somewhat unclear as it currently stands. – user202729 – 2017-11-13T14:13:36.700

3

Mathematica, 8 bytes, 3 unique, 24 points Cracked

7448503425106854065710345345644475127957406351360000000

J42161217

Posted 2017-11-10T02:45:44.077

Reputation: 15 931

1Cracked. – user202729 – 2017-11-13T09:06:35.630

3

Haskell, 10 bytes, 3 unique, 30 points, cracked

2416508937

A nice number which contains every digit, though only 3 unique bytes are used.

The intended solution works by replacing the code part in the following TIO link: Try it online!

Laikoni

Posted 2017-11-10T02:45:44.077

Reputation: 23 676

2Cracked! – H.PWiz – 2017-11-10T19:52:04.300

@H.PWiz I didn't expect it to last long, but this was nevertheless very quick. I expected (or at least hoped) robbers would try arithmetic solutions first. – Laikoni – 2017-11-10T19:58:48.220

3

Octave, 4 bytes, 3 unique, 12 points: cracked

1.6776e-05

Lets see how fast this one goes.

Tom Carpenter

Posted 2017-11-10T02:45:44.077

Reputation: 3 990

3Cracked – Luis Mendo – 2017-11-10T23:34:27.197

@LuisMendo that would be the one. – Tom Carpenter – 2017-11-11T08:48:33.900

3

Haskell, 29 bytes, 15 unique bytes, 435 points, cracked

"33333333333333333333333333333333333333333333334333333333333333333333333333"

This is a string containing 3 73 times, and a single sneaky 4.

The intended solution works by replacing the code part in the following TIO link: Try it online!

Edit: H.PWiz found a valid crack (which could even be golfed to 28 bytes), but not the intended solution.

Hints:

No arithmetic needed. There exists a single-expression solution.

Laikoni

Posted 2017-11-10T02:45:44.077

Reputation: 23 676

1Cracked – H.PWiz – 2017-11-13T00:35:09.977

2

Javascript, 11 Bytes, 7 Unique Bytes (77 points) (Cracked)

0.022522522522522525

lambda function declaration included in byte count, function call is not.

This should be really easy.

Brian H.

Posted 2017-11-10T02:45:44.077

Reputation: 513

Fixed cracked with the help of @Milk – Arnauld – 2017-11-10T22:54:54.297

2

Pyth, 7 bytes, 6 unique, 7*6=42 total score

312069475503262125385169244603150327250717758754411025379995130624544231547913731661607993843298516888546865336571981925596

Check out the Pyth tips thread for inspiration ;)

Dave

Posted 2017-11-10T02:45:44.077

Reputation: 432

2

Jelly, 8 bytes * 6 unique = 48 (Cracked)

241975308641975308641975308641975308641975308641926913580246913580246913580246913580246913580246916

You can try to crack it here.

Intended solution: 7ẋ²Ḍ²ẋ4S

Mr. Xcoder

Posted 2017-11-10T02:45:44.077

Reputation: 39 774

Partial answer (repeating pattern) – user202729 – 2017-11-13T09:46:45.087

@JonathanAllan Your crack is invalid, sorry (it doesn't print the correct result). You can see the difference here

– Mr. Xcoder – 2017-11-14T19:36:45.910

@JonathanAllan Heh, tried to solve another challenge at the same time (look at the arguments! :P) – Mr. Xcoder – 2017-11-14T19:55:33.257

1@JonathanAllan Nice, I added the intended solution in my answer too :D – Mr. Xcoder – 2017-11-14T19:56:59.973

2

Excel, 22 bytes, 16 unique, 352 points, Cracked

หนึ่งล้านห้าแสนสามหมื่นสองพันสี่ร้อยเก้าสิบห้าล้านห้าแสนสี่หมื่นแปดร้อยหกสิบห้าล้านแปดแสนเก้าหมื่นล้านล้านล้านล้านล้านล้านบาทถ้วน

This might not be very hard to crack but I get to use a function that I otherwise never get to use. Besides, the score won't win anything unless a lot of others get cracked.

Engineer Toast

Posted 2017-11-10T02:45:44.077

Reputation: 5 769

cracked. Probably not your original code, but it works. – wythagoras – 2017-11-12T13:42:51.850

2

PowerShell, 7 bytes, 5 unique = 35 points Cracked

Output:

1125899906842624

AdmBorkBork

Posted 2017-11-10T02:45:44.077

Reputation: 41 581

2

Japt, 5 bytes, 5 unique bytes (25 points) (Cracked by Scrooble)

Output: 3628801

Shaggy

Posted 2017-11-10T02:45:44.077

Reputation: 24 623

Cracked – Khuldraeseth na'Barya – 2017-11-10T22:06:47.180

@Scrooble, not the intended solution but nicely done. Will update as cracked when I get back to a computer. I'm thinking now the 4 byte version I had might have been a bit trickier, may yet post it. – Shaggy – 2017-11-10T22:51:14.610

What was the intended solution? – Khuldraeseth na'Barya – 2018-02-28T22:07:23.800

2

CJam, 15 bytes * 10 unique = 150 points

453630781352162854505467929721140132016201833205823402832306035643819420004950

Bad score, but hopefully will be hard to crack.

Note: At the moment I have forgotten what the answer is. As such, I will keep it open until either I or somebody else is able to crack it.

Esolanging Fruit

Posted 2017-11-10T02:45:44.077

Reputation: 13 542

Double answered :P flagged to be removed – Christopher – 2017-11-21T00:39:00.487

@Christopher2EZ4RTZ What do you mean? These are two separate answers with the same score breakdown, but different outputs. – Esolanging Fruit – 2017-11-21T01:26:23.540

Oh wow my bad. XD – Christopher – 2017-11-21T19:39:10.517

Ahaha... you, sir, must be a cop that's 2 days from retirement forgetting the answer like that ;P – Magic Octopus Urn – 2018-03-02T17:57:30.330

@MagicOctopusUrn Now I've retired, and have no interest in this anymore... – Esolanging Fruit – 2018-03-02T19:43:04.480

@EsolangingFruiteso im sorry, it was a lighthearted joke. – Magic Octopus Urn – 2018-03-03T02:05:10.680

@MagicOctopusUrn I was intending to carry the joke on. I have no idea what this was supposed to be anymore. I remember one of these answers had to do with conversion to base 6 (although because of rounding errors in the JavaScript implementation, that wouldn't be obvious now), and one of them had to do with the Thue-Morse sequence. – Esolanging Fruit – 2018-03-03T02:45:42.603

2

CJam, 15 bytes * 10 unique = 150 points

355605126761554652609272416635107412217265861355621217687464016216276447790261274709847680

Note: At the moment I have forgotten what the answer is. As such, I will keep it open until either I or somebody else is able to crack it.

Esolanging Fruit

Posted 2017-11-10T02:45:44.077

Reputation: 13 542

2

Jelly, 8 bytes, 2 unique, 8×2 = 16 points -- Safe!

-4.408500694095235e-05

(There are only 8,355,840 possible such programs so it should get cracked I guess.)

Get going at Try it online!

How?

⁽⁽°°°°°°
⁽⁽° is a base 250 literal yielding -27221
° converts from radians to degrees. Applying this five times:
-475.09607568537643
-8.291990784013993
-0.1447225407260702
-0.0025258848375215096
-4.408500694095235e-05

Jonathan Allan

Posted 2017-11-10T02:45:44.077

Reputation: 67 804

Nice! Originally I think some double-byte may be related here, but then I dismissed it. I also considered °, but didn't think about and thought you have to stick with starting from 0. – user202729 – 2017-11-19T09:52:06.173

@user202729 is different from , they're not related in any way (except that they consume the two chars that follow). – Erik the Outgolfer – 2017-11-20T11:30:48.110

@EriktheOutgolfer Sorry, I just mistyped the characters. I meant . – user202729 – 2017-11-20T11:31:48.153

2

Jelly, 3 bytes × 3 unique = 9 points, cracked

263409560461970212832400

Try it online!

Another attempt at Jelly, this time more challenging I hope.

ȷc⁵

Erik the Outgolfer

Posted 2017-11-10T02:45:44.077

Reputation: 38 134

1cracked – Jonathan Allan – 2017-11-10T23:54:14.803

@JonathanAllan With my intended solution this time :p I guess it was too easy to brute-force right? There were obviously only 2763520 possible solutions...and, ironically, you use the same function to calculate this number as well as the number to be cracked. – Erik the Outgolfer – 2017-11-11T08:41:59.103

2

Jelly, 4 bytes, 4 unique, 4 × 4 = 16 points -- Safe!

121713205122350539153771498803599196214022517709999123476340843193655114000078051089267404501704293755399249186132786797198080437408108773592830098754467315464894774875031495160099382422748898046431945143395996374011431649446848855993397955116462522798880

Note that the output is 255 bytes long, right at the limit.

Yep, same score as my other (as yet uncracked) Jelly entry.

Get going at Try it online!

How?

7ÆĊ⁺
7 is a literal seven
ÆĊ gets the nth Catalan number
the 7th Catalan number is 429
repeats the previous atom
the 429th Catalan number is 121713205122350539153771498803599196214022517709999123476340843193655114000078051089267404501704293755399249186132786797198080437408108773592830098754467315464894774875031495160099382422748898046431945143395996374011431649446848855993397955116462522798880.

Jonathan Allan

Posted 2017-11-10T02:45:44.077

Reputation: 67 804

My partial solution (very long) – user202729 – 2017-11-14T03:55:30.803

72 bytes is a little long, yes. You could remove the spaces (62). Also you could use vectorised r between two code-page index lists and concatenate with another code-page index list to get it down to 35 bytes, but there are also still repeated bytes there and 35 >> 4... good luck!

– Jonathan Allan – 2017-11-14T08:13:50.923

2

C (two's complement machine, sizeof(int) = 4), 76 bytes and 35 unique bytes for a score of 2660, Safe

Output:

10542949672924294967287429496729029742949672954294967287429496728808914294967289429496728742949672946944294967291429496728742949672914964294967294429496728742949672891980429496728842949672874294967295792 

which is 203 bytes long.

#include<math.h>
main(){for(int
i=0;i<40;i++)printf("%u",(int)(cos(i)*10));}

Without the #include it won't work.

Joshua

Posted 2017-11-10T02:45:44.077

Reputation: 3 043

Can we use some compiler-specific features like in gcc? – None – 2017-11-13T00:14:49.243

1@ThePirateBay: I didn't. – Joshua – 2017-11-13T00:47:13.293

1I found an interesting approach but I couldn't golf out the last byte, so I just post it here. main(i){for(;42>i;printf("%u","eirwtlegowvnfemuwphejsno"[abs(24-i++)]-'n'));} – Colera Su – 2017-11-13T03:44:54.737

@ColeraSu Probably you can switch from lowercase to uppercase and change 'N' to 78 (char code of N). – user202729 – 2017-11-13T08:53:56.360

@user202729 but it would not fit the restriction of 35 unique bytes. – Colera Su – 2017-11-13T09:03:07.187

@ColeraSu So probably try to shift it to 42 or to 44. EDIT: I see, the problem is with the printf. – user202729 – 2017-11-13T09:08:09.040

2

Alice, 9 bytes x 8 unique = 72 points Cracked

KMOQSUWY[]_acegikmoqsuwusqomkigecegikmoqsuwy

Try it online!

This one should be funny to crack

Leo

Posted 2017-11-10T02:45:44.077

Reputation: 8 482

Cracked – Nitrodon – 2017-11-13T06:21:10.533

2

Haskell, 30 bytes, 17 unique, 510 points, cracked

"6666666444444455666666666566555533333334333333333"

The intended solution works by replacing the code part in the following TIO link: Try it online!

This uses the same approach as my previous answer, which was cracked using a different approach.

Some hints:

No arithmetic needed. I have a single-expression solution.

Laikoni

Posted 2017-11-10T02:45:44.077

Reputation: 23 676

1Cracked – Lynn – 2017-11-14T22:56:15.250

1

Perl 5, 31 Bytes, 18 Unique Bytes (558 points) -- safe

1.76295255109024e+180

Intended solution (Try it online!):

$_=1;for$=(1..111){$_*=$=}print

(this calculates the factorial of 111)

Felix Palmen

Posted 2017-11-10T02:45:44.077

Reputation: 3 866

1

JavaScript (ES6), 35 bytes x 16 unique = 560 points - Safe!

Some kind of compromise between a reasonable size and an uncrackable algorithm (as it originally was meant to be ^^).

Expected output (255 bytes):

246913680357025702570358136924703692581470370360360370471582604715938260493827161505050505161728495173962851852963075208642087643221000001123457802570360483728396297532100123581594064200024727410136175571756954621413918119481621442132286383494753789149870

Intended solution

f=(x=0xff)=>--x&&(1/7/x+'')[7]+f(x)

O.innerText = f()
pre {
  white-space: pre-wrap;
  white-space: -moz-pre-wrap;
  word-wrap: break-word;
}
<pre id=O></pre>

Unique characters: 0, 1, 7, f, =, (, x, ), >, -, &, /, +, ', [, ]

Arnauld

Posted 2017-11-10T02:45:44.077

Reputation: 111 334

The function looks so weird... Probably not quadratic or polynomial, but I guess it's convex. The positive side grows much faster than the negative side. [Almost safe now] – user202729 – 2017-11-17T14:49:16.597

1

Haskell, 37 bytes, 20 unique, 740 points, safe

The answer is an expression whose result equals the string literal:

"4F\\DLE\\C\"S\\T \\\\DC$EO!RUr\\K\\SSS1\\%S\\\\AN\\D&CDI#3SSC\\\\\\E\\C\\YC\\USB2SNN\\ED'\""

(That is, when putStr’d, you’d get:)

4F\DLE\C"S\T \\DC$EO!RUr\K\SSS1\%S\\AN\D&CDI#3SSC\\\E\C\YC\USB2SNN\ED'"

Safe! Intended expression:

[show['\r'..]!!rem(w^7)77|w<-[7..77]]

Lynn

Posted 2017-11-10T02:45:44.077

Reputation: 55 648

1

J, 8 Bytes x 6 Unique = 48 Points, Cracked

Output:

23 _0.677447j0.296961 _0.677447j_0.296961 0.125003j0.726137 0.125003j_0.726137 _0.379097j0.630438 _0.379097j_0.630438 0.518498j0.521654 0.518498j_0.521654

Hint:

It has to do with primes

Bolce Bussiere

Posted 2017-11-10T02:45:44.077

Reputation: 970

0

Explode, 24 total bytes, 7 unique, 168 points

Output:

\}AtAY)_)MqGq/Y,Y}AwA_)\)JqDq/Y,Y}AtA_)\)MqDq/Y,Y}AtA_)\)MqDq2Y,YzAtAb)\)JqDq2Y,YzAtAb)\)JqDq2Y,YzAtAb)\)JqDq2Y,YzAtAb)\)JqDq2Y,YzAtAb)\)JqDq2Y,YzAtAb)\)JqDq2Y,YzAtAb)\)JqDq2Y,YzAtAb3)yqobUPK>1,'zmhcVID?2% {na\WJ=83&ytobUPK>1,'zmhcVID?2% {na\WJ

Now that I've read the question correctly, you can truly see the output explode.

Stephen

Posted 2017-11-10T02:45:44.077

Reputation: 12 293

0

PHP, 16 Bytes, 10 Unique Bytes (160 points) -- Safe!

0.42516833158764

Intended Solution (Try it online!)

<?=M_PI/M_E/M_E;

Simply divides π by e twice.

Edit

As with ThePirateBay's answer, I marked this as safe before I saw the OP's edit about seeing how long you can go without being cracked. Sorry to any who wanted to attempt a crack.

Jo.

Posted 2017-11-10T02:45:44.077

Reputation: 974

0

Brainf**k, 220 bytes, 7 unique (1540 points), safe

Edit: Sorry that I counted the bytes wrong.

output (88 bytes)

rh3NY8C]'t/FS:\7pb5D?yc,G>A@OsWU_6x*gaRo)Hz-w.ul+T&IM<P;BvjK%imn1[Xk2Ef(Z|Q{dL^`e4q0V9J=

Just do some brainf**k for fun.

Intended solution:

>+[>[-]<[>+>+<<-]>>[<<+>>-]---<[>>>+<<<-]>>>[<<[<+>>+<-]>[<+>-]>-]<<<+]<[>>[-]<[-]<[>+>+<<-]>>[<<+>>-]++++++[-<------>]<->>>++++++[-<+++++[-<+++>]>]<<--[>>+<<<[->>>[-]<+<<]>>>[->+<]<[-<<+>>]<-<->]>>>[<<<<<.>>>>>-]<<<<<<]
I didn't golf this too much. This is a sequence generated by linear congruential method, but just I output bytes between 37 and 124.

Colera Su

Posted 2017-11-10T02:45:44.077

Reputation: 2 291

Safe? (char limit) – user202729 – 2017-11-20T12:55:40.370

@user202729 Thanks for reminding me. I almost forgot this. – Colera Su – 2017-11-20T15:52:25.960

0

Alice, 7 bytes, 6 unique, 42 points, safe

-10764@

Try it online!

Solution

gZ/
@o@

Try it online!

g is the easiest way to get a decently big number onto the stack quickly, because it pops two implicit zeros from the stack and then reads the code point at that cell, which is 113 for g itself.

Z then packs 0 and 113 into a single integer, which is a good way to get an even bigger number. That number happens to be -10764.

The number gets printed in Ordinal mode, but then we run into g again in Ordinal mode. The label Alice is looking for is just an empty string. It finds that immediately in the bottom left corner and extracts the @ as a string. When we hit o again, that @ is printed as well.

Afterwards, the IP finds its way to the bottom right corner where the other @ terminates the program.

Martin Ender

Posted 2017-11-10T02:45:44.077

Reputation: 184 808

0

Python 2, 98 bytes, 30 unique, 2940 points

Output (249 bytes):

-K:&qLcVoJk`N8QS@JH5c`1]T92i_bS.bv<zZK3vI&(kH!6=NrQGTL&VE:j|g..UQC)yk>3IoNhpjc'h0.x'L!aajp;Ip}+BQ/I64Q`5ZBRwOfDtt|O,6b>>UvvTt#8"z0CzEHtiVJ{lR-QBbhdqQnKK@.7Q$RLbso]?gR=ZN2;f5vTh|1@dI.cQ|b;F=lKyFZpx(mBPrqhiw1:`LD>AI{.S;POHfTd[5d;T=`162Hc]=.m7?T_1O<Kty

Edit: I think this is going to be too hard so I'll give a hint

Edit: Slightly more informative hint

seed(9)

dylnan

Posted 2017-11-10T02:45:44.077

Reputation: 4 993

0

><>, 16 Bytes * 11 Unique = 176 Points

Output:

; ;;;;;;;;   ;
;;;
;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&

Shouldn't be too hard.

Bolce Bussiere

Posted 2017-11-10T02:45:44.077

Reputation: 970

0

x86 Assemble, 22 Bytes * 17 types = 374 points, safe for 3 months

00000000h: 80 8A 5E FA 59 DF 69 24 F9 73 DA 8C 50 A6 F1 60
00000010h: 93 E3 3E 87 7D 08 F6 14 9E 03 EE 96 4E 48 99 61
00000020h: 2E 7A 62 71 96 39 69 27 CF 8E F7 AE 1A 37 71 8F
00000030h: B0 52 6A 85 F3 04 47 D4 A5 F1 8E 64 D8 4E A6 C1
00000040h: 0E 1E 35 EB C6 E3 99 28 67 79 80 58 52 F5 BF E7
00000050h: 28 87 1C E7 96 5E CA 8E 63 DB 3C 59 73 11 E1 9C
00000060h: E1 1D 6A 77 6B CD 6B 41 64 EA D6 02 0B 3F 89 60
00000070h: B4 DF 90 C4 AD AA 35 D5 14 6F 47 DC 3A 31 48 B5
00000080h: 50 87 5A 4C 5D FC 07 70 4B 6A 2A 6D 87 32 7F CA
00000090h: AB EB 75 4B 7C 17 1E 7D 01 49 C3 99 AF 98 8A 59
000000a0h: 6A B1 A1 2C B4 08 5D 42 9F AA E0 04 10 38 DC 87
000000b0h: E8 CB 15 BE CE 52 5D 02 4C 3C C4 C3 FF         

Answer:

00000000h: DB 06 01 01 B7 CD DD 17 D9 FE B4 02 8A 57 02 CD
00000010h: 21 FE C2 75 F1 C2                              

l4m2

Posted 2017-11-10T02:45:44.077

Reputation: 5 985

Hint: 1) output uses MOV AH, xx; MOV D?, xx; INT 21 which costs at least 6 bytes; 2) return may be RET, INT 20, INT 21, but at least 1 byte required; 3) x87 used – l4m2 – 2017-12-02T05:44:40.920

I suppose the header should say "machine code" instead of "assembly"? – Weijun Zhou – 2018-03-02T18:01:55.660

maybe, though from the hint comment that can be inferred.... – l4m2 – 2018-03-03T01:50:27.703

0

Python 2, 114 Bytes, 27 Unique (3078)

両寷動娯爅潟嗁琓偵桋斥獻曕檫垉哣抹妗惱畃

Function calls not counted, lambda expression counted.


Hint 1

Pseudo-random number generator with Unicode output. Beware of the offsets ;)

Hint 2

2 generators of the same kind but with different parameters are used alternatively, in the form of an+1 = f1(f2(an))

Shieru Asakoto

Posted 2017-11-10T02:45:44.077

Reputation: 4 445

0

CJam, 5 bytes × 5 unique = 25 points, safe

1406563064942.4553

J_#mq
This code computes sqrt(1919).
It could have been JJ_#mq for 20 points, but I didn't realize that until after I posted it.

Esolanging Fruit

Posted 2017-11-10T02:45:44.077

Reputation: 13 542

0

Jelly, 13 bytes, 5 unique, 65 points

Output is the following 21 bytes.

HCG, AhhsNeg3 Aarrghh

The optimized string compressor won't help you.

dylnan

Posted 2017-11-10T02:45:44.077

Reputation: 4 993

0

CJam, 13 bytes * 10 unique = 130 points

819457164140982707422640583089002841689

Esolanging Fruit

Posted 2017-11-10T02:45:44.077

Reputation: 13 542

0

brainfuck, 25 bytes * 7 unique = 175 points

 .KoÌEÚ/îXÉAÀFÓg¤Mý´r7Ö°yh^[_j|µÜ
?{¾Y±vãWÒTÝm¢Gó¦`!é¸kO:,%%,:Ok¸é!`¦óG¢mÝTÒWãv±Y¾{?
ܵ|j_[^hy°Ö7r´ýM¤gÓFÀAÉXî/ÚEÌoK.   

This contains unprintables which will probably be mangled by SE, so here's the hexdump:

00000000: 0918 2e4b 6fc2 9ac3 8c05 45c2 8cc3 9a2f  ...Ko.....E..../
00000010: c28b c3ae 58c3 8941 c380 46c3 9367 02c2  ....X..A..F..g..
00000020: a44d c3bd c2b4 7237 03c3 96c2 b0c2 9179  .M....r7.......y
00000030: 685e 5b5f 6a7c c295 c2b5 c39c 0a3f 7bc2  h^[_j|.......?{.
00000040: be08 59c2 b110 76c3 a357 c392 54c3 9d6d  ..Y...v..W..T..m
00000050: 04c2 a247 c3b3 c2a6 6021 c3a9 c2b8 c28e  ...G....`!......
00000060: 6b4f 3a2c 2525 2c3a 4f6b c28e c2b8 c3a9  kO:,%%,:Ok......
00000070: 2160 c2a6 c3b3 47c2 a204 6dc3 9d54 c392  !`....G...m..T..
00000080: 57c3 a376 10c2 b159 08c2 be7b 3f0a c39c  W..v...Y...{?...
00000090: c2b5 c295 7c6a 5f5b 5e68 79c2 91c2 b0c3  ....|j_[^hy.....
000000a0: 9603 3772 c2b4 c3bd 4dc2 a402 67c3 9346  ..7r....M...g..F
000000b0: c380 41c3 8958 c3ae c28b 2fc3 9ac2 8c45  ..A..X..../....E
000000c0: 05c3 8cc2 9a6f 4b2e 1809 01              .....oK....

Esolanging Fruit

Posted 2017-11-10T02:45:44.077

Reputation: 13 542

0

Jelly, 4 bytes, 4 unique, 16 points.

[1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0]

dylnan

Posted 2017-11-10T02:45:44.077

Reputation: 4 993