트리니티 홀 프라임 출력


38

이 Math.SE 질문을 바탕으로 ; 이 답변 에서 복사 한 번호 입니다. 물론 Numberphile 비디오의 원래 번호 는 물론입니다.

귀하의 작업은 다음 1350 자리 소수를 출력하는 것입니다.

888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

출력에 개행을 선택적으로 포함 할 수 있습니다.

규칙

  • 이것은 이므로 입력이 없습니다.
  • 귀하의 프로그램은 표준 컴퓨터에서 1 시간 이내에 종료되어야합니다. 가까운 경우 테스트를 위해 광산을 사용할 것입니다. 프로그램이 1 분 이상 실행되거나 TIO에서 종료되지 않으면 컴퓨터에 시간을 포함 시키십시오.
  • 이것은 이므로 가장 짧은 코드는 바이트 단위로 승리합니다.

3
내가 그것을 생각 "원래 numberphile 비디오에서 수는"교수 맥키 출신입니다 : P
undergroundmonorail

무엇에 대해 이 총리 ?
sergiol

답변:


31

젤리 , 74 71 69 68 66 바이트

“©ạ-3ṗÇñ"ỤḍV8żṢ?ḤsMVE[,Ṃƭ"ḞÇsẇʂ(ụFsẠʂẆŀṣ’ḃ19ĖŒṙị⁾81s30m0Z062 ȷ446‘

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

작동 원리

리터럴 “©ạ-3ṗÇñ"ỤḍV8żṢ?ḤsMVE[,Ṃƭ"ḞÇsẇʂ(ụFsẠʂẆŀṣ’은 Jelly의 코드 페이지에서 모든 문자를 해당 코드 포인트로 바꾸고 결과를 (바이 젝 티브) 기본 250 숫자로 해석하여 다음 정수를 생성합니다.

103877200905186099028820568168804302565394743652609510039112658230540917082292838565138059974

그런 다음 ḃ19이 숫자를 bijective base 19로 변환하여 다음 숫자 배열을 생성합니다.

16,14,18,12,19,11,3,12,5,10,3,14,4,9,3,15,4,8,3,6,6,4,4,7,3,4,10,3,4,6,3,3,12,3,4,5,3,2,14,3,4,4,3,7,9,4,3,4,3,8,9,4,3,3,3,9,8,4,4,2,3,9,8,5,3,2,3,9,8,6,3,1

이제 ĖŒṙ숫자를 열거하고 실행 길이 디코딩을 수행하여 다음 배열을 생성합니다.

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,20,20,20,20,20,20,21,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,27,27,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,30,30,31,31,31,32,32,32,33,33,33,33,33,33,33,33,33,33,33,33,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,38,38,39,39,39,39,39,39,39,39,39,39,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,43,43,43,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,45,46,46,46,46,47,47,47,48,48,48,48,49,49,49,50,50,50,50,50,50,50,50,51,51,51,51,51,51,51,51,51,52,52,52,52,53,53,53,54,54,54,55,55,55,56,56,56,56,56,56,56,56,56,57,57,57,57,57,57,57,57,58,58,58,58,59,59,59,59,60,60,61,61,61,62,62,62,62,62,62,62,62,62,63,63,63,63,63,63,63,63,64,64,64,64,64,65,65,65,66,66,67,67,67,68,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,72

그런 다음 홀수를 문자 8로 바꾸고 짝수를 문자 1로 바꾸어 ị⁾81문자열 81 로 인덱싱합니다 . 그런 다음 결과를 길이가 30 인 청크로 나눕니다. 한 줄에 한 청크를 표시하면 결과는 다음과 같습니다.s30

888888888888888811111111111111
888888888888888888111111111111
888888888888888888811111111111
888111111111111888881111111111
888111111111111118888111111111
888111111111111111888811111111
888111111888888111188881111111
888111188888888881118888111111
888111888888888888111888811111
888118888888888888811188881111
888111111188888888811118881111
888111111118888888881111888111
888111111111888888881111888811
888111111111888888881111188811
888111111111888888881111118881

이제 m0청크 배열을 역순으로 복제합니다. 그런 Z다음 결과를 압축하여 행과 열을 바꿉니다.

888888888888888888888888888888
888888888888888888888888888888
888888888888888888888888888888
888111111111111111111111111888
888111111111111111111111111888
888111111811111111118111111888
888111118811111111118811111888
888111188811111111118881111888
888111188811111111118881111888
888111888811111111118888111888
888111888881111111188888111888
888111888888111111888888111888
888111888888888888888888111888
888111888888888888888888111888
888111888888888888888888111888
888811188888888888888881118888
188811188888888888888881118881
188881118888888888888811188881
118888111888888888888111888811
111888811118888888811118888111
111188881111111111111188881111
111118888111111111111888811111
111111888811111111118888111111
111111188881111111188881111111
111111118888811118888811111111
111111111888881188888111111111
111111111118888888811111111111
111111111111888888111111111111
111111111111118811111111111111
111111111111111111111111111111

0는 해석 할 수없는 nilad이므로 이전의 결과가 줄 바꿈없이 인쇄되고 반환 값이 0 으로 설정됩니다 .

62는 해석 할 수없는 또 다른 nilad이므로 ( 0 ) 이전의 결과 가 인쇄되고 반환 값은 62 로 설정됩니다 .

ȷ446또 다른 해석 할 수없는 nilad입니다. 62 가 인쇄되고 반환 값이 10 446으로 설정됩니다 .

마지막으로 결과가 증가합니다. 프로그램이 완료되면 최종 결과 ( 10 446 + 1 )가 인쇄됩니다.


ooo cool 설명을 추가해주세요 : D
HyperNeutrino

@HyperNeutrino는 출력을 기반으로하지만 (젤리 지식이 완전히 부족한 상태) 미러링이 진행 중입니다
Stephen Stephen

1
@Stephen 글쎄, 먼저 그것은 멋진 숫자이며 "bijective base something"로 변환 한 다음, 그 의미를 알아 낼 것입니다 [8, 1]. 아, 똑똑해! 나는이 트릭을 훔치고 있습니다. 나는 당신이 신경 쓰지 않기를 바랍니다 :))) 그리고 그래 이상한 06210..01 물건을 모두 추가하십시오. nice :)
HyperNeutrino

