4,8,15,16,23,42 [关闭]


90

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_515,则将其视为数字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日票数最高的答案是获胜者。


8
我可以数6票,但
无可奉告

11
@Vereos,“这是一个愚蠢的问题”不是很有建设性的,这可能就是为什么没人将其发布为评论的原因。
彼得·泰勒

18
这个世界上有11种类型的人:观看迷失的人,没有观看过的人以及不了解二进制的人。
吱吱作响的ossifrage

7
@PeterTaylor可以肯定的是,但是新来者大多不会得到这个,而是离开站点而不是试图改善他们将来的问题。我想那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.,但这只是我个人的看法。
Vereos 2014年

3
我注意到这个问题并不禁止输出其他数字。因此,至少根据无限猴子理论,无伪伪随机数生成器应该可以解决问题。
kojiro 2014年

Answers:


233

爪哇

我决定添加另一个条目,因为它与我的第一个条目完全不同(这更像是一个示例)。

该程序计算用户输入的数组的平均值。

import java.util.Scanner;

public class Numbers {
    public static double getSum(int[] nums) {
        double sum = 0;
        if(nums.length > 0) {
            for(int i = 0; i <= nums.length; i++) {
                sum += nums[i];
            }
        }

        return sum;
    }

    public static double getAverage(int[] nums) { return getSum(nums) / nums.length; }
    public static long roundAverage(int[] nums) { return Math.round(getAverage(nums)); }

    private static void beginLoop(int[] nums) {
        if(nums == null) {
            return;
        }

        long avg = roundAverage(nums);
        System.out.println("enter nums for average");
        System.out.println("example:");
        System.out.print("array is " + nums[0]);
        for(int i = 1; i <= nums.length; i++) {
            System.out.print(", " + nums[i]);
        }

        System.out.println();
        System.out.println("avg is " + avg);
    }

    private static int[] example = { 1, 2, 7, 9, };

    public static void main(String[] args) {
        boolean done = false;
        while(!done) {
            try {
                int[] nums = example;
                beginLoop(nums);

                nums = getInput();
                if(nums == null) {
                    done = true;
                } else {
                    System.out.println("avg is " + getAverage(nums));
                }
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
    }

    static int[] getInput() {
        Scanner in = new Scanner(System.in);
        System.out.print("enter length of array to average or 0 to exit: ");
        int length = in.nextInt();
        if(length == 0) {
            return null;

        } else {
            int[] nums = new int[length];
            for(int i = 0; i <= nums.length; i++) {
                System.out.print("enter number for index " + i + ": ");
                nums[i] = in.nextInt();
            }
            return nums;
        }
    }
}

...或者是吗?

java.lang.ArrayIndexOutOfBoundsException:4
    在Numbers.getSum(Numbers.java:8)
    在Numbers.getAverage(Numbers.java:15)
    在Numbers.roundAverage(Numbers.java:16)
    在Numbers.beginLoop(Numbers.java:23)
    在Numbers.main(Numbers.java:42)
java.lang.ArrayIndexOutOfBoundsException:4
    在Numbers.getSum(Numbers.java:8)
    在Numbers.getAverage(Numbers.java:15)
    在Numbers.roundAverage(Numbers.java:16)
    在Numbers.beginLoop(Numbers.java:23)
    在Numbers.main(Numbers.java:42)
java.lang.ArrayIndexOutOfBoundsException:4
    在Numbers.getSum(Numbers.java:8)
    ...

17
这很棒!我不会想到那样的事情。
Jordon Biondo 2014年

2
哇好漂亮 !好主意;)
皮埃尔·阿劳德

5
天才!尽管输出有点冗长,但是我想这与您在此处选择的语言有关。;)
Pieter Witvoet 2014年

3
就在我以为Python的“ lizt = Lost plot”无法顶住……
Dave

3
@justhalf实际上,这让我很困惑,这是那一段时间的最佳答案。赢得我自己的问题并不有趣。
Radiodef 2014年

184

蟒蛇

#!/usr/bin/python
lizt = ["SPOI",
        "LERS: Lo",
        "st begins with ",
        "a plane crash on",
        "a desert island and end",
        "s with its viewers stuck in limbo forever."
        ]

while True:
    for item in lizt:
        print len(item)

编辑:根据nneonneo的建议,脚本现在不包含数字。


2
如此简单,却又如此出色。
Konrad Borowski

4
是否获得我的表决完全取决于对这个问题的答案:“ lizt”的拼写是否是“ Arzt”的引用?编辑:我在跟谁开玩笑,无论如何它都会得到我的投票。
Plutor

6
我会这样写,while True:以便您的答案完全没有数字。
nneonneo 2014年

2
while True:更常见。
Martin Ueding 2014年

