Printing ascending ASCII, Cops

Perl, 46 characters (safe)

Output:

((()))*++,---../00011123445556667779::;;<<==??@@AAACEFGHHHIKKMMNOOOPPQQQRRSSSVWXXYY[[[\]]]^^^```aaeeffggghjjjnpppqqrttuwxxyzz{{{

Code:

print _______________________________________;

I somehow managed to delete the original in the space of a week, but I think this is right:

print chr()x(($i=($i*41+7)%97)&3)for(40..123);


Brainfuck, 48 characters, cracked by Mitch Schwartz

I made this one for the robbers. It is definitely not going to be the winning submission :)

____[_____[_______]__]___[___________]___[_____]

This outputs:

ABCDEFGHIJKLMNOPQRSTUVWXYZ

Solution:

++++[>++++[>++++<-]<-]+++[>++++++++<-]>++[>+.<-]

I tested it here.

Hint: Don't try to find programs generated by online generators haha. This was handwritten and can only be solved by logical thinking :)


Noisy 3SP, 89 characters (safe)

0 _____________________________ _ _ _ _ _ _ _ _ _ __2_2__________________________________

Original program:

0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 3 2 2 2 2 0 3 0 1

This program prints

 !"#$$

(note the leading space), and nothing else!

Explanation (*n refers to the nth cell in memory):

0 0 0                                Increment *0 to 3 (via the 0s in *0, *1, and *2)
2 (32 times)                         Increment *3 to 32 (via the 0 in *2 and the 3 in *0)
                                      (Note that *3 mod 256 is the character that prints)
0                                    Increment *32 (via the 3 in *0 and the 32 in *3)
3                                    Increment *1 (via the 32 in *3 and the 1 in *32)
                                      (Note that printing is on when *1 mod 2 is 1,
                                       which means " " prints right here)
2 (4 times)                          Increment *3 to 36 (printing '!"#$')
0                                    Increment *36 (via *3) (printing "$" again)
3                                    Increment *1 to 2 (via *36) (printing turns off)
0                                    Increment *36 to 2 (via *3)
1                                    Increment *0 to 4 (via *2)

The last two commands turn out to be sufficient to prevent 1 from ever being incremented again on subsequent passes through the program, which means nothing is ever again printed, though it will go on setting all memory addresses from *36 onward to the value 36 forever.