Kolmogorov 유연성. 일명 판매! 재고가있는 동안 모든 Codegolf


12

이것은 입력이없는 고정 출력을 생성하기 위한 , , 과제입니다.

그러나 출력 형식은 유연합니다. 표준 출력으로 인쇄하거나 표준 오류로 인쇄하거나 문자 목록으로 반환하거나 바이트 목록으로 반환하거나 정수 목록으로 반환 할 수 있습니다. 다른 것이 합리적이라고 생각되면 의견을 물어보십시오!

다음은 간단하고 큰 글자의 ASCII 아트 CODEGOLF입니다 .

 CCCC   OOO   DDDD   EEEEE   GGG    OOO   L      FFFFF
C      O   O  D   D  E      G      O   O  L      F
C      O   O  D   D  EEE    G  GG  O   O  L      FFF
C      O   O  D   D  E      G   G  O   O  L      F
 CCCC   OOO   DDDD   EEEEE   GGGG   OOO   LLLLL  F

줄 바꿈이 없거나 줄의 끝에 공백이 없으면 길이는 256 자입니다.

 CCCC   OOO   DDDD   EEEEE   GGG    OOO   L      FFFFFC      O   O  D   D  E      G      O   O  L      FC      O   O  D   D  EEE    G  GG  O   O  L      FFFC      O   O  D   D  E      G   G  O   O  L      F CCCC   OOO   DDDD   EEEEE   GGGG   OOO   LLLLL  F

공백이 아닌 문자의 (0부터 시작) 인덱스는 다음과 같습니다.

1, 2, 3, 4, 8, 9, 10, 14, 15, 16, 17, 21, 22, 23, 24, 25, 29, 30, 31, 36, 37, 38, 42, 49, 50, 51, 52, 53, 54, 61, 65, 68, 72, 75, 82, 89, 93, 96, 103, 104, 111, 115, 118, 122, 125, 126, 127, 132, 135, 136, 139, 143, 146, 153, 154, 155, 156, 163, 167, 170, 174, 177, 184, 188, 191, 195, 198, 205, 207, 208, 209, 210, 214, 215, 216, 220, 221, 222, 223, 227, 228, 229, 230, 231, 235, 236, 237, 238, 242, 243, 244, 248, 249, 250, 251, 252, 255

코드에서 이러한 97 바이트를 사용할는 없지만 사용 중인 코드 페이지에서 누락 된 바이트가 32 번째 바이트로 대체 된 순서대로 이러한 바이트를 순서대로 나열하거나 비슷한 순서로 출력해야합니다. 공백 문자 코드 페이지).

도움이되는 경우 예쁜 인쇄 * 줄 바꿈 (줄에 후행 공백 없음)을 포함시킬 수 있습니다.

예를 들어 Jelly 코드 페이지 를 사용하면 이 출력이 허용됩니다.

 ¢£¤¥   ®µ½   ÇÐÑ×   ßæçðı   øœþ    $%&   *      12345
6      =   A  D   H  K      R      Y   ]  `      g
h      o   s  v   z  }~¶    ⁴  ⁷⁸  ⁻   Ɓ  Ƒ      ƲȤɓ
ƈ      ɲ   ʂ  ȥ   Ẹ  Ḳ      Ṭ   Ỵ  Ḃ   Ḟ  İ      Ṡ
 ẆẊẎŻ   ẹḥị   ṇọṛṣ   ẉỵẓȧḃ   ḟġḣŀ   ṗṙṡ   ẏż«»‘  ”

... 그러나 다음과 같습니다.

 ¢£¤¥   ®µ½   ÇÐÑ×   ßæçðı   øœþ    $%&   *      123456      =   A  D   H  K      R      Y   ]  `      gh      o   s  v   z  }~¶    ⁴  ⁷⁸  ⁻   Ɓ  Ƒ      ƲȤɓƈ      ɲ   ʂ  ȥ   Ẹ  Ḳ      Ṭ   Ỵ  Ḃ   Ḟ  İ      Ṡ ẆẊẎŻ   ẹḥị   ṇọṛṣ   ẉỵẓȧḃ   ḟġḣŀ   ṗṙṡ   ẏż«»‘  ”

... 그리고 그렇습니다 :

[32, 1, 2, 3, 4, 32, 32, 32, 8, 9, 10, 32, 32, 32, 14, 15, 16, 17, 32, 32, 32, 21, 22, 23, 24, 25, 32, 32, 32, 29, 30, 31, 32, 32, 32, 32, 36, 37, 38, 32, 32, 32, 42, 32, 32, 32, 32, 32, 32, 49, 50, 51, 52, 53, 54, 32, 32, 32, 32, 32, 32, 61, 32, 32, 32, 65, 32, 32, 68, 32, 32, 32, 72, 32, 32, 75, 32, 32, 32, 32, 32, 32, 82, 32, 32, 32, 32, 32, 32, 89, 32, 32, 32, 93, 32, 32, 96, 32, 32, 32, 32, 32, 32, 103, 104, 32, 32, 32, 32, 32, 32, 111, 32, 32, 32, 115, 32, 32, 118, 32, 32, 32, 122, 32, 32, 125, 126, 127, 32, 32, 32, 32, 132, 32, 32, 135, 136, 32, 32, 139, 32, 32, 32, 143, 32, 32, 146, 32, 32, 32, 32, 32, 32, 153, 154, 155, 156, 32, 32, 32, 32, 32, 32, 163, 32, 32, 32, 167, 32, 32, 170, 32, 32, 32, 174, 32, 32, 177, 32, 32, 32, 32, 32, 32, 184, 32, 32, 32, 188, 32, 32, 191, 32, 32, 32, 195, 32, 32, 198, 32, 32, 32, 32, 32, 32, 205, 32, 207, 208, 209, 210, 32, 32, 32, 214, 215, 216, 32, 32, 32, 220, 221, 222, 223, 32, 32, 32, 227, 228, 229, 230, 231, 32, 32, 32, 235, 236, 237, 238, 32, 32, 32, 242, 243, 244, 32, 32, 32, 248, 249, 250, 251, 252, 32, 32, 255]

