동일한 코드의 다른 문자


26

참고 :이 과제는 컴파일 된 언어로만 답변을 허용합니다.

태스크

당신의 작업은 매우 간단합니다. 컴파일 할 때 동일한 결과를 얻는 두 개의 다른 프로그램을 만드십시오.

채점

여기에 재미가옵니다. 당신의 점수는 정확히 하나의 프로그램에 존재 하는 고유 바이트 의 수입니다 . 예를 들어 두 프로그램 ( IBM 코드 페이지 437에 인코딩 됨 )이 다음과 같은 경우

☻☻Program A

☺Program B

정확히 하나의 프로그램에있는 문자는

☻☺AB

따라서 점수는 4 입니다. 첫 번째 프로그램에서는 두 번 나타나지만 한 번만 계산됩니다.

당신의 목표는 최고 점수를 얻는 것이며, 최고 점수는 256입니다.

다음 은 ASCII 인코딩 프로그램에서 작동하는 스코어링 프로그램입니다.

규정

  • 두 프로그램의 모든 바이트는 다른 바이트로 대체되어 프로그램이 다른 결과로 컴파일되거나 모두 함께 컴파일되지 못하게합니다. 모든 바이트를 제거하면 동일하게 수행됩니다.

  • 두 프로그램 모두 동일한 플래그로 실행되는 한 컴파일 플래그를 사용할 수 있습니다.

  • 결과 컴파일은 정적이어야합니다 (즉, 실행마다 다를 수 없습니다). 결과가 머신마다 다를 경우, 실행하려는 머신을 나타냅니다.

  • 컴파일 결과는 "동등"또는 "충분히 유사하지 않은"동일한 바이트의 바이트 여야합니다.

  • 컴파일 결과는 비어 있지 않아야합니다.

  • 컴파일간에 경고 / 오류가 같을 필요는 없습니다.

  • 프로그램 또는 컴파일 중 인쇄 할 수없는 문자가 포함 된 경우 16 진 덤프를 포함해야합니다. 기술적으로 필요하지는 않지만.


abcdefghijqlmnop...20 개 이상의 고유 문자를 사용하도록 명명 된 변수를 선언 할 수 있기 때문에 명확하지 않습니다 . 이것이 허용됩니까?
Mr. Xcoder

1
@ Mr.Xcoder 첫 번째 규정을 따르는 한 (아마도 없습니다).
밀 마법사

이것은 좋은 Code-Bowling질문입니다!
Albert Renshaw


누군가 아마도 CoffeeScript에서 답변을 만들 수 있습니다
mbomb007

답변:


18

펄, 점수 254 + 2 = 256

다음은 하나의 프로그램에 대한 16 진 덤프입니다.