1
这不会破坏“无替代基础”规则吗?基本上,这只是一个以1为底的数字的数组:-)
丹尼尔(Daniel)

77

佩尔

源代码中没有隐藏任何内容。不。如果代码不起作用,请键入use re "eval";之前(Perl 5.18要求)。

''=~('('.'?'.('{').(
'`'|'%').('['^'-').(
"\`"| '!').('`'|',')
.'"'. '\\' .'@'.('`'
|'.') .'=' .'('.('^'
^('`'       |"\*")).
','.("\:"& '=').','.
('^'^('`'| ('/'))).(
'^'^("\`"| '+')).','
.('^'^('`'|('/'))).(
'^'^('`'|'(')).','.(
'^'^('`'|',')).('^'^
("\`"|     '-')).','
.('^' ^('`' |'*')).(
'^'^( "\`"| (','))).
(')').     ';'.('['^
','). ('`'| ('(')).(
"\`"| ')'). ('`'|','
).('`'     |'%').'('
.'\\'.'$'.'|'."\=".(
'^'^('`'|'/'))."\)".
'\\'.'{'.'\\'."\$".(
"\["^ '/')       .((
'=')  ).+( '^'^('`'|
'.' ) ).(( (';'))).(
"\`"| '&').     ('`'
|'/') .('['^')') .((
'(')) .''. '\\'. '@'
.+(     '`'     |'.'
).')'.'\\'.'{'.('['^
'(').('`'|',').('`'|
'%').('`'|'%').('['^
'+'). '\\'.     '$'.
'_'.  '-'. '\\'. '$'
.+( ( '[') ^'/').';'
.'\\' .'$'      .''.
('['^ '/') .'='. (((
'\\') )).+ "\$". '_'
.((     ';'     )).+
'\\'.'$'.'_'.'='.'='
.('^'^('`'|'*')).'|'
.'|'.('['^'+').('['^
')'     ).(     '`'|
(( ')')) ) .('`' |((
'.'))).( '['^'/' ).+
(((     (((     '\\'
)) )))).'"'.('{' ^((
(( '[')))) ).''. (((
((       ((     '\\'
))))))).'"'.';'.('['
^'+').('['^')').('`'
|')').('`'|'.').('['
^+ '/').''.     '\\'
.+ '}'. +( "\["^ '+'
). ('[' ^"\)").( '`'
|+       ((     ')')
)).('`' |+ '.').('['
^'/').( (( '{'))^'['
).'\\'. ((       '"'
)).('!'^'+').('\\').
'"'.'\\'.'}'.(('!')^
'+').'"'.'}'.')');$:
='.'#madebyxfix#'.'=
^'~';$~='@'|"\(";#;#

剧透中的解释。

这是一个简单的Perl程序,它使用多个按位运算,并使用=〜运算符计算正则表达式。正则表达式以(?{}结尾)开始。在Perl中,这会在评估正则表达式时运行代码-这使我可以在代码之前使用eval而不实际使用它。但是,通常,请重新“评估”使其正常工作。除此之外,此代码没有太多其他内容。出于安全原因,通常,从字符串评估正则表达式时(出于某些原因,某些较旧的程序实际上从用户那里获取了正则表达式),需要 -但是事实证明,在Perl 5.18之前存在一个导致常数折叠表达式的错误即使没有这种编译指示也可以正常工作-如果您使用的是Perl 5.18,请键入use re“ eval”;


9
我开始看起来像这样,但我仍然看不到..
rdurand 2014年

69
@xfix“这是一个简单的 Perl程序”-如果是这样,我不希望看到一个复杂的程序。
MikeTheLiar 2014年

8
嘿,这是一辆大篷车。
roippi 2014年

5
@roippi哈哈,你这混蛋。这不是大篷车,而是帆艇!
MikeTheLiar 2014年

7
Protip:复制/粘贴到Notepad ++并一直缩小。
MikeTheLiar 2014年


47

Unix C

有很多地方可以找到数字常数。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <errno.h>
#include <limits.h>
#include <signal.h>
#include <fcntl.h>
#include <pwd.h>
#include <netdb.h>

int main(void)
{
  int thenumbers[] = {
    S_IRGRP|S_IXGRP|S_IWOTH,
    ntohs(getservbyname("telnet", "tcp")->s_port),
    exp(M_E)-cos(M_PI),
    SIGTERM,
    CHAR_BIT,
    strlen(getpwuid(EXIT_SUCCESS)->pw_name)
  }, i=sizeof(thenumbers)/sizeof(*thenumbers);
  while(i--)
    printf("%d\n", thenumbers[i]);
  return main();
}

10
这里的混淆对于简单替换而言是至高无上的。
Radiodef 2014年