2
@HyperNeutrino 설명을 추가했습니다.
Dennis

"그래픽"만으로 투표했습니다. 이것은 꽤 달콤합니다. 젤리를 이해하기를 바랍니다 :)
pinkfloydx33

7

SOGL V0.12 , 81 78 75 73 바이트

$!╚Qαūπōθ(└↓Υ8Π⁶!√|ΠΚψ░⅜Υ‛⁷>∙↓ts3]δεΧ‰“8«─'½Κ81¹¹I⌡_¹◄ø∑'¹n╬³0621"η“⌡01⁰∑

여기 사용해보십시오!

설명:

...“                 push a big number of the RLE lengths of the top part
    8«─              convert from base 10 to base 16 (15 was the max length, and making it base 15 wasn't worth it)
       '½Κ           prepend to the array 48
          81¹        push [8, 1]
             ¹       wrap those two in an array
              I      rotate clockwise, resulting in [[8, 48], [1, 2], [8, 9], [1, 12], ...]
               ⌡_¹   flatten (iterate over, splat current items contents on stack, collect the contents in an array)
                  ◄  run-length decode

ø∑                   join as a string
  '¹n                split into lines of length 15
     ╬³              palindromize horizontally with no overlap
       0621          push 0, 6, 2, and 1
           "η“       push 445
              ⌡      that many times do
               0       push 0
                1    push 1
                 ⁰∑  join the stack together in a string

6

젤리 , 136 바이트

“ßṪṭAƭẠvµM⁾ṖOḥ⁻Ɠ×Ṣ~*pṭẒFỵṿ¦4ÇḟọLÑOcKɲ⁶2*Ḣɲ’b45;@€1ẋ/€ø“Œ\⁴rrNỊġ:,xƙŒ#ṠƲQçḷĠ%&⁻ɼiḂŀB<Ȧƈg(Ṇb>TḥḄ|ḃṘƬ#l7ƇØṃ’b94;@€8ẋ/€ðżF;0;6;2;1;0ẋ445¤;1Ḍ

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

설명 (숫자 단축)

“ßṪṭ...*Ḣɲ’b45;@€1ẋ/€ø“Œ\⁴...ƇØṃ’b94;@€8ẋ/€ðżF;0;6;2;1;0ẋ445¤;1Ḍ  Main link
“ßṪṭ...*Ḣɲ’b45;@€1ẋ/€                                             Run-length encoded 1s
“ßṪṭ...*Ḣɲ’                                                      The base-45 encoding of the list of the run-lengths of 1s
           b45                                                    in base 45
                €                                                 For each element
              ;@                                                  prepend
                 1                                                1
                    €                                             For each sublist
                   /                                              Reduce over
                  ẋ                                               Repeat list (this gets a bunch of lists of 1s)
                     ø“Œ\⁴...ƇØṃ’b94;@€8ẋ/€                       Run-length encoded 8s
                      “Œ\⁴...ƇØṃ’                                 The base-94 encoding of the list of the run-lengths of 8s
                                 b94                              in base 94
                                      €                           For each element
                                    ;@                            prepend
                                       8                          8
                                          €                       For each sublist
                                         /                        Reduce over
                                        ẋ                         Repeat list (this gets a bunch of lists of 8s)
                                           ðżF;0;6;2;1;0ẋ445¤;1Ḍ  With both of the previous lists of lists, construct the final string
                                            ż                     Interleave them
                                             F                    Flatten it
                                              ;0                  Append 0
                                                ;6                Append 6
                                                  ;2              Append 2
                                                    ;1            Append 1
                                                      ;           Append
                                                       0ẋ445¤     (Nilad)
                                                       0          0
                                                        ẋ445      445 times
                                                             ;1   Append 1
                                                               Ḍ  Convert decimal digits to a number

“...’일반 숫자 대신 리터럴을 사용하는 Dennis 덕분에 -121 바이트


“...’리터럴은 많은 바이트를 저장합니다. tio.run/…
Dennis

@Dennis Oh geez 더 읽을 수 없습니다. 아름다운! 감사! : D
HyperNeutrino

0;6;2;1;말도 안되는 것 같습니다.
Magic Octopus Urn

@MagicOctopusUrn 그래 아마 아마 조금 단축 할 수 있습니다; 나는 언젠가 그것을 살펴볼 것이다 : P
HyperNeutrino

6

젤리 ,  133 84  73 바이트

“÷iþṃL7[ḲʂƘⱮ=ƬƤ¬`RẹŀẹY÷n£ị€ıø&ḟ"gPƲ_ÇḊṪ’b⁴48;ĖŒṙḂ×7‘s15m€0F;“¡©£¢‘Ḍ×ȷ446‘

온라인으로 사용해보십시오! (꼬리말은 팔의 외투를 산출하는 치수로 10 진수를 형식화합니다).

어떻게?

아암 '의 코트 좌측의 이진 포맷의 런 길이 부호화 형태 8들과 1하나 전의 행까지 시작하지 0621반영 0621첨가하고 의해 곱해 10 (446) 및 증분.

“...’b⁴48;ĖŒṙḂ×7‘s15m€0F;“¡©£¢‘Ḍ×ȷ446‘ - Link: no arguments
“...’                                  - base 250 number
     b⁴                                - to base 16
       48;                             - prepend a 48
          Ė                            - enumerate [[1,48],[2,12],[3,3],[4,12],[5,3],...
           Œṙ                          - run-length decode (48 1s then 12 2s then ...)
             Ḃ                         - modulo by 2 (vectorises) evens->0 odds->1
              ×7                       - multiply by 7 (vectorises)
                ‘                      - increment (vectorises) - now all 8s and 1s
                 s15                   - split into chunks of length 15
                    m€0                - reflect each chunk
                       F               - flatten
                         “¡©£¢‘        - code-page indices = [0,6,2,1]
                        ;              - concatenate
                               Ḍ       - from decimal list to number
                                 ȷ446  - 10^446
                                ×      - multiply
                                     ‘ - increment

5

, 107 (104) 98 96 87 79 바이트

E³⁰✂”}∧Pt→8⌕LJε`‽∨↑¬KαfGⅉKMκ⎆wp◧⪫⊘^≦#⁸¹"π✂×OγX‹nI”×ι¹⁵×⊕ι¹⁵‖CM²⁸←621M²⁵¦¹⁴1UB0

온라인으로 사용해보십시오! 설명을위한 자세한 코드 링크


4

양성자 , 368 바이트

s=(map("8"&(*),[93,6,6,1,1,6,2,2,6,3,3,6,3,3,6,4,4,6,5,5,6,6,6,6,18,6,18,6,18,7,16,4,3,16,3,4,14,4,4,12,4,4,8,4,4,4,4,4,4,4,4,4,5,5,5,5,8,6,2]),map("1"&(*),[24,24,6,10,6,5,10,5,4,10,4,4,10,4,3,10,3,3,8,3,3,6,3,3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,3,3,5,4,4,7,14,9,12,11,10,13,8,15,4,17,2,20,23,26,44]))
q=''.join(s[0][i]+s[1][i]for i:0..len(s[0]))
print(q+'0621'+'0'*445+'1')

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


4

루비 , 180 바이트

s=0;"".unpack('H*')[0].split(?f).map{|a|a.chars.map{|c|s^=2**c.to_i(16)};t=("%015b"%s).gsub ?0,?8;$><<t+t.reverse};puts'0621'+?0*445+?1

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

178 바이트 + 2 바이트 -Kn(ASCII 인코딩 적용)

첫 따옴표 사이에 인쇄 할 수없는 문자 43 개가 있습니다. 16 진 덤프 :

00000000: 733d 300a 22ff f012 3456 789a bff5 f6f7  s=0."...4Vx.....
00000010: ff8f 4f3f 012f ff8b fef7 af69 df45 8cf0  ..O?./.....i.E..
00000020: 1237 bf6a f59f 48f2 37f1 6f04 5f3f 12f0  .7.j..H.7.o._?..
00000030: 222e 756e 7061 636b 2827 482a 2729 5b30  ".unpack('H*')[0
00000040: 5d2e 7370 6c69 7428 3f66 292e 6d61 707b  ].split(?f).map{
00000050: 7c61 7c61 2e63 6861 7273 2e6d 6170 7b7c  |a|a.chars.map{|
00000060: 637c 735e 3d32 2a2a 632e 746f 5f69 2831  c|s^=2**c.to_i(1
00000070: 3629 7d3b 743d 2822 2530 3135 6222 2573  6)};t=("%015b"%s
00000080: 292e 6773 7562 203f 302c 3f38 3b24 3e3c  ).gsub ?0,?8;$><
00000090: 3c74 2b74 2e72 6576 6572 7365 7d0a 7075  <t+t.reverse}.pu
000000a0: 7473 2730 3632 3127 2b3f 302a 3434 352b  ts'0621'+?0*445+
000000b0: 3f31                                     ?1

어떻게?

다른 사람들은 모두 길이 인코딩을하고 있었으므로 다른 것을 시도하고 싶었습니다.

프라임의 형식화 된 "그림"버전은 8과 1의 30x30 그리드와 하드 코딩 될 수있는 대부분의 0의 두 번째 섹션으로 나눌 수 있습니다. 첫 번째 부분에 초점을 맞추면 중심에서 아래로 대칭임을 알 수 있으므로 왼쪽 절반을 만들 수 있으면 각 줄의 절반을 반대 방향으로 인쇄하면됩니다.

한 줄의 절반은 15 자입니다. 8을 0으로 바꾸면 각 줄은 15 비트 이진수로 해석 될 수 있습니다. 편리하게도, 각 연속 라인 사이의 편집 거리는 대부분 작기 때문에 첫 번째 라인 s( 8888888888888880이되는 0) 을 저장하고 일련의 비트 뒤집기 작업을 적용하여 s매번 결과를 인쇄하여 솔루션을 구현하기로 결정했습니다. .

각 줄의 길이가 15 비트이므로 이러한 작업을 16 진수로 인코딩했습니다. 예를 들어, 작업이 b(또는 11) 인 경우 비트 11을 뒤집습니다. 일부 줄은 1 비트 이상 차이가 있으므로 16 진 문자열이 필요합니다. 숫자. 남은 비트 ( f)가 있으므로이 문자열을 구분 기호로 사용하거나 "아무것도하지 않음"값으로 사용할 수 있습니다. 아래 예 ( 질문에 언급 된 게시물 에서이 줄을 볼 수 있습니다 ) :

Line 3: 000000000000000
Line 4: 000111111111111  <-- flip bits 0 through b
Line 5: 000111111111111  <-- do nothing
Line 6: 000111111011111  <-- flip bit 5

모든 것을 함께 넣어하기 위해, 우리는 인코딩 것 0123456789ab으로 분리 한 다음 f에 아무것도하지 않고, f다음, 5. 이 작품은 우리가 할거야 때문에 .split(?f)얻을 것입니다 라인으로 작업의 각 세트를 얻기 위해 나중에 ["0123456789ab", "", "5"], 그리고 ""아무 조합 수 없습니다.

위의 라인 3과 4의 차이는 훨씬 긴 편집 세트이며, 두 개의 연속 라인 사이의 편집 거리는 일반적으로 0-2 이므로이 인코딩은 합리적으로 저렴하다고 말할 수 있습니다. 향상됩니다.

전체 인코딩 된 문자열은 결국 fff0123456789abff5f6f7ff8f4f3f012fff8bfef7af69df458cf01237bf6af59f48f237f16f045f3f12f0(86 바이트)이며 전체 30x30 그리드를 가져옵니다. 하지만 아직 끝나지 않았습니다 ...

16 진 숫자는 4 비트 ( b-> 1100등) 로 표시 될 수 있습니다 . 즉, 바이트를 사용하지 않고 한 번에 4 비트 문자열을 인코딩하려는 경우 문자열 길이를 절반으로 줄일 수 있습니다. 그래서 내가 한 일입니다-16 진수 덤프는 43 바이트로 표시된 문자열을 보여줍니다. 그 후, Ruby의 멋진 String # unpackH*(16 진수 문자열로 해석하고, 높은 니블을 먼저) 사용하여 43 바이트 문자열을 우리가 알고 사랑하는 86 바이트 버전으로 확장하고 각 작업 세트를 반복하는 문제입니다. 뒤집기 비트-저장된 문자열 s과 연산에 대해 해당 비트를 뒤집기 위해 c수행 s ^ 2**c.to_i(16)합니다.

각 편집 세트가 완료된 후 결과 바이너리를 15 비트로 채우고 모든 0을 다시 8로 바꾸고 결과와 그 반대를 인쇄합니다. 앞서 언급했듯이 30x30 그리드 이후의 숫자 부분은 하드 코딩 될 수 있으므로 다음과 같이 puts'0621'+?0*445+?1합니다.

최종 인코딩 된 문자열은 TIO에서 작업 할 가능성이 없으므로 TIO 버전은 이스케이프를 사용하지만 여전히 작동하지만 더 오래 걸립니다.


3

파이썬 (2) , 760 (523) 329 205 196 바이트

Stephen 덕분에 -237 바이트 Jonathan Frech 덕분에 -124 바이트.

print''.join((ord(j)-34)*'81'[i%2]for i,j in enumerate(":(:((#,#(('$,$'(&%,%&(&%,%&(%&,&%(%'*'%(%(((%(%4%(%4%(%4%)%2%&#%%2%%$&%0%&%&%.%&'&&*&&)&0&+&.&-&,&/&*&1'&'3'$'6*9(<$N"))+'0621'+'0'*445+'1'

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


526 바이트 에 대한 변수를 선언함으로써 81과 함께621
스테판

오. XD 방금 자동화했기 때문에를 보지 못했습니다 621. 감사!
완전 인간

2
목록을 압축하여 205 바이트 인쇄 가능한 바이트 만 사용하려는 경우 몇 가지 더 있습니다.
Jonathan Frech

2

CJam, 532 412 340 231 210 209 바이트

". $ MBZp & 8OIoLs7Rv / BEqN # 1r ~ E $ O % 6 ^ UO = \ z : (Iw] l \ LQ.g.aWf + {2; on | YP'y $ : Lc $ i $ GMCg & mRs # y0 * z` Z, C | Hf6; b / o-0 | FNK5R : OIi} { '`CJ} LOXMSA, & vzl5scm5y0 {om = A _ # / wF "'# fm92bs : A;"6NLkB) h % @ {u`hp_v + YK " '# fm92bYb2f + {[A / (\ s : A;)]} % e ~'0445 * 1

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

런 길이 인코딩은 기본 92에서 확장되었습니다 (기본 250은 멀티 바이트 문자로 변경되었으므로 조정해야 함). 또한 4341089843357287864910309744850519376기본 92에서 확장되어 이진으로 변환됩니다. 1은 실행 길이가 두 자리임을 의미하고 0은 한 자리임을 의미합니다. 예를 들어, 이진 표현의 처음 4 자리 숫자는 1101입니다. 왜냐하면 처음 4 개의 런은 [93,8],[24,1],[6,8],[24,1](93 8, 24 1 등) 이기 때문입니다.


2

자바 스크립트, 454 450 332 207 204 바이트

Stephen 덕분에 -4 바이트. Shaggy와 Dom Hastings 덕분에 -125 바이트

_=>[...`]






,`].map((j,i)=>'81'[i%2].repeat(j.charCodeAt())).join``+0+621+"0".repeat(445)+1

이 답변에는 인쇄 할 수없는 보트가 있으므로 다음은 16 진수 덤프입니다.

00000000: 5f3d 3e5b 2e2e 2e60 5d18 0618 0606 010a  _=>[...`].......
00000010: 0106 0605 020a 0205 0604 030a 0304 0604  ................
00000020: 030a 0304 0603 040a 0403 0603 0508 0503  ................
00000030: 0603 0606 0603 0603 1203 0603 1203 0603  ................
00000040: 1203 0703 1003 0401 0303 1003 0302 0403  ................
00000050: 0e03 0403 0403 0c03 0405 0404 0804 0407  ................
00000060: 040e 0409 040c 040b 040a 040a 0408 040f  ................
00000070: 0504 0511 0502 0514 0817 061a 022c 605d  .............,`]
00000080: 2e6d 6170 2828 6a2c 6929 3d3e 2738 3127  .map((j,i)=>'81'
00000090: 5b69 2532 5d2e 7265 7065 6174 286a 2e63  [i%2].repeat(j.c
000000a0: 6861 7243 6f64 6541 7428 2929 292e 6a6f  harCodeAt())).jo
000000b0: 696e 6060 2b30 2b36 3231 2b22 3022 2e72  in``+0+621+"0".r
000000c0: 6570 6561 7428 3434 3529 2b31            epeat(445)+1

f=
_=>[...`]






,`].map((j,i)=>'81'[i%2].repeat(j.charCodeAt())).join``+0+621+"0".repeat(445)+1

document.write(f())


함수에서 값을 반환하는 것이 유효 할 것이라고 생각합니다.
Stephen

아, 고마워 HTML 부분도 함께 해 주시겠습니까? : PI는 진지하게 이것을 많이 알지 못합니다. 정말 정규 표현식 바꾸기 때문에 JS를 선택했습니다. 편집 : 감사합니다. : D
완전히 인간적인

당신은 마지막 주위에 따옴표를 부정 할 수 +'1'는 이미 A와 String+'0621'될 수 있습니다 +0+621!
Dom Hastings

1
222 바이트 -마지막으로 약속드립니다!
Shaggy

3
[...`]나를 화나게한다
ETHproductions

2

자바 스크립트 (ES6) 206 205 204 203 198 197 194 바이트

에서 작업하는 동안이 함께했다 내가 CRI everytim의 솔루션 , 그것은 자신의에이 영장 게시에 다른 충분히 생각 했어요.

이것은 unprintables 사이의 하중을 포함 ]하고을 ,하므로 유니 코드 이스케이프으로 볼 아래 TIO 링크 (각각 서열 따라 \u1 바이트와 같은 4 개 자리 수가 다음 참조).

_=>`],0621ƽ1`.replace(/\D/g,(x,y)=>"810"[y<122?y&1:2].repeat(x.charCodeAt()))

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


2

MATLAB / 옥타브 , 319318 바이트

이것이이 도전에 대한 나의 첫 번째 시도입니다. 여전히 약간 크고 아마도 더 효율적인 방법이있을 수 있지만 방법을 압축하는 것보다 더 흥미 롭기 때문에 게시 할 것이라고 생각했습니다.

for i=reshape('|871%871%8%1 8)1 8%1%8$1!8)1!8$1%8#1"8)1"8#1%8#1"8)1"8#1%8"1#8)1#8"1%8"1$8''1$8"1%8"1%8%1%8"1%8"118"1%8"118"1%8"118"1&8"1/8"1#8 1"8"1/8"1"8!1#8"1-8"1#8"1#8"1+8"1#8$1#8#1''8#1#8&1#8-1#8(1#8+1#8*1#8)1#8,1#8''1#8.1$8#1$801$8!1$831''861%891!8K1 0 6 2 1~0~0~0~0`0 1',2,[]);fprintf(repmat(i(2),1,i(1)-31));end

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

여기서 사용되는 방법은 Run-Length-Encoding 구성표를 사용하는 것입니다.

우리는 원래 숫자로 시작하여 연속 자릿수를 계산합니다. 이 숫자는 아래 결과에 숫자 다음에 숫자로 직접 기록됩니다 (명확성을 위해 구분 된 공백).

938 241 68 241 68 61 8 101 8 61 68 51 28 101 28 51 68 41 38 101 38 41 68 41 38 101 38 41 68 31 48 101 48 31 68 31 58 81 58 31 68 31 68 61 68 31 68 31 188 31 68 31 188 31 68 31 188 31 78 31 168 31 48 1 38 31 168 31 38 21 48 31 148 31 48 31 48 31 128 31 48 51 48 41 88 41 48 71 48 141 48 91 48 121 48 111 48 101 48 131 48 81 48 151 58 41 58 171 58 21 58 201 88 231 68 261 28 441 0 6 2 1 4450 1

값이 95보다 크면 95 이하의 여러 청크로 나눕니다. 445 0의 경우에만 발생합니다. 445 0의 경우에만 4 개의 95 0과 65 0의 세트가됩니다. 또한 모든 요소를 ​​3 자 길이로 만들기 위해 10보다 작은 수를 0으로 채 웁니다. 공백이 제거 된 상태입니다.

938241068241068061018101018061068051028101028051068041038101038041068041038101038041068031048101048031068031058081058031068031068061068031068031188031068031188031068031188031078031168031048011038031168031038021048031148031048031048031128031048051048041088041048071048141048091048121048111048101048131048081048151058041058171058021058201088231068261028441010016012011950950950950650011

이 시점에서 나는이 단계를 모두 통합하기 전에이 단계를 수행 할 수있었습니다. 우리는 각 그룹 (2 자리)의 수를 세는 영리한 작업을 수행하고 31을 더합니다. 모두가 <96이므로 결과 숫자는 인쇄 가능한 문자 (32-126)의 ASCII 값입니다. 우리에게 다음을 제공합니다 :

|7%7%% ) %%$!)!$%#")"#%#")"#%"#)#"%"$'$"%"%%%"%"1"%"1"%"1"&"/"# ""/""!#"-"#"#"+"#$##'##&#-#(#+#*#)#,#'#.$#$0$!$3'6%9!K    ~~~~` 

