???Befunge-98, 13 bytes, cracked by lyxal
:+1_#_@#-d',:
I rate this easy-medium, with the right perspective. It's a language on TIO that you have probably heard of.
Prints ASCII characters 1-100.
I went to a lot of effort to disguise that this was 2d, avoiding explicit redirects like <>^v
. I tried to remove the @
, but code to replace it was too complex. I now realise that the d'
was a big giveaway as it signified that the program had to reverse.
The basic idea is that :+1_
at the start effectively redirects left, then the loop begins.
The loop is 1+::,'d-#@_#_
. 1+
increments the ToS (initially a 0) then ::,
duplicates it twice and prints it. 'd-
pushes 100, then subtracts, leaving 0 only if the ToS is 100.
#@
and #_
are skipped during normal iteration of the loop, because #
skips the next character. The instruction pointer passes through the #@
to the _
, and if there is a 0
(i.e. the current number is 100) the IP redirects right to the @
and halts the program.
Otherwise, it continues through the #_
and the next iteration begins.