我有一个柜台。这是一个小型设备,看起来像这样:
显示从0000到9999。它在顶部有一个小按钮,可将计数增加1,在右边有一个小旋钮,其目的是将计数器重置为0。
现在,关于小旋钮的事情是,如果您将其向后旋转,则可以使它再次增加任何所需的数字。因此,如果我按下计数器按钮10次以使计数器显示出来0010,则可以向后旋转旋钮,直到听到微小的喀哒声,然后再次将其向前旋转并直接转到0090。
但是,旋钮每次向前推动数字时,都会始终使同一数字的所有出现次数增加1。因此,如果计数器显示6060,则只能使其增加到7070,而不能增加到6070或7060。另外,旋钮将9s 滚动0而不携带,因此0990将前进到0000而不是1000或1100。
我想知道将计数器设置为特定数字的最有效方法。您的任务是编写一个程序或函数,该程序或函数将确定执行此操作所需的最短按钮按下和旋钮前进的顺序。
您的程序将输入从0000到的4位数字9999,并以以下格式返回一系列步骤:
> 0001
C
> 0093
C12345678C12345678CCC
> 1000
C12345678C12345678C12345678C12345678C12345678C12345678C12345678C
> 9999
012345678
其中C代表“按下计数器按钮”,而D0到9之间的任何数字代表“使用旋钮将所有出现的次数D增加1”。
您的程序必须针对所有可能的四位数组合生成有效的步骤顺序,并将对所有10,000个案例所需的步骤总数进行评分。在平局的情况下(最有可能在找到最佳算法时),较短的代码将获胜。

0010为0020在这种情况下?还是只能向后旋转旋钮?而且,每个“ D”都算作旋钮前进的“ D”数1234567吗(例如,是否意味着先将旋钮先旋转1次,然后旋转2次,然后旋转3次,依此类推)?还是仅仅表示每个单独的旋钮旋转(例如,是否1234567仅意味着将旋钮旋转7次)?