MATLAB에서 약간의 변형을 통해 디코딩에 유리한 다음 '문자를 이스케이프 처리 하면 ''(그렇지 않으면 MATLAB은 문자열 리터럴을 분할 함) 영리한 문자열이 남습니다.

|871%871%8%1 8)1 8%1%8$1!8)1!8$1%8#1"8)1"8#1%8#1"8)1"8#1%8"1#8)1#8"1%8"1$8''1$8"1%8"1%8%1%8"1%8"118"1%8"118"1%8"118"1&8"1/8"1#8 1"8"1/8"1"8!1#8"1-8"1#8"1#8"1+8"1#8$1#8#1''8#1#8&1#8-1#8(1#8+1#8*1#8)1#8,1#8''1#8.1$8#1$801$8!1$831''861%891!8K1 0 6 2 1~0~0~0~0`0 1

이것이 코드의 근원입니다. 코드에서 내가하는 일은 128 쌍의 문자로 배열을 2D 문자열로 재구성하는 것입니다. 각 쌍에 대해 첫 번째 문자는 31을 뺀 다음 두 번째 문자는 여러 번 표시됩니다.

결과는 원래 프라임입니다.

888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

편집 :

  • 마법 줄을 재정렬하여 모양을 바꾼 후 조옮김을 제거 할 수있었습니다. 바이트를 저장합니다.