(마지막 페이지는 코드 페이지가있는 모든 언어로 유효한 목록 출력이며 합리적인 목록 형식도 사용할 수 있습니다.)


사용할 수없는 ASCII 바이트를 보여주는 Python 3 코드 가 있습니다.

* 인쇄 자체가 실제로 그다지 아름답지는 않을 수도 있습니다!


코드에서이 97 바이트를 사용할 수 없습니다. 즉 $%&*123456=ADHKRY]``ghosvz}~, ASCII 문자를 사용할 수 없으며 줄 바꿈이 없습니까?
Titus

1
@Titus 코드 페이지가 ASCII와 일치하면 yes 또는 인쇄 할 수없는 문자 나 확장 된 문자와 같은 지정된 범위의 탭 또는 다른 문자들입니다. (또한
Jonathan Allan

2
가치있는 것을 위해 여기에 코드 유효성 검사기가 있습니다 (특별한 코드 페이지가 없다고 가정).
Arnauld

나는 PHP로 거의 그것을 가지고 있습니다 ... array_map(function($n){return sprintf("%6b",$n);},...)없이 $(나는 할 수 있습니다)없이 }( 모르지 않은) 방법이 필요합니다 . 예; 데이터를 포장하고 싶습니다!
Titus

답변:


7

파이썬 2 , 321203 바이트

print map(lambda(i,x):(x>'0'and i-8-8-8-8)+8+8+8+8,enumerate(bin(int(reduce(lambda x,y:x+repr('abcdefijkl'.find(y)),'cfjdbljcibkeajjejiljjlcbjddlafklebajjlceljdeadficijflealkeklkljadfbbckjebclkf','')))))

온라인으로 사용해보십시오!


설명:

내부에서 :

cfjdbljcibkeajjejiljjlcbjddlafklebajjlceljdeadficijflealkeklkljadfbbckjebclk25731972618407747697792173390589410779249734035626759409848989703511287412985허용되는 문자로 인코딩 된 숫자 입니다. (아니요 123456)

