4, 8, 15, 16, 23, 42 [đã đóng]


90

4, 8, 15, 16, 23, 42

Viết chương trình xuất ra dãy số này vô hạn. Tuy nhiên, Số không được xuất hiện trong mã nguồn của bạn ở bất cứ đâu.

Dưới đây không phải là chương trình Java hợp lệ để xuất Số vì Số xuất hiện trong mã nguồn của nó:

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)
        );
    }
}

Định nghĩa của "Các số không được xuất hiện trong mã nguồn của bạn" như sau:

  • Bạn không được sử dụng số 4.
  • Bạn không được sử dụng số 8.
  • Bạn không được sử dụng chữ số 1 theo sau là chữ số 5.
  • Bạn không được sử dụng chữ số 1 theo sau là chữ số 6.
  • Bạn không được sử dụng chữ số 2 theo sau là chữ số 3.

Nếu ngôn ngữ của bạn bỏ qua các ký tự nhất định có thể được đặt giữa các chữ số, thì đó không phải là sự thay thế hợp lệ. Vì vậy, ví dụ nếu ngôn ngữ của bạn diễn giải theo nghĩa đen 1_5như 15, điều này sẽ được tính là chữ số 1 theo sau là chữ số 5.

Các cơ sở thay thế được bao gồm trong hạn chế, vì vậy, ví dụ:

  • Nhị phân 100 không thể được sử dụng thay thế cho 4.
  • Octal 10 không thể được sử dụng thay thế cho 8.
  • Hệ thập lục phân F không thể được sử dụng thay thế cho 15.

Do đó, sau đây là một chương trình Java hợp lệ (nhưng không được truyền cảm hứng) để xuất các Số vì các Số không xuất hiện trong mã nguồn của nó:

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);
        }
    }
}

Lưu ý rằng trong chương trình đó, '*''&'được thay thế cho các số nguyên 42 và 38, vì nếu không, các chữ số 4 và 8 sẽ xuất hiện trong mã nguồn của nó.

Định nghĩa của "đầu ra chuỗi vô tận" là mở để giải thích. Vì vậy, ví dụ, một chương trình tạo ra glyphs trở nên nhỏ hơn cho đến khi chúng "nhỏ" vô hạn sẽ có hiệu lực.

Kudos nếu bạn có thể tạo chuỗi theo cách nào đó về cơ bản không phải là mã hóa cứng mỗi số.

  • Xuất phát nó thành một công thức. Ấn tượng của tôi là không có một nhưng có thể có hoặc nó có thể bị làm giả.
  • Sửa một trình tạo giả ngẫu nhiên để trả về chuỗi.

Đây là một cuộc thi phổ biến, vì vậy hãy sáng tạo. Câu trả lời có nhiều phiếu bầu nhất vào ngày 26 tháng 3 là người chiến thắng.


8
Tôi có thể đếm 6 lượt tải xuống nhưng không có nhận xét nào: /
Vereos

11
@Vereos, "Đây là một câu hỏi ngu ngốc" không mang tính xây dựng, đó có thể là lý do tại sao không ai đăng nó dưới dạng một bình luận.
Peter Taylor

18
Có 11 loại người trên thế giới này: những người đã xem Lost , những người không và những người không hiểu nhị phân.
squossish ossifrage

7
@PeterTaylor Chắc chắn, nhưng những người mới đến hầu hết sẽ không nhận được điều đó và rời khỏi trang web thay vì cố gắng cải thiện các câu hỏi trong tương lai của họ. Tôi đoán đó This isn't an interesting question, IMHO, since the solution is pretty trivial. Please post in the sandbox next time.sẽ là cách tốt hơn This is a stupid question., nhưng đó chỉ là ý kiến ​​cá nhân của tôi.
Vereos

3
Tôi nhận thấy câu hỏi không cấm xuất ra các số khác . Vì vậy, ít nhất là theo lý thuyết khỉ vô hạn, một trình tạo số giả ngẫu nhiên không bị biến đổi nên thực hiện thủ thuật.
kojiro

Câu trả lời:


233

Java

Tôi quyết định thêm một mục khác vì nó hoàn toàn khác với mục đầu tiên của tôi (giống như một ví dụ).

Chương trình này tính toán trung bình của một mảng được nhập bởi người dùng ...

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;
        }
    }
}

... Hay không?