00000000: 6c65 6e67 7468 2700 0102 0304 0506 0708  length'.........
00000010: 090a 0b0c 0d0e 0f10 1112 1314 1516 1718  ................
00000020: 191a 1b1c 1d1e 1f20 2123 2425 2628 292a  ....... !#$%&()*
00000030: 2b2c 2d2e 2f30 3132 3334 3536 3738 393a  +,-./0123456789:
00000040: 3b3c 3d3e 3f40 4142 4344 4546 4748 494a  ;<=>?@ABCDEFGHIJ
00000050: 4b4c 4d4e 4f50 5152 5354 5556 5758 595a  KLMNOPQRSTUVWXYZ
00000060: 5b5d 5e5f 6061 6263 6465 6667 6869 6a6b  []^_`abcdefghijk
00000070: 6c6d 6e6f 7071 7273 7475 7677 7879 7a7b  lmnopqrstuvwxyz{
00000080: 7c7d 7e7f 8081 8283 8485 8687 8889 8a8b  |}~.............
00000090: 8c8d 8e8f 9091 9293 9495 9697 9899 9a9b  ................
000000a0: 9c9d 9e9f a0a1 a2a3 a4a5 a6a7 a8a9 aaab  ................
000000b0: acad aeaf b0b1 b2b3 b4b5 b6b7 b8b9 babb  ................
000000c0: bcbd bebf c0c1 c2c3 c4c5 c6c7 c8c9 cacb  ................
000000d0: cccd cecf d0d1 d2d3 d4d5 d6d7 d8d9 dadb  ................
000000e0: dcdd dedf e0e1 e2e3 e4e5 e6e7 e8e9 eaeb  ................
000000f0: eced eeef f0f1 f2f3 f4f5 f6f7 f8f9 fafb  ................
00000100: fcfd feff 273d 3d32 3533 6f72 2078 2829  ....'==253or x()

다른 프로그램은 다음과 같습니다.

"\\"

펄은 보통 컴파일 된 언어를 생각하지 않지만, 그것은 그렇습니다. 먼저 바이트 코드로 컴파일 된 다음 바이트 코드가 실행됩니다. -MO옵션을 사용하여 바이트 코드에 필터를 적용 할 수 있습니다 (예 : 프로그램을 실행하지 않고 덤프) . 이 두 프로그램 모두 다음 바이트 코드로 컴파일됩니다 (을 사용하여 디스 어셈블 됨 -MO=Terse).

LISTOP (0x564fcd99f020) leave [1] 
    OP (0x564fcd99f148) enter 
    COP (0x564fcd99f068) nextstate 
    OP (0x564fcd99f100) null [5] 

설명

Perl은 결과가없는 바이트 코드의 하드 코딩 된 "statement with no effect"문으로 모든 문을 효과가없는 (예 : 문자열 리터럴과 같이) 대체하므로 두 프로그램 모두 같은 것으로 컴파일됩니다. 문자 교체와 관련하여 프로그램 1의 문자 대부분을 아포스트로피로 바꾸면 컴파일에 실패하거나 아포스트로피를로 바꿉니다 0. 프로그램 2에서 임의의 문자를 바꾸면 c프로그램이 컴파일되지 않습니다.\c 인수 취함).

문자 삭제와 관련하여이 답변의 첫 번째 버전은 "방사선 강화 규칙"보다 우선합니다 (문자를 삭제하면 프로그램의 동작이 변경되어야 함). 이 업데이트 된 방사선 강화 버전은 체크섬을 사용하여 작동합니다. 문자를 삭제해도 구문 오류가 발생하지 않으면 코드가 존재하지 않는 함수를 호출하여 컴파일됩니다.x . Perl 컴파일러는 호출이 이루어진 경우 (그리고 일반적으로 함수가 존재하지 않음을 인식하지 못하는 경우) 호출을 최적화하지 않으므로 출력이 다릅니다. 그러나 Perl의 상수 폴더는 변경되지 않은 프로그램이 효과가없는 단일 명령문이라는 것을 알 수 있으므로 이전과 같이 전체를 단일 명령문으로 최적화합니다.

나는 원래 하나의 프로그램에서 고유 한 문자 만 계산하는 것으로 질문을 잘못 읽었으며 그것을 최적화하려고했습니다. 분명히, 프로그램 2는 "효과가없는 문장"opcode를 생성하기 위해 최소한 하나의 문자를 포함해야합니다. 즉, 한 프로그램에서 가능한 최고 점수는 255입니다. 아직 프로그램에 백 슬래시를 포함시킬 방법을 찾지 못했습니다 1 바로 다음에 나오는 문자가 프로그램을 중단시키는 방식으로 대체 될 수는 없지만 가능하다면 놀랍지 않을 것입니다 (255 + 1 = 256의 점수로 이어짐) ).


@WheatWizard : 도전은 조금 덜 쉽지만, 나는 일반적인 대답 계산 트릭 (Perl이 최적화 할 수있는)을 통해 그러한 대답을하기 위해이 답변을 조정할 수 있다고 생각합니다. 이 답변을 삭제하고 새로운 답변이 있으면 삭제를 취소합니다.

1
@WheatWizard : 그리고 끝났습니다. 업데이트하기가 너무 힘들지 않은 것으로 나타났습니다.

15

C, 231

프로그램 A

i[]={'','','','','','','',','   ','
                                       ','
                                          ','','','','','','','','','','','','','','','','','','',' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�'};main(){}

위의 많은 인쇄 할 수없는 것들. xxd hexdump는 다음과 같습니다.

00000000: 695b 5d3d 7b27 0127 2c27 0227 2c27 0327  i[]={'.','.','.'
00000010: 2c27 0427 2c27 0527 2c27 0627 2c27 0727  ,'.','.','.','.'
00000020: 2c27 0827 2c27 0927 2c27 0b27 2c27 0c27  ,'.','.','.','.'
00000030: 2c27 0e27 2c27 0f27 2c27 1027 2c27 1127  ,'.','.','.','.'
00000040: 2c27 1227 2c27 1327 2c27 1427 2c27 1527  ,'.','.','.','.'
00000050: 2c27 1627 2c27 1727 2c27 1827 2c27 1927  ,'.','.','.','.'
00000060: 2c27 1a27 2c27 1b27 2c27 1c27 2c27 1d27  ,'.','.','.','.'
00000070: 2c27 1e27 2c27 1f27 2c27 2027 2c27 2127  ,'.','.',' ','!'
00000080: 2c27 2227 2c27 2327 2c27 2427 2c27 2527  ,'"','#','$','%'
00000090: 2c27 2627 2c27 5c27 272c 2728 272c 2729  ,'&','\'','(',')
000000a0: 272c 272a 272c 272b 272c 272c 272c 272d  ','*','+',',','-
000000b0: 272c 272e 272c 272f 272c 2730 272c 2731  ','.','/','0','1
000000c0: 272c 2732 272c 2733 272c 2734 272c 2735  ','2','3','4','5
000000d0: 272c 2736 272c 2737 272c 2738 272c 2739  ','6','7','8','9
000000e0: 272c 273a 272c 273b 272c 273c 272c 273d  ',':',';','<','=
000000f0: 272c 273e 272c 273f 272c 2740 272c 2741  ','>','?','@','A
00000100: 272c 2742 272c 2743 272c 2744 272c 2745  ','B','C','D','E
00000110: 272c 2746 272c 2747 272c 2748 272c 2749  ','F','G','H','I
00000120: 272c 274a 272c 274b 272c 274c 272c 274d  ','J','K','L','M
00000130: 272c 274e 272c 274f 272c 2750 272c 2751  ','N','O','P','Q
00000140: 272c 2752 272c 2753 272c 2754 272c 2755  ','R','S','T','U
00000150: 272c 2756 272c 2757 272c 2758 272c 2759  ','V','W','X','Y
00000160: 272c 275a 272c 275b 272c 275c 5c27 2c27  ','Z','[','\\','
00000170: 5d27 2c27 5e27 2c27 5f27 2c27 6027 2c27  ]','^','_','`','
00000180: 6127 2c27 6227 2c27 6327 2c27 6427 2c27  a','b','c','d','
00000190: 6527 2c27 6627 2c27 6727 2c27 6827 2c27  e','f','g','h','
000001a0: 6927 2c27 6a27 2c27 6b27 2c27 6c27 2c27  i','j','k','l','
000001b0: 6d27 2c27 6e27 2c27 6f27 2c27 7027 2c27  m','n','o','p','
000001c0: 7127 2c27 7227 2c27 7327 2c27 7427 2c27  q','r','s','t','
000001d0: 7527 2c27 7627 2c27 7727 2c27 7827 2c27  u','v','w','x','
000001e0: 7927 2c27 7a27 2c27 7b27 2c27 7c27 2c27  y','z','{','|','
000001f0: 7d27 2c27 7e27 2c27 7f27 2c27 8027 2c27  }','~','.','.','
00000200: 8127 2c27 8227 2c27 8327 2c27 8427 2c27  .','.','.','.','
00000210: 8527 2c27 8627 2c27 8727 2c27 8827 2c27  .','.','.','.','
00000220: 8927 2c27 8a27 2c27 8b27 2c27 8c27 2c27  .','.','.','.','
00000230: 8d27 2c27 8e27 2c27 8f27 2c27 9027 2c27  .','.','.','.','
00000240: 9127 2c27 9227 2c27 9327 2c27 9427 2c27  .','.','.','.','
00000250: 9527 2c27 9627 2c27 9727 2c27 9827 2c27  .','.','.','.','
00000260: 9927 2c27 9a27 2c27 9b27 2c27 9c27 2c27  .','.','.','.','
00000270: 9d27 2c27 9e27 2c27 9f27 2c27 a027 2c27  .','.','.','.','
00000280: a127 2c27 a227 2c27 a327 2c27 a427 2c27  .','.','.','.','
00000290: a527 2c27 a627 2c27 a727 2c27 a827 2c27  .','.','.','.','
000002a0: a927 2c27 aa27 2c27 ab27 2c27 ac27 2c27  .','.','.','.','
000002b0: ad27 2c27 ae27 2c27 af27 2c27 b027 2c27  .','.','.','.','
000002c0: b127 2c27 b227 2c27 b327 2c27 b427 2c27  .','.','.','.','
000002d0: b527 2c27 b627 2c27 b727 2c27 b827 2c27  .','.','.','.','
000002e0: b927 2c27 ba27 2c27 bb27 2c27 bc27 2c27  .','.','.','.','
000002f0: bd27 2c27 be27 2c27 bf27 2c27 c027 2c27  .','.','.','.','
00000300: c127 2c27 c227 2c27 c327 2c27 c427 2c27  .','.','.','.','
00000310: c527 2c27 c627 2c27 c727 2c27 c827 2c27  .','.','.','.','
00000320: c927 2c27 ca27 2c27 cb27 2c27 cc27 2c27  .','.','.','.','
00000330: cd27 2c27 ce27 2c27 cf27 2c27 d027 2c27  .','.','.','.','
00000340: d127 2c27 d227 2c27 d327 2c27 d427 2c27  .','.','.','.','
00000350: d527 2c27 d627 2c27 d727 2c27 d827 2c27  .','.','.','.','
00000360: d927 2c27 da27 2c27 db27 2c27 dc27 2c27  .','.','.','.','
00000370: dd27 2c27 de27 2c27 df27 2c27 e027 2c27  .','.','.','.','
00000380: e127 2c27 e227 2c27 e327 2c27 e427 2c27  .','.','.','.','
00000390: e527 2c27 e627 2c27 e727 2c27 e827 2c27  .','.','.','.','
000003a0: e927 2c27 ea27 2c27 eb27 2c27 ec27 2c27  .','.','.','.','
000003b0: ed27 2c27 ee27 2c27 ef27 2c27 f027 2c27  .','.','.','.','
000003c0: f127 2c27 f227 2c27 f327 2c27 f427 2c27  .','.','.','.','
000003d0: f527 2c27 f627 2c27 f727 2c27 f827 2c27  .','.','.','.','
000003e0: f927 2c27 fa27 2c27 fb27 2c27 fc27 2c27  .','.','.','.','
000003f0: fd27 2c27 fe27 2c27 ff27 7d3b 6d61 696e  .','.','.'};main
00000400: 2829 7b7d 0a                             (){}.