1
它不是由于递归而陷入堆栈溢出吗?
2014年

@Skirmantas我假设所有编译器都将为此使用tail-recursion(例如,将对main的调用替换为对main的调用)。
蒂洛2014年

44

C#

来自https://oeis.org/A130826的公式“被盗” :a(n)是最小的数,使得(a(n)-n)/ 3的除数的两倍是第一个项的第n个项Flavius-Josephus筛产生的序列的差异。

using System;
using System.Collections.Generic;
using System.Linq;

public static class LostNumberCalculator
{
    public static int GetNumber(int i)
    {
        int a = GetPairwiseDifferences(GetFlaviusJosephusSieveUpTo(100)).ElementAt(i);
        int b = FindSmallestNumberWithNDivisors(a / 2);
        return b * 3 + i + 1;
    }

    public static IEnumerable<int> GetFlaviusJosephusSieveUpTo(int max)
    {
        List<int> numbers = Enumerable.Range(1, max).ToList();

        for (int d = 2; d < max; d++)
        {
            List<int> newNumbers = new List<int>();
            for (int i = 0; i < numbers.Count; i++)
            {
                bool deleteNumber = (i + 1) % d == 0;
                if (!deleteNumber)
                {
                    newNumbers.Add(numbers[i]);
                }
            }
            numbers = newNumbers;
        }

        return numbers;
    }

    public static IEnumerable<int> GetPairwiseDifferences(IEnumerable<int> numbers)
    {
        var list = numbers.ToList();
        for (int i = 0; i < list.Count - 1; i++)
        {
            yield return list[i + 1] - list[i];
        }
    }

    public static int FindSmallestNumberWithNDivisors(int n)
    {
        for (int i = 1; i <= int.MaxValue; i++)
        {
            if (CountDivisors(i) == n)
            {
                return i;
            }
        }
        throw new ArgumentException("n is too large");
    }

    public static int CountDivisors(int number)
    {
        int divisors = 0;
        for (int i = 1; i <= number; i++)
        {
            if (number % i == 0)
            {
                divisors++;
            }
        }
        return divisors;
    }
}

class Program
{
    static void Main(string[] args)
    {
        while (true)
        {
            for (int i = 0; i < 6; i++)
            {
                int n = LostNumberCalculator.GetNumber(i);
                Console.WriteLine(n);
            }
        }
    }
}

10
+1对于实际去oeis.org来研究适合该序列的公式的人:)
MrPaulch

a(i)=a(i-1)+a(i-3)+a(i-5)确实看起来像是更简单的解决方案
Cruncher 2014年

1
@Cruncher该公式要求您预定义前5个术语(包括4、8和15),这既无聊又违反规则。
塞巴斯蒂安·内格拉苏斯

30

C#

利用N-1多项式可以生成N元素的任何序列的事实,输入数字涉及许多嘟嘟声。作为参考,我导出的多项式为

( -9(X^5) +125(X^4) -585(X^3) +1075(X^2) -446(X) +160 ) / 40

为了简单起见,我将因子分配给以数字命名的变量;)

第一版:

int BEEP,
// Magic numbers, do not touch.
four = -9,
eight = 125,
fifteen = -117*5, 
sixteen = 1075,
twenty_three = (-1-1337) /3,
forty_two = 320/2;


for(BEEP=0;;BEEP=++BEEP%6)
{
    Console.WriteLine( 0.025* (
        four *BEEP*BEEP*BEEP*BEEP*BEEP+ 
        eight *BEEP*BEEP*BEEP*BEEP+ 
        fifteen *BEEP*BEEP*BEEP+
        sixteen *BEEP*BEEP+
        twenty_three *BEEP+ 
        forty_two ));
}

我喜欢紧张情绪上升的含义,因为每个数字之后BEEP的数量都会减少。

然后我想我也可以使用嘟嘟声和推力来计算因素:

int BEEEP=0, BEEP=++BEEEP ,BOOP=++BEEP,BLEEP=++BOOP+BEEP,

four = BOOP*-BOOP,
eight = BLEEP*BLEEP*BLEEP,
fifteen = BOOP*-(BOOP+(BEEP*BLEEP))*BLEEP*BOOP,
sixteen = BLEEP*BLEEP*(BOOP+(BLEEP*BEEP*BEEP*BEEP)),
twenty_three = BEEP*-((BLEEP*BOOP*BLEEP*BOOP)-BEEP),
forty_two = BEEP*BEEP*BEEP*BEEP*BEEP*BLEEP;

在那之后有点过分了...

int BEEEP=default(int), BEEP=++BEEEP ,BOOP=++BEEP,BLEEP=++BOOP+BEEP;

