ここに私が行く
(({})[()])(()){{}(({}())){(({}))(<((()()()()()){}<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}{}<>({}<{}>)<>(<((()()()()()){}(<>))>)<>{({}[()])<>(({}()[({}<({}())>)])){{}(<({}({}<({}[()])>))>)}{}<>}{}<>{}{}({}<>)}{}<>{(([])<{{}({}[()]<>)<>([])}{}><>){({}[()]<({}<>)<>>)}{}<>}([]){{}{(<({}<>)<>>)}{}([])}{}<>(([][()()])<{{}{}([][()()])}{}>)}{}({}[{}])
オンラインで試す
説明
元の入力より1つ少ない入力の2番目のコピーを作成することから始めます。コピーを使用して、次のrepdigitを検索します。数値自体がrepdigitである場合、1を減算します
(({})[()])
1つプッシュして、次のループを満たします。(ゼロではなく、1つである必要はありません)
(())
このループは、スタックの最上位にrepdigitが現れるまで実行されます
{
がらくたをポップします。それらはループを駆動する「ブール」です。これは、ループをポップする必要がなくなったためです。
{}
1つ追加して、上部を複製します。コピーは数字に分解されます。
(({}()))
コピーはゼロではありませんが...
{
もう一度コピー
(({}))
Mod 10および他のスタックに移動
(<((()()()()()){}<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}{}<>({}<{}>)<>
10で除算(整数除算)
(<((()()()()()){}(<>))>)<>{({}[()])<>(({}()[({}<({}())>)])){{}(<({}({}<({}[()])>))>)}{}<>}{}<>{}{}({}<>)
}
コピーしたゼロをポップします
{}
これで数値を10桁に分解したので、すべての桁でスタックにスワップします。
<>
先頭の数字はゼロではありませんが
{
スタックの高さ(つまり、桁数)のコピーを取得します...
(([])<
スタック上のすべての数値から1を静かに減算します
{
{}
({}[()]<>)<>
([])
}
{}
ピックアップしたスタックの高さを下げます。(および他のスタックにスワップ)
><>)
スタックの高さを使用して、他のスタックに配置したすべての数字を適切なスタックに戻します。
{
({}[()]<({}<>)<>>)
}
スタックの高さであるゼロをポップします
{}
数字(または数字)を使用してスタックにスワップバックします
<>
終了ループ
}
これで、他のすべての数字から最上位の数字を引きました。すべての桁がゼロの場合、元の番号(入力ではなくチェックする番号)はrepdigitでした。[要出典]。したがって、非ゼロをチェックする必要があります。
スタックの高さはゼロではありませんが
([])
{
{}
数字がゼロでない場合、他のスタックに移動してゼロに置き換えます。
{
(<({}<>)<>>)
}
ポップします(現在はゼロです)
{}
終了ループ
([])
}
{}
他のスタックにスワップオーバー(duh ..)
<>
スタックの高さから2を引いたコピーを手に入れます
(([][()()])<
スタックの高さは2ではありません(オリジナルとアキュムレーター)
{
{}
トップをポップ
{}
しばらくして
([][()()])
}
{}
スタックの高さから2を引いたもののコピーを書き留めます。これは、最初の桁とは異なる桁数になります。つまり、ゼロの場合、repdigitです。
>)
このループが終了すると、repdigitが見つかりました
}
「ブール」をポップ
{}
repdigitからオリジナルを減算します
({}[{}])