프로그램 B

i[]={1,2,3,4,5,6,7,010,011,013,014,016,017,020,021,022,023,024,025,026,027,030,031,032,033,034,035,036,037,040,041,042,043,044,045,046,047,050,051,052,053,054,055,056,057,060,061,062,063,064,065,066,067,070,071,072,073,074,075,076,077,0100,0101,0102,0103,0104,0105,0106,0107,0110,0111,0112,0113,0114,0115,0116,0117,0120,0121,0122,0123,0124,0125,0126,0127,0130,0131,0132,0133,0134,0135,0136,0137,0140,0141,0142,0143,0144,0145,0146,0147,0150,0151,0152,0153,0154,0155,0156,0157,0160,0161,0162,0163,0164,0165,0166,0167,0170,0171,0172,0173,0174,0175,0176,0177,-0200,-0177,-0176,-0175,-0174,-0173,-0172,-0171,-0170,-0167,-0166,-0165,-0164,-0163,-0162,-0161,-0160,-0157,-0156,-0155,-0154,-0153,-0152,-0151,-0150,-0147,-0146,-0145,-0144,-0143,-0142,-0141,-0140,-0137,-0136,-0135,-0134,-0133,-0132,-0131,-0130,-0127,-0126,-0125,-0124,-0123,-0122,-0121,-0120,-0117,-0116,-0115,-0114,-0113,-0112,-0111,-0110,-0107,-0106,-0105,-0104,-0103,-0102,-0101,-0100,-077,-076,-075,-074,-073,-072,-071,-070,-067,-066,-065,-064,-063,-062,-061,-060,-057,-056,-055,-054,-053,-052,-051,-050,-047,-046,-045,-044,-043,-042,-041,-040,-037,-036,-035,-034,-033,-032,-031,-030,-027,-026,-025,-024,-023,-022,-021,-020,-017,-016,-015,-014,-013,-012,-011,-010,-7,-6,-5,-4,-3,-2,-1};main(){}