2

05AB1E , 76 바이트

•ŒÆÿ¹т£Ƶ‘β\,ä¸γλaXë«Š¸þaγG(žÃÇ…»šKþÈ/?`'•20BS20öDg81s∍Ss×J30ôø.∞0D445×621s1J

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


Dennis에게서 이것을 훔쳤다 :

888888888888888811111111111111
888888888888888888111111111111
888888888888888888811111111111
888111111111111888881111111111
888111111111111118888111111111
888111111111111111888811111111
888111111888888111188881111111
888111188888888881118888111111
888111888888888888111888811111
888118888888888888811188881111
888111111188888888811118881111
888111111118888888881111888111
888111111111888888881111888811
888111111111888888881111188811
888111111111888888881111118881

항상 8과 1 사이에서 번갈아 가며 각 런의 길이를 세었습니다 (Base 20).

['G', 'E', 'I', 'C', 'J', 'B', '3', 'C', '5', 'A', '3', 'E', '4', '9', '3', 'F', '4', '8', '3', '6', '6', '4', '4', '7', '3', '4', 'A', '3', '4', '6', '3', '3', 'C', '3', '4', '5', '3', '2', 'E', '3', '4', '4', '3', '7', '9', '4', '3', '4', '3', '8', '9', '4', '3', '3', '3', '9', '8', '4', '4', '2', '3', '9', '8', '5', '3', '2', '3', '9', '8', '6', '3', '1']

모두 합쳐서 10 진수로 변환했습니다.

3954184379309026812828704944878416720438306456270310298603957651230861078960874182787979106461

base-255로 더 압축 :

ŒÆÿ¹т£Ƶ‘β\,ä¸γλaXë«Š¸þaγG(žÃÇ…»šKþÈ/?`'

그런 다음 압축 된 비트를 만든 후 ... 원래 비트로 다시 조작하면됩니다.

20B                                 # Back to base 20.
   S                                # Each char separate...
    20ö                             # As their base 10 values...
       Dg81s∍                       # Extend '81' to the length of the array.
             Ss×J                   # Push that many 8 or 1's as told by the array.
                 30ôø.∞             # Split by the symmetrical pattern, flip it, mirror.
                       0D445×621s1  # Create the part that doesn't fit into a pattern.
                                  J # Join whole stack together.

최종 출력 :

88888888888888888888888888888
88888888888888888888888888888
88888888888888888888888888888
88811111111111111111111111888
88811111111111111111111111888
88811111181111111118111111888
88811111881111111118811111888
88811118881111111118881111888
88811118881111111118881111888
88811188881111111118888111888
88811188888111111188888111888
88811188888811111888888111888
88811188888888888888888111888
88811188888888888888888111888
88811188888888888888888111888
88881118888888888888881118888
18881118888888888888881118881
18888111888888888888811188881
11888811188888888888111888811
11188881111888888811118888111
11118888111111111111188881111
11111888811111111111888811111
11111188881111111118888111111
11111118888111111188881111111
11111111888881118888811111111
11111111188888188888111111111
11111111111888888811111111111
11111111111188888111111111111
11111111111111811111111111111
11111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

2

C (gcc) , 277 바이트

나는 끈이 어떻게 든 단축 될 수 있다는 느낌을 얻습니다.

#define F(c,n)for(c=0;c<n;c++)
i,j,k;r(d,n){F(k,n)printf("%d",d);}f(){r(8,90);F(i,128)F(j,6)r(("8111i8111i8915i8=1=i8?1Mi8?1Mi8@1mi8P1oi8p1pi8pppi8pppi8pppi@opPm?opPMOmp@Omip8@iRpR8a41a4Q81i21@1m11O1O11mR@11id811Qp2111p1111="[i]-49>>j)&1?8:1,1);r(1,42);printf("0621%0446d",1);}

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


1

펄 5 , 307 바이트

$d=1;print((map{($d^=9)x$_}(93,24,6,24,6,6,1,10,1,6,6,5,2,10,2,5,6,4,3,10,3,4,6,4,3,10,3,4,6,3,4,10,4,3,6,3,5,8,5,3,6,3,6,6,6,3,6,3,18,3,6,3,18,3,6,3,18,3,7,3,16,3,4,1,3,3,16,3,3,2,4,3,14,3,4,3,4,3,12,3,4,5,4,4,8,4,4,7,4,14,4,9,4,12,4,11,4,10,4,13,4,8,4,15,5,4,5,17,5,2,5,20,8,23,6,26,2,44)),0,621,0 x445,1)

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


1

풍선 껌 , 88 바이트

00000000: edc9 310a 0250 10c4 d02b fdb1 90dc ff64  ..1..P...+.....d
00000010: 96c1 80a2 8885 60aa d97d 7cb3 3de8 75c5  ......`..}|.=.u.
00000020: 37ab 820a 51ee 9537 942a 55c4 aaec 76b4  7...Q..7.*U...v.
00000030: cfb5 1cdc 33dd 908b ac1c 74a0 894e 03c8  ....3.....t..N..
00000040: 11cc 99ab 9c1d c661 32c5 bad6 8aad 96d2  .......a2.......
00000050: b95e 76fe fd6e bb01                      .^v..n..

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


1

루비 , 194 바이트

$><<?8+"~:(:((#,#(('$,$'(&%,%&(&%,%&(%&,&%(%'*'%(%(((%(%4%(%4%(%4%)%2%&#%%2%%$&%0%&%&%.%&'&&*&&)&0&+&.&-&,&/&*&1'&'3'$'6*9(<$N".bytes.reduce(""){|s,x|s+(s[-1]==?8??1:?8)*(x-34)}+"0621"+?0*445+?1

상단 부분은 RLE로 인코딩되고 나머지는 단순히 하드 코딩됩니다.

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


1

코 틀린 , 339 바이트

val s="8J188J1888138<13881887148<14871886158<15861886158<15861885168<16851885178:178518851888188518851D8518851D8518851D8519851B85168315851B85158416851@85168516851>85168716861:861689168@168;168>168=168<168?168:168A1786178C1784178F1:8I188L148^130363231ǯ031"
fun x()=(0..s.length-1 step 2).map{i->(1..(s[i].toInt()-50)).map{print(s[i+1])}}

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


1

CJam ( 108 81 바이트)

"u{èl>`#ö^½³ó!;kMðSÀËndEyvY3ÉÊÅBà#®"256bFbee{)*~}%"81"f=15/_Wf%zT6Y446,:!1

온라인 데모

문자 인코딩이 위와 같은 경우에는 xxd로 인코딩됩니다.

0000000: 2275 1e7b e86c 3e60  8d23 80f6 5ebd b3f3  "u.{.l>`.#..^...
0000010: 213b 968d 6b4d f053  c0cb 6e64 1c45 7976  !;..kM.S..nd.Eyv
0000020: 5933 c9ca 8dc5 42e0  23ae 2232 3536 6246  Y3....B.#."256bF
0000030: 6265 657b 292a 7e7d  2522 3831 2266 3d31  bee{)*~}%"81"f=1
0000040: 352f 5f57 6625 7a54  3659 3434 362c 3a21  5/_Wf%zT6Y446,:!
0000050: 31                                        1

