4,8,15,16,23,42
编写一个程序,该程序可以无限次输出此数字序列。但是,数字一定不能出现在源代码中的任何位置。
以下不是输出数字的有效Java程序,因为数字出现在其源代码中:
class TheNumbers {
public static void main(String[] args) {
for(int n = 0;;) System.out.println(
n == 4 ? n = 8 :
n == 8 ? n = 15 :
n == 15 ? n = 16 :
n == 16 ? n = 23 :
n == 23 ? n = 42 : (n = 4)
);
}
}
的定义“这个数字不能出现在你的源代码”如下:
- 您不得使用数字4。
- 您不得使用数字8。
- 请勿使用数字1和数字5。
- 请勿使用数字1和数字6。
- 您不得使用数字2后跟数字3。
如果您的语言忽略了可以放在数字之间的某些字符,则这不是有效的替代。例如,如果您的语言将文字解释1_5
为15
,则将其视为数字1和数字5。
限制中包括其他基础,例如:
- 二进制100不能替代4。
- 八进制10不能替代8。
- 十六进制F不能替代15。
因此,以下是输出数字的有效(但不是很受启发的)Java程序,因为数字未显示在其源代码中:
class TheNumbers {
public static void main(String[] args) {
for(int n = '*';;) {
System.out.println(n -= '&');
System.out.println(n *= 2);
System.out.println(n += 7);
System.out.println(++n);
System.out.println(n += 7);
System.out.println(n += 19);
}
}
}
需要注意的是在该程序中,'*'
并'&'
用代替了整数42和38,因为否则数字4和8将出现在其源代码中。
“无限输出序列”的定义解释。因此,例如,输出逐渐变小的字形直到“无限”变小的程序将是有效的。
如果您能够以某种方式生成序列,而这实际上并不是对每个数字进行硬编码的话,则表示荣誉。
- 将其导出为公式。我的印象是没有,但是也许有,或者它可以被伪造。
- 修复伪随机生成器以返回序列。
这是一次人气竞赛,请发挥创意。3月26日票数最高的答案是获胜者。
This isn't an interesting question, IMHO, since the solution is pretty trivial. Please post in the sandbox next time.
会比更好This is a stupid question.
,但这只是我个人的看法。