이들은 정확히 동일한 객체 코드로 컴파일됩니다. GCC는 파일 이름을 개체 코드에 포함하므로 파일 이름을 다른 디렉토리에 지정해야합니다.

참조가 없기 i때문에 컴파일러 가이 변수를 완전히 최적화 할 수 있다고 걱정 했지만 전역 변수로 만들면 객체에 존재한다고 보장합니다. 생성 된 어셈블리를 검사하여 확인할 수 있습니다.

    .file   "diffchar.c"
    .globl  i
    .data
    .align 32
    .type   i, @object
    .size   i, 1012
i:
    .long   1
    .long   2
    .long   3
    .long   4
    .long   5
    .long   6
    .long   7
    .long   8
    .long   9
    .long   11
    .long   12
    .long   14
    .long   15
    .long   16
    .long   17
    .long   18
    .long   19
    .long   20
    .long   21
    .long   22
    .long   23
    .long   24
    .long   25
    .long   26
    .long   27
    .long   28
    .long   29
    .long   30
    .long   31
    .long   32
    .long   33
    .long   34
    .long   35
    .long   36
    .long   37
    .long   38
    .long   39
    .long   40
    .long   41
    .long   42
    .long   43
    .long   44
    .long   45
    .long   46
    .long   47
    .long   48
    .long   49
    .long   50
    .long   51
    .long   52
    .long   53
    .long   54
    .long   55
    .long   56
    .long   57
    .long   58
    .long   59
    .long   60
    .long   61
    .long   62
    .long   63
    .long   64
    .long   65
    .long   66
    .long   67
    .long   68
    .long   69
    .long   70
    .long   71
    .long   72
    .long   73
    .long   74
    .long   75
    .long   76
    .long   77
    .long   78
    .long   79
    .long   80
    .long   81
    .long   82
    .long   83
    .long   84
    .long   85
    .long   86
    .long   87
    .long   88
    .long   89
    .long   90
    .long   91
    .long   92
    .long   93
    .long   94
    .long   95
    .long   96
    .long   97
    .long   98
    .long   99
    .long   100
    .long   101
    .long   102
    .long   103
    .long   104
    .long   105
    .long   106
    .long   107
    .long   108
    .long   109
    .long   110
    .long   111
    .long   112
    .long   113
    .long   114
    .long   115
    .long   116
    .long   117
    .long   118
    .long   119
    .long   120
    .long   121
    .long   122
    .long   123
    .long   124
    .long   125
    .long   126
    .long   127
    .long   -128
    .long   -127
    .long   -126
    .long   -125
    .long   -124
    .long   -123
    .long   -122
    .long   -121
    .long   -120
    .long   -119
    .long   -118
    .long   -117
    .long   -116
    .long   -115
    .long   -114
    .long   -113
    .long   -112
    .long   -111
    .long   -110
    .long   -109
    .long   -108
    .long   -107
    .long   -106
    .long   -105
    .long   -104
    .long   -103
    .long   -102
    .long   -101
    .long   -100
    .long   -99
    .long   -98
    .long   -97
    .long   -96
    .long   -95
    .long   -94
    .long   -93
    .long   -92
    .long   -91
    .long   -90
    .long   -89
    .long   -88
    .long   -87
    .long   -86
    .long   -85
    .long   -84
    .long   -83
    .long   -82
    .long   -81
    .long   -80
    .long   -79
    .long   -78
    .long   -77
    .long   -76
    .long   -75
    .long   -74
    .long   -73
    .long   -72
    .long   -71
    .long   -70
    .long   -69
    .long   -68
    .long   -67
    .long   -66
    .long   -65
    .long   -64
    .long   -63
    .long   -62
    .long   -61
    .long   -60
    .long   -59
    .long   -58
    .long   -57
    .long   -56
    .long   -55
    .long   -54
    .long   -53
    .long   -52
    .long   -51
    .long   -50
    .long   -49
    .long   -48
    .long   -47
    .long   -46
    .long   -45
    .long   -44
    .long   -43
    .long   -42
    .long   -41
    .long   -40
    .long   -39
    .long   -38
    .long   -37
    .long   -36
    .long   -35
    .long   -34
    .long   -33
    .long   -32
    .long   -31
    .long   -30
    .long   -29
    .long   -28
    .long   -27
    .long   -26
    .long   -25
    .long   -24
    .long   -23
    .long   -22
    .long   -21
    .long   -20
    .long   -19
    .long   -18
    .long   -17
    .long   -16
    .long   -15
    .long   -14
    .long   -13
    .long   -12
    .long   -11
    .long   -10
    .long   -9
    .long   -8
    .long   -7
    .long   -6
    .long   -5
    .long   -4
    .long   -3
    .long   -2
    .long   -1
    .text
    .globl  main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    .cfi_offset 6, -16
    movq    %rsp, %rbp
    .cfi_def_cfa_register 6
    movl    $0, %eax
    popq    %rbp
    .cfi_def_cfa 7, 8
    ret
    .cfi_endproc
