Here's my go at it
(({})[()])(()){{}(({}())){(({}))(<((()()()()()){}<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}{}<>({}<{}>)<>(<((()()()()()){}(<>))>)<>{({}[()])<>(({}()[({}<({}())>)])){{}(<({}({}<({}[()])>))>)}{}<>}{}<>{}{}({}<>)}{}<>{(([])<{{}({}[()]<>)<>([])}{}><>){({}[()]<({}<>)<>>)}{}<>}([]){{}{(<({}<>)<>>)}{}([])}{}<>(([][()()])<{{}{}([][()()])}{}>)}{}({}[{}])
Try It Online
Explanation
Start by making a second copy of the input that is one less than the original. We will use the copy to search for the next repdigit. We subtract one in case the number itself was a repdigit
(({})[()])
Push one to satisfy the coming loop. (doesn't have to be one just not zero)
(())
This loop will run until there is a repdigit on top of the stack
{
Pop the crap. Their is a "boolean" on top that drives the loop, since it is no longer needed we pop it.
{}
Add one and duplicate the top. The copy will be decomposed into its digits.
(({}()))
While the copy is not zero...
{
Copy again
(({}))
Mod 10 and move to the other stack
(<((()()()()()){}<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}{}<>({}<{}>)<>
Divide by 10 (Integer division)
(<((()()()()()){}(<>))>)<>{({}[()])<>(({}()[({}<({}())>)])){{}(<({}({}<({}[()])>))>)}{}<>}{}<>{}{}({}<>)
}
Pop the zero that was our copy
{}
We have now decomposed the number into its base 10 digits, So we swap over to the stack with all the digits.
<>
While the leading digit is not zero
{
We pick up a copy of the stack height (i.e. the number of digits)...
(([])<
Silently subtract one from every number on the stack
{
{}
({}[()]<>)<>
([])
}
{}
Put the stack height we picked up down. (and swap to the other stack)
><>)
We use the stack height to pull all the digits we placed on the other stack back onto the proper stack.
{
({}[()]<({}<>)<>>)
}
Pop the zero that was our stack height
{}
Swap back onto the stack with the digits (or what were the digits)
<>
End loop
}
Now we have subtracted the top digit from all the other digits. If all the digits are zero the orginal number (not the input but the number we are checking) was a repdigit.[citation needed]. So we need to check for non-zeroes.
While the stack height is not zero
([])
{
{}
If the digit is not zero move it to the other stack and replace it with a zero.
{
(<({}<>)<>>)
}
Pop it (now it is a zero)
{}
End loop
([])
}
{}
Swap over onto the other stack (duh..)
<>
Grab our selves a copy of the stack height minus two
(([][()()])<
While the stack height is not two (the original and the accumulator)
{
{}
Pop the top
{}
End the while
([][()()])
}
{}
Put down our copy of the stack height minus two. This ends up being the number of digits that are not the same as the first digit. In other words if it is zero it is a repdigit.
>)
If this loop ends we have found a repdigit
}
Pop the "boolean"
{}
Subtract the original from the repdigit
({}[{}])