reduce(lambda x,y:x+repr('abcdefijkl'.find(y)),'cfjdbl..bclkf','') 문자열을 10 진수 문자열로 매핑합니다.

  • reduce(lambda x,y:x+y,'..','')''.join('..')(No o's allowed) 와 동일
  • repr('..')대신 str('..')(No s's allowed)
  • 'abcdefijkl'.find(y) 문자를 숫자로 매핑합니다.

enumerate(bin(int(...)))숫자 문자열을 이진 문자열로 변환하고 열거합니다. 이것은 쌍을 제공합니다[(0,0), (1,b), (2,1), (3,1), ...]

map(lambda(i,x):(x>'0'and i-8-8-8-8)+8+8+8+8, ... ) 열거 된 목록을 최종 결과로 변환합니다.

  • map(lambda(i,x):.. , .. )대신 [... for(i,x)in ...](No o]'s allowed)
  • lambda(i,x): ..각 (인덱스, 값) 쌍을 인덱스 또는로 변환합니다 32.
  • (x>'0'and i-8-8-8-8)+8+8+8+8 와 같다:
    • x>'0'and i or 8+8+8+8, (아니요 o)
    • [8+8+8+8,i][x>'0']또는 [8<<9-7,i][x>'0'](No ]'s allowed)
  • 8+8+8+8= 32(아니요 23)

이것은 프로그램이 본질적으로 다음과 동일하다는 것을 의미합니다.

print[[32,i][x>'0']for i,x in enumerate(bin(25731972618407747697792173390589410779249734035626759409848989703511287412985))]

거기에 어떤 좋은 골프 작업 : D
조나단 앨런

7

C (gcc) , 318 바이트

main(_){--_<88+80+88?printf((int[:>){77707-989908070??>,((int[:>){0xE8E8C79E^0xB0B0080,0xC07E0870^0xE0000C00,0xCC08099C^0xEE0C008E,0xE8888989^0xCC00808,0x9E088990^0x800C0000,0x990C8888^0x080ECC00,0xF9C7a088^0x080000C0,0x9F8C78F8^0x900000??>[_>>(0xC^0x9):>>>(_<<9+9+9>>9+9+9))<<(70^89)>>(70^89)?_:' '),main(_+9-7):0;??>

온라인으로 사용해보십시오!

이것은 약간의 여정입니다 ...

1. 목록 압축

어쨌든 주어진 정수가 특수 코드 포인트 중 하나인지 확인해야합니다. '네이 키드'목록은 너무 길기 때문에 검사 ​​목록을 사용합니다. 이 목록은 '제한된'코드 포인트에서 0이 아닌 값을 가지며 그렇지 않은 코드 포인트에서는 0입니다.

불행히도 이것은 여전히 ​​목록을 갖기 위해 512 바이트가 필요합니다 (처럼 보입니다 0,0,7,7,0,7,0,...). 비트 마스크로 단축 할 수 있습니다.

비트 마스크를 사용하기 위해 각 바이트를 두 조각으로 나눕니다. 처음 3 비트는 배열에서 마스크를 선택하고 마지막 5 비트는 배열에서 비트를 선택합니다. 기본적으로 사용되는 32 비트 정수는 2 ^ 5 = 32 비트 이상을 지원하지 않으므로 배열을 더 이상 축소 할 수 없습니다.

내가 쓴 참조 구현을 사용하여 :

int main() {
    int i;
    int vals[] = {1, 2, 3, 4, 8, 9, 10, 14, 15, 16, 17, 21, 22, 23, 24, 25, 29, 30, 31, 36, 37, 38, 42, 49, 50, 51, 52, 53, 54, 61, 65, 68, 72, 75, 82, 89, 93, 96, 103, 104, 111, 115, 118, 122, 125, 126, 127, 132, 135, 136, 139, 143, 146, 153, 154, 155, 156, 163, 167, 170, 174, 177, 184, 188, 191, 195, 198, 205, 207, 208, 209, 210, 214, 215, 216, 220, 221, 222, 223, 227, 228, 229, 230, 231, 235, 236, 237, 238, 242, 243, 244, 248, 249, 250, 251, 252, 255, 0};

    for (i = 0; i <= 0xFF; ++i) {
        int j,f;
        f = 0;
        for (j = 0; vals[j]; ++j)
            if (vals[j] == i)
                f = 1;
        if (f)
            printf("1");
        else
            printf("0");

        if (i%32 == 31)
            printf("\n");
    }

    return 0;
}

명령을 사용하여이 새 배열에 적절한 값을 생성 할 수있었습니다 echo "obase=16;ibase=2;$(./a.out | rev)" | bc. 위의 프로그램 ( ./a.out) 의 출력을 프로그램으로 전달하여 rev각 줄을 반대로합니다. 출력베이스를 16으로 설정하고 입력베이스를 2로 설정하는 헤더와 함께 이것을 bc에 인쇄합니다. 따라서 bc는 2 진수를 16 진수 비트 마스크로 변환합니다.

결과 배열은이 '베타'솔루션에서 볼 수 있습니다.

f(){
    int x;
    int arr[] = {0xE3E3C71E, 0x207E0470, 0x22040912, 0xE4488181, 0x1E048990, 0x91024488, 0xF1C7A048, 0x9F1C78F8};
    for (x=0; x<=0xFF; ++x) {
        int mask = arr[x >> 5];
        int bit = mask >> (x & 0x1F);

        if (bit & 1)
            printf("%c", x);
        else
            printf(" ");
    }
}

2. 제약 사항 다루기

위의 코드에는 많은 제약이 필요합니다. 여기에서 나는 그것들을 하나씩 차례로 봅니다.

  1. 과제 없음

이것은 C에서 할당하지 않고 다른 언어에서도 느낄 수 있습니다. 보장 된 값을 변수로 얻는 것은 매우 어렵습니다. 가장 쉬운 방법은 함수를 전체 프로그램으로 작성하는 것입니다. 인수 없이 호출 된 경우 첫 번째 인수에 mainargc이 1이 전달됩니다.

  1. 루핑 없음

C의 유일한 반복 구조는 for, while그리고 goto모두의 제한된 문자가 포함되어 있습니다. 이로 인해 재귀를 사용할 수 있습니다. 주 함수는 1에서 시작하여 인수가> 256이 될 때까지 재귀합니다. 반면에 인덱스가 0 인 값을 사용하도록 인수를 내부적으로 감소시킵니다.

  1. 16 진수 값

위 배열의 값은 16 진수이며, 십진수로 변환하더라도 123456 (AD는 소문자 일 수 있음)과 같은 일부 제한된 기호가 포함됩니다. 이 문제를 해결하기 위해 각 상수는 다른 문자와 XOR되어 제한된 문자가 제거됩니다. 1은 9 ^ B가되고, 2는 C ^ E가되고, 3은 B ^ 8이되고, 4는 8 ^ C가되고, 5는 9 ^ C가되고, 6은 9 ^ F가됩니다 (더 많은 방법이 있습니다. .

  1. 인쇄

제한 사항으로 인해 많은 인쇄 기능이 남아 있지 않습니다. putchar그리고 puts둘 다 제한되어 printf있습니다. 불행히도 우리는 printf형식 문자열, 이상적으로 "% c" 를 보내야 합니다. 이러한 모든 문자열에는 제거하려는 성가신 백분율 기호가 있습니다. 운 좋게도 우리는 리틀 엔디안 머신을 가정합니다. 아무것도 그 바이트 메모리에 0x25로 (%)이며, 0x63 (C) 정수, 0 × 00 (\ 0)를 구성하여 (중요하지 않습니다, 그 널 종료 후) 우리는 단지 그것의 주소를 전달할 수 printf있으며 그것을 가정합니다 문자열입니다. 작동하는 하나의 숫자는 -989830363 (0xC5006325)입니다. 77707-989908070과 같은 제한 사항 하에서 쉽게 만들 수 있습니다.

할당 할 수없고 &를 사용할 수 없기 때문에 값을 참조 할 수없는 문제가 여전히 남아 있으므로 배열 리터럴 (int []) {...}을 사용해야합니다. 실제로 위의 비트 마스크 배열에도 이것을 사용합니다.

  1. 닫는 괄호

']'또는 '}'을 사용하여 배열 또는 함수를 닫을 수 없습니다. 운 좋게 C는 작동하는 digraphs와 trigraphs를 가지고 있습니다. :>될 것입니다 ], 동안이 ??>될 것입니다 }. gcc -trigraphs는 기본적으로 삼중 그래프를 무시하므로 (표준 위반) 스위치 를 사용해야합니다 .

  1. 비트 단위 연산

우리는 사용할 수 없습니다 &색인 오프 비트 마스크 않으며, 우리가 사용할 수있는 %이 옛날 방식을 얻을 수 있습니다. 따라서 우리는 구현 고유의 행동에 의존합니다. 특히 32 비트 정수를 왼쪽으로 이동하여 비트를 잃은 다음 오른쪽으로 다시 이동합니다. 예를 들어 숫자의 마지막 5 비트를 얻으려면 먼저 27 비트 왼쪽으로 abcde00000...이동 한 다음 (왼쪽으로) 27 비트 오른쪽으로 다시 이동하십시오 (방치 ...00000abcde).

  1. 기타 가치

코드 전체에 몇 가지 리터럴 값이 더 필요합니다. Arnauld의 JS 답변에서 가져온 것 외에도 위의 이유로 27이 추가되었습니다 9+9+9.

3. 정리

다음은 이러한 모든 변경 사항과 함께 소스에 대한 설명입니다.

main(_){                // This is our main entry point
--_<88+80+88            // This subtracts 1 from the argument (_) and checks if it is less than 256
    ?                   // If it is less than 256 we 'continue'
printf(                 // first we call printf with...
    (int[:>){           // An integer array that will be interpreted as a string
    77707-989908070     // With the value we determined above, to represent "%c\0\xC5"
    ??>,                // This is a trigraph for }, just as the :> above is a digraph for ]
    ((int[:>){          // We immediately create another integer array
0xE8E8C79E^0xB0B0080,   // Each row is the bit-mask for 32 characters
0xC07E0870^0xE0000C00,
0xCC08099C^0xEE0C008E,
0xE8888989^0xCC00808,
0x9E088990^0x800C0000,
0x990C8888^0x080ECC00,
0xF9C7a088^0x080000C0,
0x9F8C78F8^0x900000??>
[_>>(0xC^0x9):>         // This is {arr}[_>>5] just in a roundabout way
>>(_<<9+9+9>>9+9+9))    // Similarly this is (...)>>(_&0x1F)
<<(70^89)>>(70^89)      // This is <<31>>31 or &1, to check the last bit
?_:' ')                 // If its 1, we print the character, otherwise we print a space
,main(_+9-7):0;         // We recurse, the :0 is the other branch of the if, it terminates execution
??>

잘 했어! 좋은 설명도 있습니다. (나는 100 %는 아니지만 헤더가 "C (gcc) -trigraphs"를 읽어야한다고 믿는다)
Jonathan Allan

1
토론 할 준비가되었습니다. 코드는 gcc에 국한되지 않고 표준을 완벽하게 준수하는 코드는 아니지만 내 컴퓨터에서는 인수없이 잘 컴파일됩니다. TIO에는 기본적으로 표준을 준수하는 기본 제공 컴파일러가 없으며 gcc의 이전 빌드가있는 경우 3 점 그래프가 경고를 생성합니다.
LambdaBeta

g ++ 사용하여 ?:확장, 남용 비트 시프트 모듈 (32), 273 바이트
user202729

영리 해요 그러나이 버전은 -trigraphs일부 C 컴파일러 에서 옵션이 필요하지 않지만 ?:gcc가 필요하므로이 버전을 그대로 유지하려고 합니다 -trigraphs.
LambdaBeta

6

brainfuck , 635 바이트

++++++++++++++++++++++++++++++++.>+.+.+.+.<...>++++.+.+.<...>++++.+.+.+.<...>++++.+.+.+.+.<...>++++.+.+.+....++++.+.+.<...>++++.<......>+++++++.+.+.+.+.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<......>+++++++.<...>++++.<..>+++.<......>+++++++.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.+.+.<....>+++++.<..>+++.+.<..>+++.<...>++++.<..>+++.<......>+++++++.+.+.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<.>++.+.+.+.<...>++++.+.+.<...>++++.+.+.+.<...>++++.+.+.+.+.<...>++++.+.+.+.<...>++++.+.+.<...>++++.+.+.+.+.<..>>-.

온라인으로 사용해보십시오!

Javascript에 의해 마침내 구타에 대한 응답으로, 나는 이것에서 내가 할 수있는 것을 골랐다.

셀에 0에서 32를 가진 세포 1 (OrjanJohansen 내가 사용하지 수 지적 할 때 다른 방법이 있기 때문에 빠른 수정이었다 내가 처음에 있던 유일한 이유를 증가시켜 저장 1 바이트 ])

1 바이트 생성한다 (초기에 0) 제 세포를 줄여서 저장 255=-1

사용하지 않고 문자 31과 36 사이의 공백을 인쇄하여 2 바이트를 절약 <>하지만 31에서 33까지 증분 할 때 32에서 중지하여 셀 0에서 인쇄합니다.

brainfuck , 639 바이트

>++++++++++++++++++++++++++++++++.<+.+.+.+.>...<++++.+.+.>...<++++.+.+.+.>...<++++.+.+.+.+.>...<++++.+.+.>....<+++++.+.+.>...<++++.>......<+++++++.+.+.+.+.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>......<+++++++.>...<++++.>..<+++.>......<+++++++.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.+.+.>....<+++++.>..<+++.+.>..<+++.>...<++++.>..<+++.>......<+++++++.+.+.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>.<++.+.+.+.>...<++++.+.+.>...<++++.+.+.+.>...<++++.+.+.+.+.>...<++++.+.+.+.>...<++++.+.+.>...<++++.+.+.+.+.>..<+++.

온라인으로 사용해보십시오!

먼저 우리는 숫자 32를 생성합니다. 그런 다음 하나의 셀을 증가시키고 그 셀과 32를 포함하는 하나의 셀 사이에서 인쇄를 전환합니다. 꾸준히 증가하는 숫자는 Brainfuck이 잘하는 것입니다.

Brainfuck로 Javascript를이기는 것이 좋으며 자주 발생하지 않습니다!


죄송하지만 ]허용되는 문자가 아닙니다. 여전히 문제를 해결하고 Javascript를 이길 수 있어야합니다. :)
Ørjan Johansen

@ ØrjanJohansen fixed
Level River St

죄송합니다. 자바 스크립트를 잃어 버렸습니다.
user202729

@ user202729 꽤 좋아요! 아직도, 나는 3 일 동안 자바 스크립트를 쳤다. ]허용되지 않기 때문에 루프를 사용할 수 없으므로 BF 답변이 최적이라고 생각합니다.
Level River St

5

JavaScript (SpiderMonkey) , 1918 1598 1487 1431 바이트

@ user202729 덕분에 56 바이트 절약

print(8<<98,7/7,9-7,7>>97,8>>97,8<<98,8<<98,8<<98,8,9,0xa,8<<98,8<<98,8<<98,0xe,0xf,7+9,8+9,8<<98,8<<98,8<<98,7+0xe,7+0xf,8+0xf,9+0xf,78^87,8<<98,8<<98,8<<98,77^80,70^88,70^89,8<<98,8<<98,8<<98,8<<98,9<<98,70^99,77>>97,8<<98,8<<98,8<<98,98-070,8<<98,8<<98,8<<98,8<<98,8<<98,8<<98,9^070,80^98,80^99,87^99,87^98,9^077,8<<98,8<<98,8<<98,8<<98,8<<98,8<<98,70-9,8<<98,8<<98,8<<98,7^70,8<<98,8<<98,9^77,8<<98,8<<98,8<<98,7^79,8<<98,8<<98,70^0xd,((8<<98)+' ').repeat(8^0xe)+(8^90),((8<<98)+' ').repeat(8^0xe)+89,8<<98,8<<98,8<<98,7^90,8<<98,8<<98,7+89,((8<<98)+' ').repeat(8^0xe)+(7|97),7+97,((8<<98)+' ').repeat(8^0xe)+(77|98),8<<98,8<<98,8<<98,80|99,8<<98,8<<98,8^0x7e,8<<98,8<<98,8<<98,0x7a,8<<98,8<<98,0x7d,0x7e,0x7f,8<<98,8<<98,8<<98,8<<98,7+0x7d,8<<98,8<<98,0x87,0x88,8<<98,8<<98,0x8b,8<<98,8<<98,8<<98,0x8f,8<<98,8<<98,7+0x8b,((8<<98)+' ').repeat(8^0xe)+0x99,0x9a,0x9b,0x9c,((8<<98)+' ').repeat(8^0xe)+(7+0x9c),8<<98,8<<98,8<<98,0xa7,8<<98,8<<98,0xaa,8<<98,8<<98,8<<98,0xae,8<<98,8<<98,78+99,((8<<98)+' ').repeat(8^0xe)+0xb8,8<<98,8<<98,8<<98,0xbc,8<<98,8<<98,0xbf,8<<98,8<<98,8<<98,97+98,8<<98,8<<98,99+99,((8<<98)+' ').repeat(8^0xe)+0xcd,8<<98,0xcf,0xd0,7+0xca,7+0xcb,8<<98,8<<98,8<<98,7+0xcf,0xd7,0xd8,8<<98,8<<98,8<<98,0xdc,0xdd,0xde,0xdf,8<<98,8<<98,8<<98,7+0xdc,7+0xdd,7+0xde,7+0xdf,0xe7,8<<98,8<<98,8<<98,0xeb,0xec,0xed,0xee,8<<98,8<<98,8<<98,7+0xeb,7+0xec,7+0xed,8<<98,8<<98,8<<98,0xf8,0xf9,0xfa,0xfb,0xfc,8<<98,8<<98,0xff)

온라인으로 사용해보십시오!

어떻게?

사실은 =허용되지 않습니다는 JS에서 쇼 - 살인자입니다. 변수 할당을 할 수 없으며 화살표 기능도 사용할 수 없습니다.

0789+-/|^<<>>

  1 = 7/7     |   50 = 80^98   |  136 = 0x88    |  216 = 0xd8
  2 = 9-7     |   51 = 80^99   |  139 = 0x8b    |  220 = 0xdc
  3 = 7>>97   |   52 = 87^99   |  143 = 0x8f    |  221 = 0xdd
  4 = 8>>97   |   53 = 87^98   |  146 = 7+0x8b  |  222 = 0xde
  8 = 8       |   54 = 9^077   |  153 = 0x99    |  223 = 0xdf
  9 = 9       |   61 = 70-9    |  154 = 0x9a    |  227 = 7+0xdc
 10 = 0xa     |   65 = 7^70    |  155 = 0x9b    |  228 = 7+0xdd
 14 = 0xe     |   68 = 9^77    |  156 = 0x9c    |  229 = 7+0xde
 15 = 0xf     |   72 = 7^79    |  163 = 7+0x9c  |  230 = 7+0xdf
 16 = 7+9     |   75 = 70^0xd  |  167 = 0xa7    |  231 = 0xe7
 17 = 8+9     |   82 = 8^90    |  170 = 0xaa    |  235 = 0xeb
 21 = 7+0xe   |   89 = 89      |  174 = 0xae    |  236 = 0xec
 22 = 7+0xf   |   93 = 7^90    |  177 = 78+99   |  237 = 0xed
 23 = 8+0xf   |   96 = 7+89    |  184 = 0xb8    |  238 = 0xee
 24 = 9+0xf   |  103 = 7|97    |  188 = 0xbc    |  242 = 7+0xeb
 25 = 78^87   |  104 = 7+97    |  191 = 0xbf    |  243 = 7+0xec
 29 = 77^80   |  111 = 77|98   |  195 = 97+98   |  244 = 7+0xed
 30 = 70^88   |  115 = 80|99   |  198 = 99+99   |  248 = 0xf8
 31 = 70^89   |  118 = 8^0x7e  |  205 = 0xcd    |  249 = 0xf9
 32 = 8<<98   |  122 = 0x7a    |  207 = 0xcf    |  250 = 0xfa
 36 = 9<<98   |  125 = 0x7d    |  208 = 0xd0    |  251 = 0xfb
 37 = 70^99   |  126 = 0x7e    |  209 = 7+0xca  |  252 = 0xfc
 38 = 77>>97  |  127 = 0x7f    |  210 = 7+0xcb  |  255 = 0xff
 42 = 98-070  |  132 = 7+0x7d  |  214 = 7+0xcf  |
 49 = 9^070   |  135 = 0x87    |  215 = 0xd7    |

32

하자 shiftCount를가 모두를 마스킹 결과이지만의 최하위 5 비트 일 rnum 인, 컴퓨팅 rnum & 0x1f이.

8<<988<<232


32as 8<<9-7각각에 대한 바이트를 저장합니다 32.
TFeld

1
@TFeld 사실, 방금 찾은 솔버에 시프트를 추가하고있었습니다 32 = 8<<98( 때문에)982(mod32)

3
"쇼 킬러"또는 "재미있는 메이커"?
Jonathan Allan

2
@JonathanAllan ;-) 후자는 전자에서 나온다!
Arnauld

내가 바보 인 경우에 죄송하지만 왜 이전 버전의 SpiderMonkey에 연결하고 있습니까?
Solomon Ucko

4

하스켈 623 617 614 594 360 342 바이트

편집 : 문자열로 패턴 인코딩을 찾아 @Lynn 덕분에 -234 바이트. @ Ørjan Johansen 덕분에 -18 바이트.

map(\i->cycle(8+8+8+8:filter(\_->" XXXX   XXX   XXXX   XXXXX   XXX    XXX   X      XXXXXX      X   X  X   X  X      X      X   X  X      XX      X   X  X   X  XXX    X  XX  X   X  X      XXXX      X   X  X   X  X      X   X  X   X  X      X XXXX   XXX   XXXX   XXXXX   XXXX   XXX   XXXXX  X"!!i>' ')(pure i))!!9)(take(0xf8+8)(iterate(9-8+)0))

온라인으로 사용해보십시오!

작동 원리

map(\i->    )                   -- map the lambda over the
        (take(0xf8+8)           -- first 256 elements of
           (iterate(9-8+)0))    -- the list [0,1,2,....]

                                -- the lambda is:

    cycle                       -- make an infinite list by repeating the list
      8+8+8+8:                  -- wih element 32 followed by
                  pure i        -- the singleton list with 'i'
       filter                   -- but keep 'i' only if
          \_->" XXXX..."!!i>' ' -- the pattern has an 'X' at index 'i', else
                                -- remove it to make an empty list
                                -- i.e. the cycled list is, if the pattern is
                                -- a space: [32,32,32,32,32,32,32,32,32,32,...]
                                -- an 'X':  [32, i,32, i,32, i,32, i,32, i,...]
                                --                                       ^
                                --                        9th element ---/ 
                      !!9       -- pick the 9th element which is the result
                                -- of the lambda

3
바이트 단위로 색인 (id:pure(\_->8+8+8+8))을 생성 until((||" XXXX XXX XXXX XXXXX XXX XXX X XXXXXX X X X X X X X X X XX X X X X XXX X XX X X X XXXX X X X X X X X X X X X XXXX XXX XXXX XXXXX XXXX XXX XXXXX X"!!i<'X').(<1))pred 1하고 저장할 수 있습니다 .
Lynn

1
342 바이트filter대신 until브랜치 (및 cycle추가를 방지하기 위해 ++pure(...)).
Ørjan Johansen

3

Brain-Flak -r, 4190 4188 바이트

(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())())())())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())())())()<((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))>()()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())>())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())