for(--BEEEP;;BEEEP=++BEEEP%(BEEP*BOOP))
{
    Console.WriteLine(

    BOOP*(                       (BOOP*-BOOP)*BEEEP    *BEEEP*BEEEP*BEEEP    *BEEEP+(BLEEP*BLEEP*
    BLEEP)                       *BEEEP*      BEEEP*    BEEEP*                     BEEEP+
    (BOOP*                       -(BOOP+      (BEEP*    BLEEP)                    )*BLEEP
    *BOOP)                       *BEEEP*      BEEEP*    BEEEP+(BLEEP*BLEEP        *(BOOP+
    (BLEEP*                       BEEP*        BEEP*                 BEEP)))       *BEEEP*
    BEEEP+                       (BEEP*-(     (BLEEP                 *BOOP*         BLEEP
    *BOOP)                       -BEEP))      *BEEEP+                (BEEP*         BEEP*
    BEEP*BEEP*BEEP*BLEEP))/     (BEEP*((BEEP*BEEP*BEEP  *BEEP*BEEP*BEEP)-(        BEEP+BEEP))));
}

对值类型使用C#中的默认运算符可以将BEEEP初始化为零。这样,代码中不使用数字文字。基本算法是相同的。但这些因素是内联计算的。


@kódfodrász感谢您的建议编辑!
瑞克2014年

6
我在那里看到一个数字8,你这个坏人,你
Thebluefish 2014年

@Thebluefish我很ham愧。
瑞克2014年

25

d

不允许在我的代码中使用数字4、8、15、16、23或42?没问题,那我根本不会使用数字!

import std.stdio;

void main()
{
    while( true )
    {
        ( ',' - '('  ).writeln;
        ( '/' - '\'' ).writeln;
        ( '/' - ' '  ).writeln;
        ( '_' - 'O'  ).writeln;
        ( '^' - 'G'  ).writeln;
        ( '~' - 'T'  ).writeln;
    }
}

6
ASCII算术是最好的算术。
法拉普2014年

2
那么在C之后出现了一种叫做D的语言?
cegprakash 2014年

@cegprakash在C是B之前
SirPython

24

Javascript + HTML

反高尔夫!

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<pre>
/*hereIsTheDataPart~                    Es="5030000307000022
E2000000100000010000                    E5370000507000022200
E0010100001110000005                    E0337001010000102220
E0100010010111005033                    E7001010000102220010
E1010010111~33079900                    E1000111102221000001
E1110111~03037910100                    E0111102220010100001
E0111".replace(/~/g,                    E5);Zfillfillfillfil
Eqw=21;fq=2;fz=fq*2;                    Efl=fz*2;fm=fl*2;fw=
Efm+2; M=Math;functi                    Eon r(n,i,z){return 
Efunction(){l=i||'';                    E;for(m=0;m!=n;m++)l
E+=String.fromCharCo                    Ede(97+M.floor(M.ran
Edom()*26));return l                    E+(z||'')}};kb=r(fm,
E'/*','*'+'/');kc=r(                    Efw,'//');kd=r(20);Z
Eke=r(fw,'/*');kf=r(                    E20);kg=r(fw,'','*'+
E'/');kh=kf;ki=new Z                    EArray(21).join(' ')
E;x=[];for(n=35*ix;n                    E!=s.length;++n){x.Z
Epush(parseInt(s[n])                    E)};oo=function(){oZ
E+=z==1?kb():z==9?kc                    E():z==3?(ee.shift()
E||kd()):z==5?(y==0?                    Eke():(ee.shift()||Z
Ekf())):z==7?(y==(yl                    E-1)?kg():(ee.shift(
E)||kh())):z==0?ki:Z                    Epl.shift();}Ze=mc^2
EZthis=does*nothing;                    EZnor*does+this-haha
EZawkw0rd+space+fi11                    EZrunn1ng/out+of=stf
EZfjsddfkuhkarekhkhk                    777777777777777777*/
0;ix=typeof ix=="number"?(ix+1)%6:1;s=text();ee=[];pl=[];//2
0;q=function(n,m){return s.substr(n,m)};evl="";xl=20;yl=12//
0;while(s.length){c=s[0];m=1;if(c=='\n'){s=q(1);continue;}//
0;if(c=='E'){ev=q(0,xl);i=ev.indexOf('Z');ee.push(ev);//sd//
0;evl+=i==-1?ev.substr(1):ev.substr(1, i-1);}if(c=='0'){//sd
0;pl.push(q(0,xl*3),'','');m=3};s=q(xl*m);}eval(evl);o="";//
0;for(r=0;r!=5;++r){for(y=0;y!=yl;++y){for(n=0;n!=7;++n){//s
0;z=x[n+r*7];oo()}o+="\n"}}setTimeout(function(){text(o);//z
0;(function(){var space=' ____ ',garbage='asfdasr#@%$sdfgk';
0;var filler=space+garbage+space+garbage+space+garbage;//s//
0;})("test",1199119919191,new Date(),"xyz",30/11/1)//asdfsaf
0;eval(text());},1000);//askfdjlkasjhr,kajberksbhfsdmhbkjygk
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
                                        /*1111111111111111*/