.LFE0:
    .size   main, .-main
    .ident  "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609"
    .section    .note.GNU-stack,"",@progbits

프로그램 B에서 (대부분의) 문자 값은 8 진수로 주어집니다. 그들은 또한 소수에 주어진하지만 진수를 사용하여, 우리는 추가 문자의 몇 가지를 얻을 수 있었다 - 89 - 차이 세트.

GCC는 작은 따옴표 안에 CR, LF 및 (명백한 이유로) NUL 문자를 좋아하지 않는 것 같습니다 ''.

온라인으로 시도하고 점수를 매기십시오 .


성가신 배열 형식 대신 문자열 리터럴을 사용하는 방법이 있습니까? (나는 C에 대해 많이 모른다.)
밀 마법사

@WheatWizard 예. 그러나 변수 는 점수를 손상시키기 위해 char암시 적 대신 명시 적으로 선언해야합니다 int.
Digital Trauma

200 이상! 좋은 일
밀 마법사

동일한 값을 가진 유효한 10 진수 인 8 진 상수의 경우 삭제 0을 제거해야합니다. 그렇지 않으면 프로그램을 중단하지 않고 삭제할 수 있습니다. 프로그램 중 하나에서 digraphs 및 / 또는 trigraphs를 사용하여 점수를 향상시킬 수도 있습니까?