온라인으로 사용해보십시오!

우리가 사용할 수 없기 때문에이 사람은 두뇌의 비난에 대한 약간 어렵 ]거나 }. 유일하게 유용한 문자는을 의미합니다 <>().

여기에 '내가이 쓰기 도움 하스켈 프로그램이야

공간이 필요한 곳을 건너 뛰고 개별적으로 밀어 넣는 것으로 계산됩니다.


이것은 아마도 최적입니까?
user202729

@ user202729 나는 의심합니다. 그래도 될 수 있습니다. 흔들리는 방은 많지 않지만 그것이 최적이라는 것을 증명할 수는 없습니다. {}컴퓨터 검색 이 없기 때문에 실제로 유한 시간 내에 최적을 찾을 수 있습니다.
애드혹 가프 헌터

최적의 솔루션을 생성하는 프로그램을 작성하지만 예상보다 약간 느립니다 .i 여전히 실행하기에 충분히 빠릅니다.
user202729

@ user202729 글쎄 그것은 최적이 아니었다. 나는 더 짧은 것을 발견했다.
Ad Hoc Garf Hunter 0시

3

자바 스크립트 (SpiderMonkey를) , 1001 919 789 441 바이트

print(/u/.exec().map.call('0777700077700077770007777700077700007770007000000777777000000700070070007007000000700000070007007000000770000007000700700070077700007007700700070070000007777000000700070070007007000000700070070007007000000707777000777000777700077777000777700077700077777007',''.repeat.bind(Number)).map(/u/.exec().find.bind(/()/.exec().fill(Number.bind(0,88-070)).fill(/u/.exec().fill,!0),''.indexOf)).map(Map.call.bind(Map.call)))