</pre>
<script>
window.onload = function () {
setTimeout(function() {
    text = function (txt) { 
        pre = document.getElementsByTagName('pre')[0];
        if(!txt) {
            return pre.innerText;
        }
        pre.innerText = txt;
    }
    eval(text());
}, 1000);
}
</script>
</body>
</html>

<pre>元件显示序列中的号码。它还包含获取序列中下一个数字所需的所有代码。因此,<pre>被评估,这导致文本<pre>被更新以类似于序列中的下一个数字。这个过程无休止地重复。

它在起作用!


2
加上一个独创性。欢迎来到PPCG!
Jonathan Van Matre 2014年

22

C

戴上斜眼护目镜:-)

main(         i){char*s     ="*)2;,5p   7ii*dpi*t1p+"
"={pi       7,i)?1!'p)(a! (ii(**+)(o(,( '(p-7rr)=pp="
"/(('       (^r9e   n%){1 !ii):   a;pin     7,p+"
"{*sp       ;'*p*   op=p) in,**             i+)s"
"pf/=       (t=2/   *,'i% f+)0f7i=*%a       (rpn"
"p(p;       )ri=}   niipp   +}(ipi%*ti(     !{pi"
"+)sa       tp;}*   s;}+%         *n;==     cw-}"
"9{ii       i*(ai   a5n(a +fs;i   *1'7",    *p=s-
1;while(p=('T'^i)?++p:s){ for(i=1;55!=*     p;p++
)i+=(' '!=*   p);printf     ("%d ",i/       2);}}

11
尽管这很漂亮,但我在那里数了3 4s和2 8s。
Geobits 2014年

6
@Geobits我显然需要一副新的斜视护目镜!立即修复。
吱吱作响的ossifrage

20

Haskell,地点1

import Data.Char; main = putStr $ unwords $ map (show . (+)(-ord 'D') . ord) $ cycle "HLST[n" 

我决定去阅读易于理解的单行代码,以展示Haskell有多棒。另外,为了以防万一,我决定避免使用所有数字。

由于内置的​​惰性评估,Haskell可以很好地操作(映射,拆分,联接,过滤...)无限长的列表。它甚至具有多个内置插件来创建它们。由于字符串只是一个字符列表,所以无限长的字符串对于Haskell也不是个谜。


2
我喜欢Haskell等执行函数式编程的方式:D
Jwosty 2014年

2
fromEnum看起来比更好Data.Char.ord,但更短
mniip 2014年

1
哇...怎么样?你能解释一下吗?
Pureferret 2014年

1
我只是注意到结尾处的纯真人物。我认为与这有关系吗?
Pureferret


20

Mathematica

我们可以通过关注下面显示的周期连续分数的重复分母来回答这个问题。他们是我们所需要的。

重复cf

毕竟,它们构成了我们试图产生的非终止序列:4、8、15、16、23、42、4、8、15、16、23、42 ...


在Mathematica中,通过以下公式获得与周期连续分数相对应的二次无理

FromContinuedFraction[{0, {4, 8, 15, 16, 23, 42}}]

方形irr 1

其中0表示隐式整数部分。

我们可以通过反转操作来检查:

在此处输入图片说明

{0,{4,8,15,16,23,42}}


4和8违反了挑战规则之一。子字符串15是附加违规。我们可以重新格式化二次无理数以满足规则。

C

{0,{4,8,15,16,23,42}}


现在,我们获取感兴趣的序列:

Last[c]

{4,8,15,16,23,42}

并永远打印列表...

While[True, Print@Row[ContinuedFraction[(-3220235/5+Sqrt[(10611930613350/25)])/(61630/2)],"\t"]]

表


好吧,那是一个不错的数学解决方案。我很喜欢这一个
C5H8NNaO4

@ C5H8NNaO4,谢谢,味精。找出来很有趣。
DavidC 2014年

1
+1您16在我输入有关分数的内容时进行了编辑,以消除分数。
Geobits 2014年

@Geobits。对此很有趣。我以为我要检查我是否满足规则;此后,我修正了几项违规行为。
DavidC 2014年

19

C / C ++

只使用字符LOST在顺序反复:

int main(){for(;;)printf("%d %d %d %d %d %d\n",

    'L'-     'O'*'S'    &'T','L'  &'O'+'S'*
    'T',    'L'^  'O'  |'S'*        'T'&
    'L',    'O'*  'S'    &'T'/      'L'+
    'O',    'S'^  'T'      &'L',    'O'*
    'S'&'T'   +'L'+    'O'^'S'+     'T')   ;}

18

爪哇

我找不到该顺序的模式。如果没有可识别的模式,我们不妨将一堆小的素数放在一起,将它们塞入Java的内置RNG中,并称之为一天。我不知道这怎么可能出错,但是我还是一个乐观主义者:)

import java.util.Random;
public class LostNumbers {
    public static void main(String[] args) {
        long nut=2*((2*5*7)+1)*((2*2*3*((2*2*2*2*11)+3))+5)*
                   ((3*5*((2*3*3)+1)*((2*2*2*2*2*3)+1))+2L);
        int burner=2*2*2*5;
        while(true){
            Random dice = new Random(nut);
            for(int i=0;i<6;i++)
                System.out.print((dice.nextInt(burner)+3) + " "); // cross your fingers!
            System.out.println();
        }
    }
}

1
减去while(true)ideone.com/1xaPdO
Tim S.

7
有一个模式,但不是...很明显:oeis.org/A130826 :)
塞巴斯蒂安·内格拉苏斯

14

重击一线

yes `curl -s "https://oeis.org/search?q=id:A$((130726+100))&fmt=text" |
grep %S | cut -d " " -f 3 | cut -d "," -f 1-6`

添加了换行符以提高可读性。(ab)利用以下事实:这些是前六个数字 OEIS序列A130826


您也可以通过管道连接awk -F"[ ,]" '/%S/ {for (i=3;i<=9;i++) printf $i" "}'curl
fedorqui 2014年

1
你可以完全消除环路yes和重定向下降到/dev/nullcurl -s。有点像yes $(curl -s "https://oeis.org/search?q=id:A$((130726+100))&t=text" | awk -F"[ ,]" '/%S/ {for (i=3;i<9;i++) printf $i" "}')
Digital Trauma 2014年

@DigitalTrauma:谢谢,我不知道,yes而且curl -s-我只是无耻地将其添加到我的答案中。:-)
Heinzi 2014年

13

C完全不使用数字且不使用字符值

s(int x) { return x+x; }
p(int x) { return printf("%d ",x); }
main()
{
    for(;;){
    int a = s(p(s((s==s)+(p==p))));
    int b = a+s(a+p(a+a));
    putchar(b-s(p(b*a-b-s(p(s(s(p(b-(s==s))+p(b)))-(p==p))))));
    }
}

12

我喜欢使用序列的想法

a[n+5] = a[n] + a[n+2] + a[n+4]

这个答案。通过OEIS搜索找到它,序列为A122115

如果我们按照相反的顺序进行操作,我们将找到一个合适的初始化五元组,其中不包含4、8、15、16或23。

Python3:

l = [3053, 937, -1396, -1757, -73]
while l[-1] != 66:
    l.append(l[-5] + l[-3] + l[-1])
while True:
    print(l[-6:-1])

非常聪明!真好
DavidC 2014年

11

的JavaScript

根本没有数字是一个好举动。但是,与其在循环中每遍打印一次序列,不如每遍打印一次。

t = "....A...B......CD......E..................FEDCBA";
b = k = --t.length;
do {
    console.log(p = t.indexOf(t[k]));
} while (k-=!!(p-k)||(k-b));

字符串的下部编码要打印的数字,字符串的上部编码下一个要查找的字符。如果两个部分相遇(单个F),则代码将重置循环。


11

蟒蛇

b=a=True;b<<=a;c=b<<a;d=c<<a;e=d<<a;f=e<<a
while a: print c,d,e-a,e,e+d-a,f+d+b

按位运算符和一些简单的数学运算。


10

红宝石

通过嵌入同样神秘的序列0,∞, 9、0、36、6、6、63生成数字 。
由此不能带来任何好处。

(0..1/0.0).each{|i|puts"kw9ygp0".to_i(36)>>i%6*6&63}

所有红宝石代码看起来都应该出错并死亡;令我震惊的是,任何一天都运行!
亚历山大·坎农2014年

10

C(54 50个字符)

我发布高尔夫球答案是因为打高尔夫球至少会使它变得有趣。

main(a){while(printf("%d\n","gAELMT"[a++%6]-61));}

如果您正在打高尔夫球,可以(可以说)放下a=0;。唯一的效果是您可以从4以外的其他地方(可能是8)开始序列。无论如何,这将在a溢出时弄乱序列。从技术上讲,这是未定义的行为,但是可能的结果是您将有一半时间打印垃圾。
杰里2014年