java.lang.Array IndexOutOfBoundException: 4
    tại Numbers.getSum (Numbers.java:8)
    tại Numbers.getAlusive (Numbers.java:15)
    tại Numbers.roundAlusive (Numbers.java:16)
    tại Numbers.beginLoop (Numbers.java:23)
    tại Numbers.main (Numbers.java:42)
java.lang.Array IndexOutOfBoundException: 4
    tại Numbers.getSum (Numbers.java:8)
    tại Numbers.getAlusive (Numbers.java:15)
    tại Numbers.roundAlusive (Numbers.java:16)
    tại Numbers.beginLoop (Numbers.java:23)
    tại Numbers.main (Numbers.java:42)
java.lang.Array IndexOutOfBoundException: 4
    tại Numbers.getSum (Numbers.java:8)
    ...

17
Điều đó thật tuyệt! Tôi sẽ không nghĩ về điều gì đó như thế.
Jordon Biondo

2
Wow, thật đẹp! Ý tưởng tuyệt vời;)
Pierre Arlaud

5
Thiên tài! Mặc dù đầu ra hơi dài dòng, nhưng tôi đoán điều đó có liên quan đến ngôn ngữ bạn đã chọn ở đây. ;)
Pieter Witvoet

3
Ngay khi tôi nghĩ Python "lizt = Mất cốt truyện", người ta không thể đứng đầu ...
Dave

3
@justhalf Thật ra nó làm tôi bực mình vì đây là câu trả lời hàng đầu trong một thời gian ở đó. Không có gì vui để chiến thắng câu hỏi của riêng tôi.
Radiodef 20/03/2016

184

Con trăn

#!/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)

Chỉnh sửa: Theo đề xuất của nneonneo, tập lệnh hiện không bao gồm chữ số.


2
Vì vậy, đơn giản, và như vậy là tốt.
Konrad Borowski

4
Việc này có được phiếu bầu của tôi hay không hoàn toàn phụ thuộc vào câu trả lời cho câu hỏi này: cách đánh vần của "lizt" có phải là "Arzt" không? EDIT: Tôi đang đùa ai, dù sao thì nó cũng được bình chọn.
Plutor

6
Tôi sẽ viết while True:để câu trả lời của bạn không có chữ số nào cả.
nneonneo

2
while True:phổ biến hơn.
Martin Uting

1
Điều đó không làm hỏng quy tắc "không có cơ sở thay thế"? Về cơ bản, nó chỉ là một dãy các số cơ sở 1 :-)
Daniel

77

Perl

Không có gì ẩn trong mã nguồn. Không. Nếu mã không hoạt động, hãy nhập use re "eval";trước mã (bắt buộc trong Perl 5.18).

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

Giải thích trong spoiler.

Đây là một chương trình Perl đơn giản, sử dụng nhiều hoạt động bitwise và đánh giá biểu thức chính quy bằng toán tử = ~ . Regex bắt đầu bằng (? { Và kết thúc bằng }) . Trong Perl, điều này chạy mã trong khi đánh giá biểu thức chính quy - điều này cho phép tôi sử dụng eval mà không thực sự sử dụng nó. Tuy nhiên, thông thường, cần phải "eval" , vì lý do bảo mật, khi đánh giá các biểu thức chính quy từ các chuỗi (một số chương trình cũ thực sự lấy biểu thức chính quy từ người dùng) - nhưng hóa ra trước Perl 5.18 đã xảy ra lỗi gây ra các biểu thức gập liên tục để hoạt động ngay cả khi không có pragma này - nếu bạn đang sử dụng Perl 5.18, hãy nhập sử dụng re "eval";trước mã để làm cho nó hoạt động. Ngoài ra, không có nhiều mã khác.


9
Tôi bắt đầu trông giống như này nhưng tôi vẫn không nhìn thấy nó ..
rdurand

69
@xfix "Đây là một chương trình Perl đơn giản " - nếu đó là trường hợp, tôi ghét phải xem một chương trình phức tạp.
MikeTheLiar

8
Hãy nhìn xem, đó là một schooner.
roippi

5
@roippi Haha, đồ khốn ngu ngốc. Nó không phải là một schooner, nó là một SAILBOAT!
MikeTheLiar

7
Protip: sao chép / dán vào Notepad ++ và phóng to hết cỡ.
MikeTheLiar

55

Brainfuck

