大佬教程收集整理的这篇文章主要介绍了ruby – 从列表中生成从n到m的数字,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
输出:
– 1,3,11,12,13,21,22,23,31,32,33
然后我们停下来,因为下一个数字将超过100,例如:
– 111,112,113,121,122,123,131,132,133,21 ..,. 22 ……,23 ……,33
正如你所注意到我将1,4附加到之前创建的数字上,为了做到这一点,我使用了一个递归函数,它在我的列表中的每个数字的for循环中启动,它们运行直到生成数字大于我的限制.
def x(str,finish,d,C) return if D >= finish [1,4].each do |e| x(str,end,d*c+E) end # do something if D >= str end
如果我需要从1开始,这可以正常工作,但如果我的起始数字要大很多,我仍然需要开始创建这个序列.
有人可以帮我一个产生相同序列的解决方案,但是从任何起点而不是1,所以如果例如起点是100和结束200那么输出将是:
111,114,124,132 […]
任何编程语言的解决方案都不错,但请不要内置核心库.
> min,与您到目前为止处理的数字位数相同的最小有效整数.因此,例如,如果您处理了尾随27,则最小有效两位数整数为11.
> max,与您到目前为止处理的数字位数相同的最小有效整数,大于或等于您目前处理的数字.因此,那么大于或等于27的最小有效两位数整数是31.
>请注意,max不会总是存在.例如,没有大于或等于70的有效两位数整数.
您需要min的原因是,如果您遇到的数字不在您允许的数字列表中,那么新的最大值将包含前一个min而不是之前的最大值. (例如,大于或等于02的最小有效两位数整数是11,而不是12.)
最后,如果存在,则返回max;否则,你返回min,但在你的列表前面加上最少的数字.
例如,如果this.allowedDigits是允许数字的集合,那么我们可以编写(在Java中):
private Integer getAllowedDigitGreaterThanOrequalTo(final int digit) { for (int result = digit; result < 10; ++result) { if (this.allowedDigits.contains(result)) { return result; } } // digit is bigger than anything in the list: return null; } privatE int getAllowednumberGreaterThanOrequalTo(int n) { int minResult = 0; Integer maxResult = 0; int powerOfTen = 1; while (n > 0) { final int digit = n % 10; n /= 10; minResult = getAllowedDigitGreaterThanOrequalTo(0) * powerOfTen + minResult; if (maxResult != null && this.allowedDigits.contains(digit)) { maxResult = digit * powerOfTen + maxResult; } else { final Integer newDigit = getAllowedDigitGreaterThanOrequalTo(digit + 1); if (newDigit == null) { maxResult = null; } else { maxResult = newDigit * powerOfTen + minResult; } } powerOfTen *= 10; } if (maxResult == null) { return getAllowedDigitGreaterThanOrequalTo(1) * powerOfTen + minResult; } else { return maxResult; } }
以上是大佬教程为你收集整理的ruby – 从列表中生成从n到m的数字全部内容,希望文章能够帮你解决ruby – 从列表中生成从n到m的数字所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。