온라인으로 사용해보십시오!

마침내 BF를 친다!

일반적인 아이디어

긴 문자열 문자열의 각 문자를 색인 또는 32로 변환하십시오 (값에 따라 다름).

Array.prototype.map? 배열을 얻는 방법

객체 속성에 액세스하여 액세스 가능한 객체를 확인하는 무차별 대입] 허용되지 이름과 이름이 일치하는 속성 만 액세스 가능)

RegExp.prototype.exec일치하는 경우 배열과 같은 객체를 반환합니다. 인수가 제공되지 않으면 인수의 기본값은 undefined로 설정되므로 /u/.exec()배열을 일치시키고 리턴합니다.

2 개의 다른 문자에서 2 개의 임의의 고유 한 값 가져 오기

우리는 갖고 싶지만 (x,y)=>x=='0'?32:y사용할 수는 없습니다 =.

대신에, 우리는 할 것입니다

new Array(a)
    .map(x=>x=='0'?()=>32:function()this)
    .map((x,y,z)=>x.call(y,z))

우리는 map일부 함수를 통해 문자열을 사용할 수 있지만 =>허용되지 않으므로 소수의 함수 만 사용할 수 있습니다. 바운드 this및 바운드 인수가 있을 수 있습니다 (따라서 형식 (x,y,z)=>pre_filled_function.call(pre,filled,args,etc,x,y,z))