@ ais523 예, 8 진 / 소수 모호한 값에 대한 좋은 지적-나는 그것들을 고쳤습니다. 나중에 {di, tri} 그래프를 살펴 볼게요 ...
Digital Trauma

4

파이썬, 득점 (16) (26) (27) (28)

독특한 캐릭터 : -+;132547698<ACBEDFOXabopsx|

점수를 계산

프로그램 1 :

def y():
 if 0: 0xBCAFD0|0XE|(0o4<<0O4)|48;

 return 0

프로그램 1에서 겉보기 빈 줄에는 5 개의 공백이 있습니다.

프로그램 2 :

def y():
 if 0:return--12365790+(0b1110000)
 pass
 return 0

틈 구멍 최적화 프로그램 소스 코드 와 관련하여 일부 도움말을 찾았습니다. .

이 도우미 스크립트로 테스트 했습니다. 온라인으로 사용해보십시오!


2

파이썬 3.6, 2 3 5 6

프로그램 1 :

z=11_11;a=41_68;y=None;x=5_2_7_9;x*x

프로그램 2 :

z=1111;a=4168;y=None;x=1111+4168;x*x

파이썬은 일반적으로 컴파일되지 않지만 소스 코드를 pyc 파일로 컴파일합니다. 결정적으로 이러한 컴파일에는 "1111 + 4168"을 5279로 변경하는 최적화 패스가 포함됩니다. 밑줄은 두 가지 용도로 사용됩니다. 그 중 하나는 점수에 하나를 추가하는 것이고 다른 하나는 pyc에 저장되는 길이를 유지하는 것입니다. 같은 헤더. 'x'이외의 모든 변수 할당 co_consts은 올바른 순서 를 유지해야합니다 . x*x끝은 유지하는 역할을 co_stacksize같은.