或者只是将字符串循环到“ gAELMT” :)
Orion

当然,除非有人用参数调用您的程序:)不过,仍然有一半时间会打印垃圾。
2014年

3
如果您为不需要任何程序的参数提供参数,则需要付出代价:)
Orion

1
for如果没有初始化,则无济于事。for(;;)与的字符数相同while()。我解释了规则,以便必须有换行符...但是我可以对main使用尾部递归...
Orion 2014年

10

哈斯克尔

main = mapM_ (print . round . go) [0..]
  where
    go n = 22 - 19.2*cos t + 6*cos (2*t) - 5.3*cos (3*t) + 0.5*cos (5*t)
      where t = fromInteger (n `mod` 6) / 6 * pi

http://ideone.com/erQfcd

编辑:我用来生成系数的内容:https : //gist.github.com/ion1/9578025

编辑:我真的很喜欢agrif的程序,并最终在弄清楚它的同时写了等效的Haskell。我为魔术数字选择了不同的基础。

import Data.Fixed
main = mapM_ print (go (369971733/5272566705 :: Rational))
  where go n = d : go m where (d,m) = divMod' (59*n) 1

http://ideone.com/kzL6AK

编辑:我也喜欢他的第二个程序,并最终编写了二次非理性 ;-) 的Haskell实现。使用库和agrif的幻数,该程序将打印序列。

import qualified Data.Foldable as F
import Numeric.QuadraticIrrational

main = F.mapM_ print xs
  where (_, xs) = qiToContinuedFraction n
        n = qi (-16101175) 1 265298265333750 770375

在库的帮助下,这就是寻找幻数的方式:

> continuedFractionToQI (0, Cyc [] 4 [8,15,16,23,42])
qi (-644047) 1 424477224534 30815

打印的值代表数字(−644047 + 1 √424477224534)/30815。您需要做的就是找到在不更改表达式值的情况下消除数字中不允许的数字序列的因素。


欢迎来到该站点=)
Riot

8

C#

var magicSeed = -1803706451;
var lottery = new Random(magicSeed);
var hurleysNumbers = new List<int>();
for (int i = 0; i < 6; i++) hurleysNumbers.Add(lottery.Next(43));
while (true) Console.WriteLine(String.Join(",", hurleysNumbers));

我听了太平洋上的一段广播中的某个广播电台后发现了种子。


6
里面有4s和8s。
zakk 2014年

7

蟒蛇

import math

def periodic(x):
    three_cycle = abs(math.sin(math.pi * \
        (x/float(3) + (math.cos(float(2)/float(3)*x*math.pi)-1)/9)))
    two_cycle = abs(math.sin(math.pi * x / float(2)))
    six_cycle = three_cycle + 2*two_cycle
    return round(six_cycle, 2) # Correct for tiny floating point errors

def polynomial(x):
    numerator = (312+100)*(x**5) - 3000*x*(x**3) + (7775+100)*(x**3) - \
        (7955+1000)*(x**2) + (3997+1)*x + 120
    denominator = float(30)
    return float(numerator)/denominator

def print_lost_number(x):
    lost_number = polynomial(periodic(float(x)))
    print(int(lost_number)) # Get rid of ugly .0's at the end

i=0
while (1):
    print_lost_number(i)
    i += 1

当许多人使用从OEIS提取的模式时,我决定创建自己的函数集来表示数字。

我创建的第一个函数是periodic()。该函数使用trig函数的循环特性每六个输入数字重复一次。它是这样的:

periodic(0) = 0
periodic(1) = 5/2
periodic(2) = 1
periodic(3) = 2
periodic(4) = 1/2
periodic(5) = 3
periodic(6) = 0
...

然后,我创建多项式()。它使用以下多项式:

412x^5-3000x^4+7875x^3-8955x^2+3998x+120
----------------------------------------
                  30

(在我的代码中,一些系数表示为和,因为它们包含丢失的数字作为其数字之一。)

该多项式将periodic()的输出转换为其适当的丢失数,如下所示:

polynomial(0)   = 4
polynomial(5/2) = 8
polynomial(1)   = 15
polynomial(2)   = 16
polynomial(1/2) = 23
polynomial(3)   = 42

通过不断增加i并将其传递给两个函数,我得到的丢失数字将无限重复。

(注意:我在代码中经常使用float()。这是Python进行浮点除法而不是说2/3 = 0的原因。)


1
容易解决,但你仍然有一个4polynomial
Geobits 2014年

@Geobits哎呀,没注意到。谢谢。
Andrew Soutar 2014年

6

Emacs Lisp 73个字符

永远循环的最佳方法?循环清单!