기능 목록 ( repeat exec bind create map indexOf replace fill find reduce filter findIndex call bind apply)을 고려한 후 다음 기능을 사용하기로 결정합니다 (다른 모든 조합을 고려한 후).

  • repeat: 숫자-> 다른 문자열.
  • find: thisArg-> 배열의 첫 번째 요소입니다.

일반적인 아이디어는 다음과 같습니다.

[].map.call('07070707...', (x,y,z)=>[elem1,elem2].find(somefunction,x,y,z)

여기서 인수 ( )와 첫 번째 인수 ( 또는 )를 somefunction고려하여 일치하는지 여부를 반환합니다.thisxelem1elem2

마지막 화살표 기능이로 다시 쓰여집니다 [].find.bind([elem1,elem2],somefunction).

배열 리터럴

우리는 regex exec를 사용하여 배열을 얻을 fill수 있으며 다른 값을 가질 수 있습니다. 예를 들어 /()/.exec()length-2 배열을 반환하면 필요에 따라 채울 수 있습니다.

어느 somefunction것이 필요합니까?

우리는 진실 / 거짓 가치를 돌려주는 것이 필요합니다. this )와 첫 번째 인수 (문자열 또는 배열이어야 함).

이를 위해 indexOf첫 번째 인수가 인수의 접두사 인 경우 잘못된 값을 반환합니다 this.