8과 1의 초기 런은 왼쪽 절반으로 분할되고 런 길이는 번갈아 실행되는 길이로 인코딩됩니다. 24를 초과하는 런은 최대 24의 런으로 분할되고 0의 런으로 분리되어 길이는 base-25로 인코딩 된 다음 base-256으로 인코딩되어 압축됩니다.


1

자바 스크립트 (ES2017), 287 바이트

_=>"00000000000000000027wr2027wr2027a9ko261b7c23jerc23jerc1yjm0o1y8coo1y2ou01xx5q01xx5q01xx5q00yykxc9ull699d4au9dk75xffo1v2fgptj4fh8jrj3hhwvgfhmlev3hour5rhq24n3hqytj3hr4hdrhr8ykfhra0hr".replace(/.{6}/g,n=>parseInt(n,36).toString(2).replace(/0/g,8).padStart(30,8))+0+621+"0".repeat(445)+1

@icrieverytim 의 답변에 약간 다른 접근법을 사용합니다 . @Shaggyreplace대신 사용 제안 덕분에 -10 바이트 match!

f=
_=>"00000000000000000027wr2027wr2027a9ko261b7c23jerc23jerc1yjm0o1y8coo1y2ou01xx5q01xx5q01xx5q00yykxc9ull699d4au9dk75xffo1v2fgptj4fh8jrj3hhwvgfhmlev3hour5rhq24n3hqytj3hr4hdrhr8ykfhra0hr".replace(/.{6}/g,n=>parseInt(n,36).toString(2).replace(/0/g,8).padStart(30,8))+0+621+"0".repeat(445)+1
;
p.innerHTML=f()
pre{word-wrap:break-word;white-space:normal}
<pre id=p></pre>



1

/// , 260 바이트

/;/88%//:/1&13%13"//9/\/\///7/"1#95/!!!!94/%""93/8889-/000009,/11#9'/###9&/#88"9%/"""9#/389"/1119!/-----0/'''''''##8%4#;4&"8%18""&11;188"1::1&#%1#"&#8"",8"&&"&&'&&'&&'&#3"'#"#13"'#"3,"##&#"#"'"#",7#7"7%",%#%"#%,%1#%7"",4#8784,8,8%%,#%%",;411;%%41106215555!0001

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

굉장히 흥미로운 것은없고 압축도 있습니다.



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