<> (Safe)
Tested on the online and official interpreters.
Range: <= 16
String: 4621430504113348052246441337820019217490490
This is pretty 1337, huh?
Explanation and##Explanation:
Here's the source coming sooncode (15 bytes):
f1-:0(?;::0g*n!
f pushes 15 (our counter) onto the stack (this is skipped by the ! at the end so as not to push more than one counter)
1- subtracts 1 from the counter
:0(?; The frowny face tests if the counter is less than 0, the rest ends the program if it is
:: Duplicates the counter twice
0g Grabs the character at the point (c,0) in the source code where c is the counter
* Multiplies the second duplicate of the counter by the ASCII representation of the character previously grabbed
n Prints the result.
So, split up, the output is [462, 1430, 504, 1133, 480, 522, 464, 413, 378, 200, 192, 174, 90, 49, 0]. This corresponds to the ASCII interpretation of the code in reverse multiplied by the numbers 14 to 0 (i.e. [!*14, n*13, ... f*0]).
Probably the hardest part about cracking this would be figuring out how to split up the numbers correctly, but if you get the right ones it's just a matter of trying things until you get something that works.