함수 리터럴을 나타냅니다


1
설명의 끝을 우연히 발견하고 지점에 매달려 바람
Ørjan Johansen

2

TI 기본 (83 시리즈), 578 바이트

8XFact8-ΔTbl
seq(X and XX≤8+8 or 8≤X and X≤Xmax or 7+7≤X and X<9+9 or 7+7+7≤X and X<8π or 9π<X and X<πXmax or 9 nCr 7≤X and X+X<77 or X=7²-7 or 7²≤X and X≤7*9-9 or X=70-9 or X=8²+ΔTbl or X=78-Xmax or X=9*8 or X=89-7-7 or X=89-7 or X=89 or X=900-807 or X=88+8 or 809-707<X and X≤97+77-70 or 9X=999 or 8X=990-70 or X=888-770 or X=899-777 or 8*7+77-8≤X and X+X<Ans or 7²X/77=77+7 or 999+77<8X and 7X<970-9-7 or 8²X=8888+8 or X+X=99+99+88 or 7X=9099-8077 or 9+8≤X/9 and X<997-770-70 or X=99+8² or X=87+80 or X=80+90 or X=87+87 or X=87+90 or X=87+97 or X=98+90 or X=999-808 or X=97+98 or X=99+99 or X=99+99+7 or 9²8<πX and X+X+X≤70*9 or 70π-π-π<Xand X+X+X≤9²8 or 70π<X and X<70π+π or 997-770≤X and X+X+X≤99*7 or 77+79+79≤X and X+8+9≤Ans or 77π<X and X<Ans-Xmax or 7*8*9-8≤X+X and X+X≤7*8*9 or X=Ans,X,0,Ans
8XFact+Ansseq(X,X,⁻8XFact,70π+π

TI-Basic에는 0x20이 될 수 있도록 공백 문자를 0x29로 옮기는 것과 같은 이상한 디자인 선택을 가진 매우 특별한 "코드 페이지" 가 있습니다.randM( 명령 .

TI-Basic이 올바른 종류의 객체를 출력하도록하는 방법을 알아내는 것은 까다 롭습니다. 문자열은 여러 가지 이유로 작동하지 않습니다. 토큰을 사용하지 않고 토큰을 참조 할 수있는 방법이 없으며 "캐릭터도 허용되지 않습니다 . 때문에 우리는 그냥 목록을 쓸 수 없습니다 {}금지된다. 행렬 에는 [and ]문자를 사용할 수 있지만 행렬은 최대 99 개의 행과 열이 허용되므로 1 x 256 행렬이 작동하지 않습니다. 우리는 사용할 수 없습니다 변수에 할당하고, 우리는 변수 목록에서 얻을 수없는 ʟ또는 L₁통해 L₆어쨌든.

그래서 여기서는 문자가 출력하고자하는 문자 중 하나 일 때 불평등이있는 복잡한 논리식을 작성합니다. 그런 다음 seq(명령을 사용하여 1해당 위치 및 0다른 위치에서 목록을 생성합니다 . 거기에서 다른 seq(명령과 일부 산술이 작업을 완료합니다.

그것은 흥미로운 부분이었습니다. 나머지는 상수를 골퍼하고 있으며 가능한 한 많이하지 않았을 것입니다. 내가 사용하는 트릭 중 하나는 기본적 Xmax으로 10, XFact4, ΔTbl1입니다.


1 * 256 매트릭스가 작동하지 않지만 3 * 99 매트릭스와 같은 것을 만들고 div / mod를 사용하여 매트릭스를 인덱싱 할 수 있습니까?
user202729

아, (금지되어 있기 때문에 색인을 생성 할 수 없습니다 .
Misha Lavrov

조건식 (a, b, c) 또는 바닥 또는 모드가 있습니까? 숫자 정밀도는 ~ 15 자리입니다.
user202729

이 모든 것이 존재합니다. 우리는 단지 행렬 항목을 얻을 수 없으며 [A](I,J), 내가 이해 한 바에 [A](int(I/99),I-99int(I/99))따르면 행렬의 모든 요소를 ​​읽는 것과 같은 일을하고 싶습니다. [A]우리는 그렇게 할 수도 없습니다. (그런데, ). 또한 다행히 우리는 괄호를 종료 닫을 필요가 없습니다 금지, 그러나 우리는 많은 명령을 사용할 수있는 방법을 제한합니다.)
미샤 라브 로프에게

비트 마스크와 비슷한 숫자를 사용하여 배열을 인코딩하려고합니다. Python의 (123456789 >> X) & 1과 유사합니다.
user202729

1

Brain-Flak -r, 3894 바이트

(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<((())((()())()))>)))(((((((()()()()()()()())(()()()()()()()()())(()()()()()()()()()())()()()()())))<((((((((()()()()()()()()()()()()()())((((((((((()()()()()()()()()()()()()()())((()()()()()()()()()()()()()()()())()))))<((((((((((((()()()()()()()()()()()()()()()()()()()()())())())())())()()()()()()())))<((((((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()())())())()))))()()()())())())>)))()()()()()()()()()())>))))))()()())())())())())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())>)))())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())())())<((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))>()()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())())())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())>()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())