Tôi rất tệ trong nghệ thuật ASCII!

++        ++++++++    +[>+>++    ++>++++
+<        <<-]>++>    >-           --<
<<        +[    >>    >.<.>++      ++.
<.        >-    --    ----.++      ++.
<.>---    -.+++++.         <.      >--
-/-./+    .<.>+.-/    -.++<<.      </]

Kiểm tra nó ở đây: http://ideone.com/kh3DYI


Đây là một giải pháp thực sự tốt đẹp :)
gilbertohasnofb

47

Unix C

Có rất nhiều nơi để tìm hằng số.

#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
Sự giấu giếm ở đây là tối cao để thay thế đơn giản.
Radiodef

1
Nó không chạy vào stack stack do đệ quy?
Trượt tuyết

@Skirmantas Tôi giả sử tất cả các trình biên dịch sẽ sử dụng đệ quy đuôi cho việc này (ví dụ: thay thế cuộc gọi thành chính bằng một bước nhảy đến chính).
Tyilo

44

C #

Công thức "bị đánh cắp" từ https://oeis.org/A130826 : a (n) là số nhỏ nhất sao cho số lần chia của (a (n) -n) / 3 cho số hạng thứ n trong lần đầu tiên sự khác biệt của trình tự được tạo ra bởi sàng 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 Đối với ai đó đã thực sự truy cập oeis.org để nghiên cứu một công thức phù hợp với trình tự :)
MrPaulch 17/03/2016

a(i)=a(i-1)+a(i-3)+a(i-5)thực sự có vẻ như là một giải pháp dễ dàng hơn
Cruncher

1
@Cruncher Công thức đó yêu cầu bạn xác định trước 5 điều khoản đầu tiên (bao gồm 4, 8 và 15), điều này vừa nhàm chán vừa trái với quy tắc.
Sebastian Negraszus

30

C #

Sử dụng thực tế là bất kỳ chuỗi các phần tử N nào cũng có thể được tạo bởi đa thức N-1 và nhập các số liên quan đến rất nhiều tiếng bíp và boong. Để tham khảo, đa thức tôi dẫn xuất là

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

Tôi đã chỉ định các yếu tố cho các biến được đặt tên cho các số, vì đơn giản;)

Phiên bản đầu tiên:

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 ));
}

Tôi thích hàm ý của sự căng thẳng gia tăng khi số lượng BEEP giảm sau mỗi số.

Sau đó, tôi hình dung mình cũng có thể tính toán các yếu tố bằng tiếng bíp và boong:

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;

Sau đó đã hơi quá nhiệt tình ...

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))));
}

Sử dụng toán tử mặc định trong C # cho các loại giá trị cho phép khởi tạo BEEEP thành 0. Bằng cách này, không có chữ số được sử dụng trong mã. Các thuật toán cơ bản là như nhau. nhưng các yếu tố được tính toán nội tuyến.


@ kódfodrász cảm ơn bạn đã chỉnh sửa!
Rik

6
Tôi thấy một số 8 ở đó, bạn là người xấu của bạn
Thebluefish 15/03/2016

@Thebluefish Tôi xấu hổ.
Rik

25

CƯỜI MỞ MIỆNG

Không được phép sử dụng các số 4, 8, 15, 16, 23 hoặc 42 trong mã của tôi? Không có vấn đề, sau đó tôi sẽ không sử dụng số!

import std.stdio;

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

6
Số học ASCII là số học tốt nhất.
Pharap

2
Vậy sau C, đến một ngôn ngữ gọi là D?
cegprakash

@cegprakash Và trước C là B
SirPython

24

Javascript + HTML

Chống golf!

<!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>

Phần <pre>tử hiển thị một số trong chuỗi. Nó cũng chứa tất cả các mã cần thiết để có được số tiếp theo trong chuỗi. Vì vậy, <pre>eval'd, dẫn đến văn bản của bản <pre>cập nhật giống với số tiếp theo trong chuỗi. Quá trình này lặp đi lặp lại vô tận.

Đây là hành động!


2
Cộng thêm một cho sự khéo léo. Chào mừng đến với PPCG!
Jonathan Van Matre

22

C

Nhận kính nheo mắt của bạn trên :-)

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
Đẹp như thế này, tôi đếm ba 4s và hai 8s ở đó.
Geobits

6
@Geobits Tôi rõ ràng cần một cặp kính nheo mới! Đã sửa bây giờ.
squossish ossifrage