3.6.0도 사용하고 있습니다. 컴파일하는 파일의 mtime과 파일 이름이 동일한 지 확인하고 첫 번째 파일 끝에 두 개의 공백을 compile추가하십시오 (헤더를 추가하지 않는 내장 함수를 사용하여 테스트했습니다) . 헤더에만 적용
pppery

파일이 마지막으로 수정 된 시간입니다. 파이썬은 바이트 코드 앞에이 시간의 인코딩을 추가하여 오래된 바이트 코드를 자동으로 새로 고칠 수 있습니다
pppery

1
예, os.utime기능 사용
pppery


죄송합니다. 이것을 코드 볼링 도전이 아닌 코드 골프로 잘못 해석했습니다
pppery

0

FASM, 254

00000000h: 64 62 20 27 01 02 03 04 05 06 07 08 0B 0C 0E 0F ; db '............
00000010h: 10 11 12 13 14 15 16 17 18 19 1B 1C 1D 1E 1F 21 ; ...............!
00000020h: 22 23 24 25 26 28 29 2A 2B 2D 2E 2F 3A 3B 3C 3D ; "#$%&()*+-./:;<=
00000030h: 3E 3F 40 41 43 45 46 47 48 49 4A 4B 4C 4D 4E 4F ; >?@ACEFGHIJKLMNO
00000040h: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F ; PQRSTUVWXYZ[\]^_
00000050h: 60 61 63 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 ; `acefghijklmnopq
00000060h: 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 ; 
00000070h: 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 ; 
00000080h: 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 ; 
00000090h: A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 ; 
000000a0h: B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 ; 
000000b0h: C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 ; 
000000c0h: D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 ; 
000000d0h: E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 27 ; 
000000e0h: 0D 64 62 20 27 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB ; 
000000f0h: FC FD FE FF 27                                  ; 

DB  1,2,3,4,5,6,7,8,11,12,14,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,33,34,35,36,37,38,40,41,42,43,45,46,47,58,59,60,61,62,63,64,65,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251
DB  252,253,254,255

fasm은 두 개의 심볼을 지원하지 않기 때문에 0x00 및 0x1A는 없습니다.


사용 개행하지만 하나 모두 사용 \ n 다른 사용하는 동안 \ 연구
l4m2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.