온라인으로 사용해보십시오!

모든 출력에 대해 최적의 Brain-Flak 프로그램을 생성하는 프로그램을 작성했습니다. 다음을 가정하십시오.

  • <> 사용되지 않습니다
  • 내 프로그램이 맞습니다

이 솔루션은 최적입니다.

O(n5)


1

파이썬 (2) , 162 (157) 바이트

경고 : 앞으로 인쇄 할 수없는 문자!

print map(lambda(i,x):(x>'0'and i-0xe0/7)+0xe0/7,enumerate(bin(reduce(lambda x,y:(x<<0xd-7)-x+y,bytearray('7?QcZ;+BqiQJUS!?B0W![<LBU7X!frQd(SQdB\0')))))

온라인으로 사용해보십시오!

TFeld의 기존 답변을 기반으로 하지만 몇 가지 변경 사항이 있습니다.

A bytearraystr반복 가능하다는 것과 비슷 하지만 반복하면 문자가 아닌 정수를 제공합니다. 이를 사용하여 base-N 리터럴을 인코딩하고 reduce(lambda x,y: x*N+y, my_bytearray)디코딩 할 수 있습니다.

Python 2 파일에는 기본적으로 인코딩이 없으므로 ASCII (0..127)의 문자 만 사용할 수 있습니다. 널 바이트, 줄 바꾸기, 백 슬래시 및 따옴표는 1 바이트를 더 사용합니다.

또한 모든베이스를 사용할 수는 없습니다.

이러한 제한을 고려 하여의 가장 짧은 표현을 찾는 프로그램 을 작성했습니다 n.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.