20

Haskell, 1 LoC

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

Tôi đã quyết định chọn một lớp lót có thể đọc được chỉ để cho thấy Haskell tuyệt vời như thế nào. Ngoài ra, tôi đã quyết định tránh tất cả các chữ số, chỉ trong trường hợp.

Nhờ đánh giá lười biếng tích hợp, Haskell có thể thao tác (ánh xạ, phân tách, tham gia, lọc ...) danh sách dài vô cùng tốt. Nó thậm chí có nhiều tích hợp để tạo ra chúng. Vì một chuỗi chỉ là một danh sách các ký tự, nên các chuỗi dài vô hạn cũng không có gì bí ẩn đối với Haskell.


2
Tôi yêu cách Haskell và những người tương tự làm lập trình chức năng: D
Jwosty

2
fromEnumtrông đẹp hơn Data.Char.ord, và có phần ngắn hơn
mniip

1
Ai ... thế nào? Bạn có thể giải thích?
Pureferret

1
Tôi chỉ nhận thấy các nhân vật vô thưởng vô phạt ngay ở cuối. Tôi giả sử có cái gì đó để làm với nó?
Pureferret


20

Toán học

Chúng ta có thể trả lời câu hỏi bằng cách tập trung vào các mẫu số một phần lặp lại của phần tiếp tục định kỳ được hiển thị bên dưới. Họ là những gì chúng ta cần.

lặp lại cf

Rốt cuộc, chúng bao gồm chuỗi không kết thúc mà chúng tôi đang cố gắng tạo ra: 4, 8, 15, 16, 23, 42, 4, 8, 15, 16, 23, 42 ...


Trong Mathematica người ta thu được bất phương trình bậc hai tương ứng với phân số tiếp tục định kỳ bằng

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

tứ phương 1

trong đó 0 chỉ phần nguyên ẩn.

Chúng tôi có thể kiểm tra bằng cách đảo ngược hoạt động:

nhập mô tả hình ảnh ở đây

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


4 và 8 vi phạm một trong những quy tắc của thử thách. Chuỗi con 15là một vi phạm bổ sung. Chúng ta có thể định dạng lại bất hợp lý bậc hai để đáp ứng các quy tắc.

c

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


Bây giờ chúng tôi lấy chuỗi quan tâm:

Last[c]

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

Và in danh sách mãi mãi

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

bàn


Vâng, đó là một giải pháp toán học tốt đẹp. Tôi thực sự thích cái này
C5H8NNaO4 17/03/2016

@ C5H8NNaO4, Cảm ơn, MSG. Đó là niềm vui để tìm ra.
DavidC

1
+1 Bạn đã chỉnh sửa để loại bỏ 16phân số trong khi tôi đang gõ nhận xét về nó.
Geobits

@Geobits. Hài hước về điều đó. Tôi nghĩ tôi sẽ kiểm tra xem tôi có hài lòng với các quy tắc hay không; có một số vi phạm mà tôi đã sửa.
DavidC

19

C / C ++

Chỉ sử dụng các nhân vật L, O, STlặp đi lặp lại theo thứ tự:

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

Tôi không thể tìm thấy một mô hình trong chuỗi đó. Nếu không có mô hình dễ nhận biết, chúng ta cũng có thể ném một loạt các số nguyên tố nhỏ lại với nhau, nhồi nhét chúng vào RNG tích hợp của Java và gọi nó là một ngày. Tôi không thấy làm thế nào điều đó có thể đi sai, nhưng một lần nữa, tôi là một người lạc quan :)

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
Trừ đi while(true): ideone.com/1xaPdO
Tim S.

7
Có một mô hình, nhưng nó không ... rất rõ ràng: oeis.org/A130826 :)
Sebastian Negraszus

14