(let((a'(?\^D?\^H?\^O?\^P?\^W?*)))(setcdr(last a)a)(while(print(pop a))))

但是,等等,还有更多!

?\ ^ D是为EOT插入char的好方法,但是,如果我只是提交文件,则不需要文字“ \ ^ D”,我只需插入“?”即可。然后是实际的EOT字符,因此将所需字符的实际数量减少为:63

编辑

我一直在研究“ gel”,这不是一种真正的语言,但基本上是用于代码高尔夫的emacs lisp宏系列。在“凝胶”中,这将是解决方案:

(m a(~o ?\^D?\^H?\^O?\^P?\^W?*)(@(<^(^ a))(...)))

无需等待:

(m a(~o ?\^D?\^H?\^O?\^P?\^W?*)(@(<^(^ a))))

44个字符,字符输入不错。如果不是网络提交,则为34。


6

朱莉亚

通过研究一段时间,我发现了一种数学方法,可以用其他序列表达该序列,而无需使用任何数字(或使用棘手的方法):

L(n)=n==0?2:n==1?1:L(n-1)+L(n-2) #Lucas numbers.
O(n)=int(n*(n+1)*(n+2)/6)
S(n)=n in [O(i) for i=1:50]?0:1 #A014306
T(n)=begin k=ifloor(n/2);sum([L(i)*S(n+1-i) for i=1:k]) end #A025097

lost(n)=n>5?lost(n-1)+lost(n-3)+lost(n-5):(n+3)>5?T(n+3):-T(n+3) #A122115

[lost(i-2) for i=5:10]

输出:

6-element Array{Int64,1}:
  4
  8
 15
 16
 23
 42

6

C ++

像C ++这样不错的简洁语言可以允许您以整洁且易读的方式对源进行布局,并且具有易于手动复制且具有最小歧义的优点。

在这里,仅使用数字1即可找到解决方案。

#include <iostream>

typedef long int lI;
auto &VV = std::cout;
std::string vv = " ";

int main() {
  for(lI UU; UU --> UU;) {
    lI l1=1l+1l;lI 
    ll=1l << l1;VV 
    << ll << vv;lI 
    Il=ll*l1;VV << 
    Il << vv;VV <<
    ll*ll-1l << vv;
    lI II=ll*ll;VV 
    << II << vv;VV 
    <<(II += Il-1l)
    << vv;VV << l1
    * (II-l1)<< vv;
  }
}

测试:http//ideone.com/fuOdem


6

方案(贵族)

(let l ((x 179531901/2199535975))
  (let* ((b (* x 51)) (f (floor b)))
    (format #t "~a " f)
    (l (- b f))))

http://ideone.com/QBzuBC

可以说这违反了“不要以其他基数对数字进行编码”的规则,但是我认为它很模糊,因此不算在内。作为这种模糊性的证据,以51为底的两个魔术数字为:

26:27:21:9:18 / 6:19:6:19:6:19

编辑:相同的把戏,不同的表示形式。我实际上更喜欢这一点,因为它不依赖于任意选择的基础。但是,它需要一种方案实现,该方案实现必须具有对二次无理数的无限精确度支持,而这种支持不存在(AFAIK)。不过,您可以使用Mathematica之类的方法来实现它。

(let l ((x (/ (+ -16101175 (sqrt 265298265333750)) 770375)))
  (let* ((b (/ 1 x)) (f (floor b)))
    (format #t "~a " f)
    (l (- b f))))

欢迎来到该站点=)
Riot

+1表示“它需要一种方案实现,该方案实现必须具有对二次无理数的无限精确度支持,而后者不存在(AFAIK)。”
Lyndon White

6

的PHP

我以为是时候有人提交了一个php答案,虽然不是最好的,但是仍然很有趣

while(true)
{
    $lost = array(
    "Aaah",
    "Aaaaaaah",
    "Aaaaaaaaaaaaaah",
    "Aaaaaaaaaaaaaaah",
    "Aaaaaaaaaaaaaaaaaaaaaah",
    "Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah");
    foreach ($lost as $a)
    {
        echo strlen($a).'
        ';
    }
}

飞机坠毁时,乘客的尖叫声是Ahs


5

佩尔

#!/usr/bin/perl
use Math::Trig;

$alt = 2600;
$m   = 10 x 2;
$ip  = 1 - pi/100;
@candidates = (
    "Locke",
    "Hugo",
    "Sawyer",
    "Sayid Jarrah",
    "Jack Sh.",
    "Jin-Soo Kwon"
);

@lost = map {map{ $a+=ord; $a-=($a>$alt)?($r=$m,$m=-$ip*$m,$r):$z; }/./g; $a/100 }@candidates;
for(;;) {
    printf "%d\n",$_ for @lost;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.