Bash một-lót

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`

Ngắt dòng được thêm vào để dễ đọc. Nó (ab) sử dụng thực tế rằng đây là sáu số đầu tiên của OEIS Sequence A130826 .


Bạn cũng có thể đường ống awk -F"[ ,]" '/%S/ {for (i=3;i<=9;i++) printf $i" "}'đến curl.
fedorqui

1
Bạn có thể loại bỏ hoàn toàn vòng lặp với yesvà thả chuyển hướng đến /dev/nullvới curl -s. Một cái gì đó giống như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" "}')
Chấn thương kỹ thuật số

@DigitalTrauma: Cảm ơn, tôi không biết yescurl -s- Tôi chỉ biết xấu hổ thêm câu này vào câu trả lời của mình. :-)
Heinzi

13

C hoàn toàn không sử dụng số và không có giá trị ký tự

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

Tôi thích ý tưởng sử dụng trình tự

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

như trong câu trả lời này . Tìm thấy nó thông qua Tìm kiếm OEIS theo trình tự A122115 .

Nếu chúng ta đi qua trình tự ngược lại, chúng ta sẽ tìm thấy một nhóm khởi tạo phù hợp không chứa 4, 8, 15, 16 hoặc 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])

rất thông minh! Đẹp.
DavidC

11

JavaScript

Không có con số nào là một động thái tốt. Nhưng thay vì in chuỗi một lần mỗi lần qua vòng lặp, chỉ in một lần số trên mỗi lần vượt qua.

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

Phần dưới của chuỗi mã số các số cần in và phần trên của chuỗi mã ký tự tiếp theo cần tìm. Trường hợp hai phần gặp nhau (một F) mã đặt lại chu kỳ.


11

Con trăn

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

Toán tử bitwise và một số toán đơn giản.


10

Hồng ngọc

Tạo các số bằng cách nhúng chuỗi thứ tự huyền bí không kém 0, ∞, 9, 0, 36, 6, 6, 63 ;
Không tốt có thể đến từ này.

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

Tất cả mã ruby ​​trông giống như nó sẽ bị lỗi và chết; nó làm tôi cho đến ngày hôm nay rằng bất kỳ thứ gì trong số đó đều chạy!
alexandercannon

10

C ( 54 50 ký tự)

Tôi đang đăng một câu trả lời golf vì chơi golf ít nhất làm cho nó vui vẻ.

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

Nếu bạn đang chơi gôn, bạn có thể (có thể) thả a=0;. Hiệu quả duy nhất là bạn có thể bắt đầu chuỗi ở đâu đó ngoài 4 (có thể là 8). Dù sao, điều này sẽ làm rối trình tự khi atràn. Đó là hành vi không xác định về mặt kỹ thuật, nhưng kết quả có thể là bạn sẽ in rác một nửa thời gian.
jerry

Hoặc chỉ cần xoay vòng chuỗi thành "gAELMT" :)
orion

Chắc chắn, trừ khi có ai đó gọi chương trình của bạn bằng các đối số :) Mặc dù vậy, vẫn in rác một nửa thời gian.
jerry

3
Nếu bạn đưa ra các đối số cho một chương trình không cần bất kỳ, bạn phải trả giá :)
orion

1
forkhông giúp đỡ nếu không có khởi tạo. for(;;)là cùng số lượng ký tự như while(). Tôi đã giải thích các quy tắc để các dòng mới phải có ... Nhưng tôi có thể sử dụng đệ quy đuôi với chính ...
orion

10

Haskell

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

Chỉnh sửa: Những gì tôi đã sử dụng để tạo các hệ số: https://gist.github.com/ion1/9578025

Chỉnh sửa: Tôi thực sự thích chương trình của agrif và cuối cùng đã viết một Haskell tương đương trong khi tìm ra nó. Tôi chọn một cơ sở khác cho số ma thuật.

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

Chỉnh sửa: Tôi cũng thích chương trình thứ hai của anh ấy và cuối cùng đã viết một triển khai Haskell về các bất hợp lý bậc hai ;-). Sử dụng thư viện và số ma thuật của agrif, chương trình này sẽ in chuỗi.

import qualified Data.Foldable as F
import Numeric.QuadraticIrrational

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

Đây là cách người ta có thể tìm kiếm số ma thuật với sự trợ giúp của thư viện:

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

Giá trị in là viết tắt của số (−644047 + 1 √424477224534)/30815. Tất cả những gì bạn cần làm là tìm các yếu tố loại bỏ các chuỗi chữ số không được phép trong các số trong khi không thay đổi giá trị của biểu thức.


Chào mừng bạn đến với trang web =)
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));

Tôi tìm thấy hạt giống sau khi nghe một số đài phát thanh trong một chuyến bay qua Thái Bình Dương.


6
Có 4s và 8 bên trong.
zakk

7

Con trăn

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

Trong khi rất nhiều người đã sử dụng các mẫu được lấy từ OEIS, tôi đã quyết định tạo ra bộ hàm của riêng mình để thể hiện các con số.

Hàm đầu tiên tôi tạo là định kỳ (). Đây là một hàm lặp lại cứ sau sáu số đầu vào bằng các thuộc tính chu kỳ của các hàm lượng giác. Nó như thế này:

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

Sau đó, tôi tạo đa thức (). Điều đó sử dụng đa thức sau:

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

(Trong mã của tôi, một số hệ số được biểu diễn dưới dạng tổng vì chúng chứa các số bị mất là một trong các chữ số của chúng.)

Đa thức này chuyển đổi đầu ra của định kỳ () thành số bị mất thích hợp của nó, như sau:

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

Bằng cách liên tục tăng i và chuyển nó qua cả hai hàm, tôi nhận được các số bị mất lặp lại vô tận.

(Lưu ý: Tôi sử dụng float () rất nhiều trong mã. Điều này là do Python thực hiện phép chia dấu phẩy động thay vì nói 2/3 = 0.)


1
Dễ dàng để sửa chữa, nhưng bạn vẫn có một 4trong polynomial.
Geobits

@Geobits Rất tiếc, đã không nhận thấy điều đó. Cảm ơn.
Andrew Soutar

6

Emacs Lisp 73 ký tự

Cách tốt nhất để lặp mãi mãi? Một danh sách tuần hoàn!

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

Nhưng xin chờ chút nữa!

? \ ^ D là cách hay để chèn char cho EOT, tuy nhiên nếu tôi chỉ gửi một tệp, tôi sẽ không cần chữ "\ ^ D" theo nghĩa đen, tôi chỉ có thể chèn '?' theo sau là một ký tự EOT thực tế, do đó lấy số ký tự thực sự cần thiết xuống còn: 63

Biên tập

Tôi đã làm việc với "gel" chưa phải là ngôn ngữ thực sự, nhưng về cơ bản là một loạt các macro không thể thiếu cho môn đánh gôn. Trong "gel" đây sẽ là giải pháp:

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

và không phải chờ đợi:

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

44 ký tự với mục nhập nhân vật tốt đẹp. Sẽ là 34 nếu không phải là một trình web.


6

Julia

Bằng cách nghiên cứu một lúc tôi đã tìm ra một cách toán học để diễn tả chuỗi theo các chuỗi khác mà không sử dụng bất kỳ số nào (hoặc các cách khó để sử dụng chúng):

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]

Đầu ra:

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

6

C ++

Một ngôn ngữ sạch đẹp như C ++ có thể cho phép bạn bố trí nguồn của mình một cách gọn gàng và dễ đọc, và có lợi thế là dễ dàng sao chép bằng tay với sự mơ hồ tối thiểu.

Ở đây, giải pháp đạt được chỉ sử dụng số 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;
  }
}

Kiểm tra: http://ideone.com/fuOdem


6

Lược đồ (Guile)

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

http://ideone.com/QBzuBC

Có thể cho rằng điều này phá vỡ quy tắc "không mã hóa các số trong các cơ sở khác", nhưng tôi nghĩ nó đủ tối nghĩa để nó không được tính. Bằng chứng là sự tối nghĩa này, hai con số ma thuật trong căn cứ 51 là:

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

Chỉnh sửa : Cùng một thủ thuật, đại diện khác nhau. Tôi thực sự thích cái này hơn, vì nó không phụ thuộc vào một cơ sở được lựa chọn tùy ý. Tuy nhiên, nó đòi hỏi phải thực hiện sơ đồ với sự hỗ trợ chính xác vô hạn cho các bất hợp lý bậc hai, mà (AFAIK) không tồn tại. Bạn có thể thực hiện nó trong một cái gì đó như Mathicala, mặc dù.

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

Chào mừng bạn đến với trang web =)
Riot

+1 cho "nó yêu cầu triển khai sơ đồ với sự hỗ trợ chính xác vô hạn cho các bất hợp lý bậc hai, mà (AFAIK) không tồn tại."
Lyndon White

6

PHP

Tôi nghĩ rằng đã đến lúc ai đó gửi một câu trả lời php, không phải là tốt nhất nhưng dù sao cũng là một niềm vui

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

Ahs là tiếng la hét của hành khách khi máy bay gặp sự cố


5

Perl

#!/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;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.