연결 계산


29

당신의 도전은 작성하는 것입니다 N의 첫 번째 연결할 때 등, 그 코드의 조각을 K 함께 ≥ 1, 그들은 숫자 생산 K를 . N 이 높을수록 좋습니다. 다음은 캐치입니다. 스 니펫에서 문자를 두 번 이상 사용할 수 없습니다.

규칙

  • 하나의 스 니펫에서 동일한 문자를 여러 번 사용할 수 있습니다.
  • 이 스 니펫은 생략하지 않고 제시된 순서대로 연결해야합니다 .
  • 최소한 두 개의 스 니펫을 작성해야합니다.
  • 모든 스 니펫은 동일한 언어로되어 있어야합니다.
  • 기억하세요 : 스 니펫 완전한 프로그램이나 기능 일 필요는 없으며 스스로 기능 할 필요도 없습니다. -1Java에서 유효한 스 니펫입니다. 예 :
  • 모든 결과 연결은 해당 K 값을 출력해야합니다 .
  • 승자는 N 값 이 가장 높은 사람입니다 . 타이 브레이커는 전체 프로그램 길이가 바이트 단위로 가장 짧습니다.

당신의 조각이었다 가정 AD, xc, 123,와 ;l. 그때:

  • AD 생산해야한다 1
  • ADxc 생산해야한다 2
  • ADxc123 생산해야한다 3
  • ADxc123;l생산해야한다 4.

이 프로그램의 점수는 4 점입니다 .


4
그것들은 스택 기반 언어로 스 니펫이어야하기 때문에 숫자를 스택에 밀어 넣을 수 있습니다.
완전히 인간적인

완전히 인간의 질문에 추가하기 위해 스택 기반 언어에서 최상위는 유일한 가치입니까? 즉, dc에서 처음 두 개의 스 니펫이 1'2'일 수 있습니까?
brhfl

@totallyhuman 스택 기반 환경에서는 스택에 여러 값이있는 경우 요청 된 정수 대신 하나 이상의 값을 "생성"했습니다.
Conor O'Brien

@brhfl 위를 참조하십시오.
Conor O'Brien

@ ConorO'Brien 스택의 상단 만 출력으로 간주 할 수 있습니까? '그렇지 않으면 암시 적 IO가없는 스택 기반 언어에서는 실제로 불가능합니다.
완전히 인간적인

답변:


10

Python 3 , 11125656 스 니펫, 4 383 854 바이트

이것은 @WheatWizard의 Python 2 answer 와 매우 유사합니다 . 게시하기 직전 에이 작업을 시작했지만 비 ASCII 문자와 긴 줄에 대한 파이썬의 단점을 정리하는 데 시간이 걸렸습니다. 파이썬이 한 번에 8191 바이트의 행을 읽고 8191 바이트에 멀티 바이트 문자의 일부만 포함되어 있으면 Python에서 SyntaxError가 발생 합니다.

첫 번째 스 니펫은 튜링 완성도를 위해 Fewest (고유 한) 문자 의 인코딩을 사용합니다 .

exec('%c'%(111+1)+'%c'%(111+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(111+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(111)+'%c'%(111+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+1+1)+'%c'%(111+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+1)+'%c'%(11+11+11+11+1+1+1+1+1)+'%c'%(11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11)+'%c'%(11+11+11+11+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1++++++++++1))

이 괴물은 단순히 다음 문자열을 만들어 실행합니다.

print(len(open(__file__).read())-1260)

다음 스 니펫은 모두 정확히 한 문자 길이입니다. 다음 세 문자는 \n, \r하고 #. 나머지 모든 유니 코드 문자 (대리 문자 제외)는 특정 순서로 따라 오므로 8191 바이트 경계에 맞춰집니다.

다음 스크립트 는 1 에서 1112056 사이의 입력 k에 적합한 프로그램을 생성합니다 .

j = 4
s = "exec('%c'%(111+1)+'%c'%(111+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(111+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(111)+'%c'%(111+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+11)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+1+1)+'%c'%(111+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1+1)+'%c'%(11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+11+11+11+11+11+1)+'%c'%(11+11+11+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1+1)+'%c'%(11+11+11+11+1)+'%c'%(11+11+11+11+1+1+1+1+1)+'%c'%(11+11+11+11+1+1+1+1+1+1)+'%c'%(11+11+11+11+11)+'%c'%(11+11+11+11+1+1+1+1)+'%c'%(11+11+11+1+1+1+1+1+1+1++++++++++1))"
l = 1
c = \
        [
                None,
                [n for n in range(0x80) if chr(n) not in "\n\r#%'()+1cex"],
                [*range(0x80, 0x800)],
                [*range(0x800, 0xd800), *range(0xe000, 0x10000)],
                [*range(0x10000, 0x110000)]
        ]

k = int(input())
assert k in range(1, 1112057)
s += '\n\r#'[:k - 1]
k -= 4

while j:
                while k > 0 and c[j] and l + j < 8191:
                        s += chr(c[j].pop())
                        l += j
                        k -= 1
                if k < 1:
                        print(end = s)
                        break
                elif c[j] == []:
                        j -= 1
                else:
                        s += chr(c[8191 - l].pop())
                        print(end = s)
                        k -= 1
                        s = ''
                        l = 0

4
당신은 잃어버린 적이 있습니까?
패트릭 로버츠

256 점 이상을 득점 한 방법에 대해 혼란 스러워요. 다른 유니 코드 문자가 다른 문자입니까? 그렇다면 무한한 점수를 얻기 위해 분음 부호를 사용하지 않는 이유는 무엇입니까?
밀 마법사

@WheatWizard 캐릭터 란?
Dennis

이 정의에 따르면 분음 부호를 결합하여 더 높은 점수를 얻을 수 있습니다.
밀 마법사

@WheatWizard 아니요, 문자와 결합 분음 부호는 두 개의 유니 코드 문자입니다.
Dennis

13

Perl 5, 50,091 151 스 니펫

첫 번째 스 니펫 :

use utf8; print length A

2 ~ 26 번째 스 니펫 : B통과Z

27 46nd 조각을 통해 : a를 통해 z"길이"의 문자를 제외하고,

47 ~ 56 번째 스 니펫 : 0통과9

57 번째 스 니펫 : _

나머지 스 니펫은 펄이 초기 스 니펫에서 14 개의 구별되는 단어 문자를 제외한 순서대로 "단어"문자로 간주되는 50,105 개의 개별 유니 코드 문자입니다.

글쎄, 좋은 생각 이었지만, 일정 길이가 지나면 Perl이 "식별자 너무 깁니다"라는 오류가 발생합니다. 이것은 내가 Perl에게 소화 할 수있는 가장 긴 결합 된 프로그램이다 :

use utf8; print length A012345679BCDEFGHIJKLMNOPQRSTUVWXYZ_abcdjkmoqsvwxyzĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţ

perldiag 매뉴얼 페이지에 "Fulture의 미래 버전은 이러한 임의의 제한을 제거 할 수 있습니다"라고 표시되어 있지만 Perl 5.18은 그렇지 않습니다.

설명:

엄격하지 않은 모드에서, Perl 5는 인용되지 않은 단어 문자열을 "맨손"으로 해석하여 본질적으로 자동으로 인용합니다. 그들은 일반적으로 피하는 것이 가장 좋지만 여기에서 확실히 도움이됩니다!


4
당신의 a-z조각은 대부분 첫 번째 조각의 문자를 사용합니다.
Jonathan Frech

예, 정말 감사합니다. 결정된.
Sean

젤리, pyth 등 - -이 동작이 거의 모든 (엑소) 랭 가문이 때문에, 대답 -like는 "쇼케이스"를 만들 것을 제안
로드

나는 "쇼케이스 같은 대답"이 무엇을 의미하는지 모른다.

1
@Sean Plenty는 esolangs.org에서 찾을 수 있으며,이 접근법은 작업에 대한 철저한 이해가 필요하지 않기 때문에 사이트에서 필요한 것을 배울 수 있습니다. 또한 많은 비에 소랑 인들도 이러한 행동을 보인다. 예를 들어 TI-BASIC의 첫 번째 스 니펫은입니다 length("length(.
Khuldraeseth na'Barya

10

파이썬 2 , 점수 32

for r in range(32):locals()[''.join(map(chr,range(65,66+r)[:26]+range(117,92+r)))]=r+1
print A

이후의 조각으로 B, C, D, ... Y, Z, u, v, w, x, y, z.

극도로 아이러니 한 비결에서 파이썬 3는 유니 코드 식별자를 지원하므로이 트릭을 매우 어리석게 만들 수 있지만 print괄호 없이는 불가능 합니다. 나는 또한 식별자에 숫자를 넣을 수는 있지만,이 접근법이 더 많이 짜내는 것이 매우 재미 있다고 생각하지 않습니다.

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

Python 2 , 18 점, 치트가 적음

print 0x10-1&0x1
print 0x10-1&0x12
print 0x10-1&0x123
print 0x10-1&0x1234
print 0x10-1&0x12345
print 0x10-1&0x123456
print 0x10-1&0x1234567
print 0x10-1&0x12345678
print 0x10-1&0x123456789
print 0x10-1&0x123456789A
print 0x10-1&0x123456789Ab
print 0x10-1&0x123456789Abc
print 0x10-1&0x123456789Abcd
print 0x10-1&0x123456789AbcdE
print 0x10-1&0x123456789AbcdEf
print 0x10-1&0x123456789AbcdEf^((()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==()))
print 0x10-1&0x123456789AbcdEf^((()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==()))|[[[]]>[]][[]>[]]
print 0x10-1&0x123456789AbcdEf^((()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==())+(()==()))|[[[]]>[]][[]>[]]<<False**False

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


10

자바 스크립트 (ES6, V8 6.x에서), (52) 50,298 119,526 119,638 119,683 128,781 조각, 88 149,147 575,179 575,631 576,121 612,789 바이트

아래에는 전체 프로그램을 생성하고 평가 한 후 파일에 대한 다운로드 링크를 생성하는 스택 스 니펫이 있습니다. 최신 버전의 JavaScript가 최신 버전의 JavaScript를 지원하므로 언어에 새 유효한 식별자가 추가되므로이 코드는 계속해서 더 나은 답변을 생성합니다.

ASCII 만 사용

console.log(new Proxy({},{get:(n,{length:e})=>e>>(e/e)}).nn$$00112233445566778899AABBCCDDEEFFGGHHIIJJKKLLMMNNOOQQRRSSTTUUVVWWXXYYZZ__aabbccddffiijjkkmmppqqssuuvvzz)

설명

메타 프로그래밍 기술 Proxy을 사용 하여 객체에서 get 처리기 트랩 을 활성화 하고 속성 이름을 문자열로 액세스하여 식별자를 length / 2값으로 반환합니다 .

첫 번째 조각이 아니라 시작으로 new Proxy({},{get:(n,{length:e})=>e>>(e/e)}).nn, 각각의 추가 조각은 증가를 문자열에 추가 length하여 식별자를 2에 확인하여.repeat() 은 2 바이트 utf-16 자에 대해 각각의 코드 포인트를 두 번, 4 바이트 utf-16 자에 대해 한 번씩 .

JavaScript의 식별자

에서 ECMAScript를 사양 ,IdentifierName 다음과 같은 문법으로 정의된다 :

IdentifierName::
  IdentifierStart
  IdentifierName IdentifierPart

IdentifierStart::
  UnicodeIDStart
  $
  _
  \UnicodeEscapeSequence

IdentifierPart::
  UnicodeIDContinue
  $
  _
  \UnicodeEscapeSequence
  <ZWNJ>
  <ZWJ>

UnicodeIDStart::
  any Unicode code point with the Unicode property “ID_Start”

UnicodeIDContinue::
  any Unicode code point with the Unicode property “ID_Continue”

답을 생성

처음에는 "ID_Continue"Unicode 속성을 사용하여 전체 답변을 생성하는 Node.js 스크립트를 작성했습니다. 이제 순진한 문자를 사용하여 eval()유효한 문자를 테스트하고 대신 모든 유니 코드 코드 포인트를 반복 하는 클라이언트 측 스크립트입니다 .

// first snippet
let answer = 'new Proxy({},{get:(n,{length:e})=>e>>(e/e)}).nn'

const used = Array.from(
  answer,
  c => c.codePointAt(0)
).sort(
  (a, b) => a - b
)

// create a O(1) lookup table for used characters in first snippet
const usedSet = Array.from(
  { length: Math.max(...used) + 1 }
)

for (const codePoint of used) {
  usedSet[codePoint] = true
}

// equal to 1 for first snippet
let snippets = eval(answer)
let identifier = ''

for (let codePoint = 0, length = 0x110000; codePoint < length; codePoint++) {
  const character = String.fromCodePoint(codePoint)

  // if unused
  if (usedSet[codePoint] === undefined) {
    // if valid `IdentifierPart`
    try {
      eval(`{let _${character}$}`)
    } catch (error) {
      // console.log(character)
      continue
    }

    // repeat so that `snippet.length === 2`
    identifier += character.repeat(2 / character.length)
    snippets++
  }
}

// number of snippets generated
console.log(`snippets: ${snippets}`)

const program = `console.log(${answer + identifier})`

// output of program to validate with
eval(program)

// download link to check number of bytes used
dl.href = URL.createObjectURL(new Blob([program], { type: 'text/javascript' }))
<a id=dl download=answer.js>Click to Download</a>

달리는 stat -f%z answer.js 612,802의 바이트 수 수율을하지만, 우리가 13 바이트를 뺍 console.log() 실제 제출을 포장.

부호화

소스는 utf-8로 저장되며, 이는 답변의 엄청난 바이트 수에 반영됩니다. Node.js는 utf-8로 인코딩 된 소스 파일 만 실행할 수 있기 때문에 수행됩니다.

JavaScript는 내부적으로 utf-16 인코딩으로 문자열을 저장하므로 JavaScript로 반환되는 "문자 길이"문자열은 실제로 utf-16으로 인코딩 된 문자열의 바이트 수의 절반에 불과합니다.


x대신 $하여 추가 식별자 문자로 사용하지 않는 이유는 무엇 입니까?
Neil

@Neil 나는 조금 전에 그것을 알아 차렸다. 현재 ~ 119519의 점수가되어야하는 답변을 작성 중입니다. 지금은 인코딩을 올바르게 탐색하는 문제로 해결되었습니다.
패트릭 로버츠

나는 거짓말을 한 Spidermonkey JS 쉘의 사본을 시도했다. 50466 개의 다른 식별자 문자 만 지원했습니다. (초기 스 니펫에 12를 사용하므로 점수는 50455입니다.)
Neil

글쎄, 대대적 인 점검을 거치지 않으면 점수는 50297이 될 것 같습니다. 지금 답을 쓰십시오. 분명히 말하면, 유니 코드 10.0.0 사양을 사용하는 ES6 +에는 실제로 128,096 개의 지원되는 식별자가 있지만 언급 한 숫자의 문자열 길이는 1입니다. 그렇지 않으면 문자열 문자 수를 얻는 것이 훨씬 어렵습니다. 그것이 내가 끊었던 것입니다.
패트릭 로버츠

1
@PatrickRoberts 죄송합니다, 실수입니다, 이것을 읽는 동안 나는 끝 텍스트가 끝날 때까지 모든 텍스트를 가정했습니다. 내 눈은 그 부분을 건너 뛰었을 것이다.
Conor O'Brien

6

파이썬 2 , 6 10

pizzapants에 +3 감사 184 WheatWizard에
+1

4/4
*2
-~0
+1
|5
^3
&776%6
and 8
if[]else[9][9>9]
.__xor__((""=="").__xor__((""=="")<<(""=="")))

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


변경할 경우 print int(True)단지에 4/4, 당신은 추가 할 수 있습니다 and 7, 당신은 번호를 인쇄 할 필요가 없습니다 주어, 7 단지 '생산'이
pizzapants184


를 추가 &2하면의 &우선 순위가 높아서 점수가 1 씩 증가 ^하지만 숫자 2를 어떻게 든 만들어야합니다. (사용 가능 [[]==[]][[]<[]]<<[[]==[]][[]<[]])
밀 마법사


1
@ pizzapants184 ord와 (과 and) 충돌이 있었지만 해결 했습니다
Rod

6

TI-Basic (83 시리즈, OS 버전 1.15 이상), 점수 : 17 18 19 24

(Tiebreaker : 53 바이트)

@Scrooble이 지적한대로 시작 하고 끝에 단일 토큰 스 니펫을 계속 추가하여 평소와 같이 문자열 길이 를 잘못 사용 하면 매우 큰 점수를 얻을 수 있습니다 . TI-Basic은 700 개가 넘기 때문에 실제로는 잘 작동합니다. 그러나 여기 또 다른 접근법이 있습니다.length("A length("length(

int(log(11
2
3
4
5
6
7
8
9
0
Xmax
Ymax
nMax
abs(Xmin
Ymin
ππ
eee
³
²
₁₀^(₁₀^(X
+e^(⁻e^(Y))))
/√(sub(Z!
°
randrandrand

참고 TI-기본이 토큰 화되어 있으므로 (예를 들어)이 e^(명령은 문자를 사용하지 않는 e, ^, (.

문서화되지 않은 sub(명령의 기능에 의존합니다. 하위 문자열을 찾는 것 외에도 숫자를 100으로 나누는 데 사용될 수 있습니다.

이것은 새로운 계산기에서 실행되는 경우 작동합니다 X. Y,, Z모두 0, 창 변수가 표준 값으로 설정되어 있고 계산기가 라디안 모드이고 rand처음 3 개의 출력이 0.943, 0.908, 0.146.


4

PowerShell , 25 바이트, 점수 5

' '.count*2+!""-(-1)|%{5}

스 니펫 1 : ' '.count출력 1. .count문자열이 하나만 있기 때문에 문자열 을 가져 와서이를 수행 합니다.온라인으로 사용해보십시오!

스 니펫 2 : 이전 스 니펫에서 가져와 두 개를 곱하기 때문에 *2출력 합니다. 온라인으로 사용해보십시오!21

스 니펫 3 : 빈 문자열의 부울 비를 추가하여 +!""출력 3합니다. 이것은 빈 문자열을로 $true암시 적으로 캐스팅하고 다시 암시 적으로로 캐스팅 1되므로 온라인으로 시도해보십시오!

스 니펫 4 : 단순히 음수를 빼서 -(-1)출력 합니다. 온라인으로 사용해보십시오!4

스 니펫 5 : |%{5} 출력 5출력 (하나 개의 입력 번호는 단지 거기 때문에, 하나) 루프로 이전의 수와 그 루프의 각 반복을 복용하여 5 온라인으로보십시오!

을 (를) 대체하는 4방법과을위한 교묘 한 방법에 대해 Jan에게 감사합니다 5.


어떻게 약 ' '.count*2+!""-(-1)|%{5}5의 점수 하시나요?
Jan

@Jan Oh, 그렇습니다 . 실제로 $_inside 를 사용할 필요는 없습니다 |%{ }. 감사!
AdmBorkBork

4

C, 스 니펫 10 개, 45 바이트

sizeof(char)              // sizeof(char) = 1
<<9/9                     // Multiply by two.
|1                        // 2 or 1 = 3
,4                        // Discard previous expression, return 4.
+!!8                      // Add one.
^3                        // 5 xor 3 = 6
&66                       // 3 and 66 = 2, 5 xor 2 = 7 (& has higher precedence)
??'0xF                    // Trigraph for '^'. 7 xor 15 = 8
-~-2                      // ~-2 = 1, 7 xor 14 = 9
*57%5                     // 1*57%5 = 2, 7 xor 13 = 10

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


4

MATL 득점 8 15 64 123 바이트

rg             % 1 Random number, make boolean (1)
Q              % 2 Increment
Yq             % 3 Nth prime
a,E]           % 4 any (convert to boolean 1. Do twice: Multiply by 2
T+             % 5 Add True
F~_-           % 6 Subtract negative (not(false)) = 6-(-1)
:sI/           % 7 Range 1:6, sum (21), divide by 3
A8*            % 8 All elements (True). Multiply by 8
d9             % 9 Clear stack, push 9
x10            % 10 Clear stack, push 10
WBPf           % 11 Raise 2^10. Convert to binary [1 0 ... 0], flip [0 0 ... 1]. Find
23ZP           % 12 Push 23, and calculate the distance between 11 and 23
yyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhz  % 13. Duplicate and count elements
tttttttttttttvvvvvvvvvvvn  % 14 Duplicate and count elements
OOOOOOOOOOOOOON&           % 15 Add bunch of zeros, output size of stack
  • Luis Mendo의 도움으로 12 세가되었습니다! 사용 11,23ZP변경과 함께, 자신의 생각을했다 3으로I 조각 7.
  • 루이스의 도움으로 15 세가되었습니다. OO...N&그의 생각이었다.

올 더.MATL 기능을 모릅니다. 그래서 설명서에서 앞뒤로왔다 갔다해야했습니다 ... :)

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


오, 5Yy멋지다! 나는 이미 Y두 번째 소수를 얻기 위해 3에서 사용합니다 :(
Stewie Griffin

와 함께 다른 것을 얻을 수 있다고 생각합니다 OOOOOOON&. 다른 사람을 추가하는 경우 아마도 다음과 같은 이유로 아마도 마지막 일 것입니다.&
Luis Mendo

다시 고마워 루이스! 또한 왜 많은 soooo가 필요 했 yyyyyyyy...습니까? y12를 복제하기 위해 24를 두 배로 늘려야했습니다 ...?
Stewie Griffin

@Stewie 중복 된 요소의 절반이에 의해 생성 된 빈 배열이기 때문에 생각합니다 d. 지금 모바일 해요,하지만 시도 X#에 스택 디버그 - 인쇄
루이스 Mendo


2

젤리 , 253 바이트, 250 점

L}“L

후속 1 문자 스 니펫 :

¡¢£¤¥¦©¬®µ½¿€ÆÇÐÑ×ØŒÞßæçðıȷñ÷øœþ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|~¶°¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ƁƇƊƑƓƘⱮƝƤƬƲȤɓƈɗƒɠɦƙɱɲƥʠɼʂƭʋȥẠḄḌẸḤỊḲḶṂṆỌṚṢṬỤṾẈỴẒȦḂĊḊĖḞĠḢİĿṀṄȮṖṘṠṪẆẊẎŻạḅḍẹḥịḳḷṃṇọṛṣṭụṿẉỵẓȧḃċḋėḟġḣŀṁṅȯṗṙṡṫẇẋẏż

참고 : 로 대체 될 수 \n있으며 Jelly의 코드 페이지에서 동일한 바이트입니다.

해당 스 니펫을 모두 추가 한 후 2 문자 스 니펫을 추가 할 수 있습니다 ”‘.

Dennis 덕분에 +1 .

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


2

언어 , 064 스 니펫

N 번째 단편은 구성 2 3N-1 의 반복 N 번째 포함하여 최대 비 대리 유니 코드 문자와 1 112 064 번째 현재 유니 코드 표준의 마지막 비 대리 캐릭터.

단순성을 위해 출력이 단항으로 이루어집니다 (널 바이트를 숫자로 사용). 십진법은 가능하지만 프로그램을 더 길게 만들 것입니다. 단항식으로 첫 번째 프로그램을 테스트 할 수 있습니다.

를 들어 N = 1 , 우리는 얻을 4 의 반복 + 0000 U를 . 이것은 brainfuck 프로그램과 동일합니다. 하나의 null 바이트를 출력 .

를 들어 N = 2 , 우리는 수 (32) 의 반복 U + 0001 , 총 36 개 문자. 이것은 ..두 개의 널 바이트를 인쇄 하는 brainfuck 프로그램과 동일 합니다.

를 들어 N = 3 , 우리가 얻을 256 의 반복 U + 0002를 , 총 292 개 문자. 이것은 brainfuck 프로그램과 동일하며 ...3 개의 널 바이트를 인쇄합니다.

등등, n = 1112 064까지 .


10 진수로 동등한 것을 보여 주거나 논쟁 할 수 있습니까? 내가 단항 출력에 대한 합의에 대해 확실하지 않다하지만 난 그게의 개념 부족 언어에 대한 믿을 진수 - 적어도, 마지막 I 체크
코너 오브라이언에게

나는 그것이 십진수라는 개념이없는 언어에 대한 것이라고 생각합니다. 예, Lenguage에는 십진 I / O가 없기 때문에 괜찮습니다. 어쨌든, n의'+'*(48 + d) +'.>' 각 십진수에 대해 brainfuck 프로그램 을 인코딩 하면 동일한 점수를 얻을 수 있습니다. 설명하기가 훨씬 어렵습니다.
Dennis

내가 참조. 더 이상 동일합니다.
코너 오브라이언

2

BASIC (ZX Spectrum), 244 점 (새로운 점수 247) [이것은 부정 행위입니까?]

스 니펫 1 :

2356 PRINT PEEK (PEEK 23635+256*PEEK 23636+2)+256*PEEK (PEEK 23635+256*PEEK 23636+3)-56-66

스 니펫 2 : :

스 니펫 3 : REM

스 니펫 4-244 : 스 니펫 1, 2 및 3에없는 모든 문자를 사용하는 단일 문자 스 니펫

설명

캐릭터

스펙트럼에서 PRINT단일 문자 (코드 245)입니다. 코드 조각 (1 개) 사용하는 11 개 개의 문자 : 2, 3, 5, 6, +, -, *, (, ), PRINT그리고 PEEK당신이 공간으로 볼 무엇 문자의 일부 PRINTPEEK 공간 자체가 사용하지 않은, 그래서. 코드에 존재하는 유일한 숫자이기 때문에 줄 번호 2356을 지정하기로 결정했습니다.

문자 13과 14는 허용되지 않습니다. 즉, 코드 스 니펫 2-244에는 243자가 남아 있으며 오류를 발생 시키거나 다른 작업을 수행하는 코드로 시작 :하고 REM피해야합니다.

작동 원리

이것이이 답변이 책에 의한 것인지 확실하지 않은 이유입니다.

23635는 LH로 저장된 16 비트 시스템 변수 PROG의 메모리 위치입니다. (값은 일반적으로 23755입니다. 그러나 코드가 짧아 지더라도이 숫자를 직접 사용하는 경우가 아니라면 잘못된 결과와 별도로이 숫자를 사용하면 추가 자릿수가 필요합니다.) PROG 값은 메모리 위치입니다. 프로그램 자체가 저장된 곳. 처음 2 바이트는 HL로 저장된 행 번호이고 다음 2 바이트는 LH로 저장된 행의 길이입니다. 이것이 프로그램이 자신의 라인 길이를 찾는 방법이므로 적절한 것을 빼야합니다.

문자 저장

숫자가 저장되는 방식을 고려할 때 코드 조각 1이 1을 생성하도록 행이 -114로 끝날 수 있었지만 추가 숫자를 사용하고 싶지 않았기 때문에 대신 두 자리 숫자 두 개를 가져 와서 더했습니다. 122; 56과 66은 훌륭하게 해냈습니다.

이 코드는 모든 중첩 및 계산 값 PROG ( PEEK 23635+256*PEEK 23636)가 두 번 으로 약간 추악 합니다. 그러나 저장 한 다음 저장된 값을 사용하면 추가 문자 / 발췌 문장이 필요합니다. 라인은 다음과 같이 시작할 수 있습니다

2356 LET p=PEEK 23635+256*PEEK 23636: PRINT PEEK (s+2)...

4 개 개의 추가 문자를 사용하는 것이다 : LET, p, =:.

어쩌면이 숫자를 사용하여 모든 숫자가 1 자리만을 사용하고 3 개의 스 니펫을 얻는 숫자에서 계산되도록 할 것입니다.

편집하다:

다음은 새로운 스 니펫 1입니다 (스펙트럼에 긴 줄이 줄 바꿈 표시되는 방식이므로 코드를 테스트하려면 올바르게 입력했는지 확인하는 데 도움이됩니다).

1111 PRINT +PEEK (PEEK (11111+11
111+1111+(1+1+1)*(111-11)+1+1)+(
111+111+11+11+11+1)*PEEK (11111+
11111+1111+(1+1+1)*(111+1-11))+1
+1)+(111+111+11+11+11+1)*PEEK (P
EEK (11111+11111+1111+(1+1+1)*(1
11-11)+1+1)+(111+111+11+11+11+1)
*PEEK (11111+11111+1111+(1+1+1)*
(111+1-11))+1+1+1)-111-111-111-1
11-111-111

를 피함으로써 또 다른 발췌 문장을 얻을 +수 있습니다 -. 나는 그것을 시도하지 않을 것입니다, 이것은 시련으로 충분했습니다.


2

클라인 011 , 9 스 니펫

스 니펫 1

!@1!aaaaaaaaaaaaaaaaaaaaa/a

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

스 니펫 2

2((2|bbb0b2bbbb4bbbbbbbb

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

스 니펫 3


c\*3ccccccccccccccccccccc\ccccccccc3c6cccc9
c\

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

스 니펫 4

ddddddddddddddddddddddd>$d:d:++-$:+:+++$:?:-$-+++

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

스 니펫 5

ee

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

스 니펫 6

fff

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

스 니펫 7

ggggg

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

스 니펫 8

hh

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

스 니펫 9

iiiii

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

설명

이것은 클라인에게 정말 재미있는 도전이었습니다. 클라인의 고유 한 토폴로지를 통해 많은 흥미로운 작업을 수행 할 수 있습니다. 당신이 대답을 알 수 있듯이 5-9는 경계 상자를 확장하기 위해 코드에 필러 (클라이에서 아무것도하지 않으므로 필러로 사용했습니다)를 추가하는 것입니다. 이로 인해 Klein의 고유 한 토폴로지로 인해 코드의 이전 부분을 통해 ip가 다른 경로로 이동합니다.

나중에 전체 설명을하려고하지만 지금은 모든 문자가 .s 로 바뀐 프로그램의 버전을 이해하기가 더 쉽습니다 .

!@1!...................../.2((2|...0.2....4........
.\*3.....................\.........3.6....9
.\.......................>$.:.:++-$:+:+++$:?:-$-+++.................

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


2

> <> , 점수 : 무한대 1,112,064-6 = 1,112,058

스 니펫 1 (6 바이트)

"l4-n;

이 스 니펫은; 뒤에 나오는 문자의 양을 출력합니다. 하나 추가. 이것은 확장 할 수 있습니다 무한 한 문자 각 조각의 매우 많은 양의. 빠른 구글은 1,112,064 개의 유니 코드 문자가 있음을 알려줍니다. 내가 이미 사용한 6을 뺀 것입니다.

시도 그것을 온라인


1

아르 자형 , 점수 : 79

Sean의 Perl 답변에 대한 크레딧 영감에 대한; 이것은 R 인터프리터의 단점을 남용합니다.

첫 번째 스 니펫 :

nchar(scan(,""))
a

후속 스 니펫은 다음의 문자입니다.

bdefgijklmopqtuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@$%^&*_+|\[]{}:?><;

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

scan함수는 파일에서 데이터 ""를 기본값으로 설정합니다 stdin().

에 대한 문서는 다음을 stdin()나타냅니다.

R이 파일에서 스크립트를 읽을 때 파일 은 '콘솔'입니다. 이는 인라인 데이터를 허용하는 일반적인 사용법입니다 (예 : 'R 소개'참조).

따라서 후속 데이터가 파일이됩니다. 이것은 간단하게 확장 될 수 있으며 여러 다른 인코딩으로 작동 할 수 있습니다.


1

파이크 , 256 바이트, 254 점

널 바이트 ( \x00)가 포함되어 있으므로 공백으로 구분 된 실제 바이트의 16 진 코드입니다 .

스 니펫 시작 :

6C 22 00

후속 1 문자 스 니펫 :

01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

여기 사용해보십시오!


1

Java 8, 7 스 니펫 (19 바이트)

1
*2
-~0
>4?4:4
|5
^3
7%7

그냥 시작하고 계속 노력하겠습니다.

여기에서 시도하십시오.

설명:

괄호를 추가하면 실행 우선 순위가 더 명확해질 수 있습니다.

((1*2)-~0)>4?4:4|(5^(37%7))
  • a*b: 곱하기 ab
  • ~a: -a-1
  • a>b?x:y: if(a>b){ x }else{ y }
  • a|b: 비트 단위-OR ab
  • a^b: 비트 단위 XOR ab
  • a%b: a모듈로b

1

파이썬 2 , 110 스 니펫

다음은 전체 스 니펫입니다.

print((((len(open(__file__).read())-44.))))

#	 !"$%&'*+,/012356789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^`bcghjkmqsuvwxyz{|}~

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

첫 번째 스 니펫은

print((((len(open(__file__).read())-44.))))

그리고 다음 109 스 니펫은 다음 109 바이트입니다.

Lynn이 말한 것처럼 이것은 꽤 "불쾌한"것입니다. 첫 번째 스 니펫은 파일을 열고 길이에서 44를 뺀 다음 서로의 스 니펫은 프로그램의 논리를 전체적으로 변경하지 않고 파일의 길이에 1을 더합니다. 따라서 출력 결과가 1 씩 증가합니다.


1

dc , 점수 13, 58 바이트

I3%                   #I is the default input radix, 10, mod 3 yields 1
1+                    #Add one
2^2^2^Z               #2^8=256, Z pushes the number of digits to the stack
6*v                   #Square root of 18 = ~4.24, at precision 0 we get 4
c5                    #Start getting lazy, clear the stack and push 5
_F-E-                 #Subtract negative 15, then subtract 14
ss7                   #Lazy, 'drop' the value by storing it, push 7
SS8                   #Lazy, 'drop' the value by storing it, push 8
d::9                  #Lazy, 'drop' the value by storing it, push 9
;;kA                  #Recall element 9 from nonexistant array ; which is zero, set precision, push A (10)
iB                    #Set input radix to 10, push B (11)
oD                    #Set output radix to 11, push D (13, or 12 in base 11)
 4CCCCCCr/4C/CC/4/    #We have division and the digits 4 and C left, this might not be the optimal way to get us to 13 but it does the job

온라인으로 사용해보십시오! (TIO 버전은f 각 스 니펫 이후에 전체 스택을 인쇄하기 위해 각 스 니펫을 각 스 니펫이 스택에 단일 값만 남는 것을 보여줍니다. 마지막 스 니펫의 선행 공간을 잊어 버렸습니다. 기능상 중요하지 않습니다. 줄 바꿈으로 구분되지만 문자 사용에 포함됩니다)

각 추가 스 니펫 연결은 원하는 값을 스택에 남겨 둡니다. 12 살 때, 나는 스택을 먹을 방법이 부족했다. 나는 수학 연산이 스택을 뒤섞기 때문에 일찍 사용하려고 시도했으며 더 큰 숫자에 도달하면 그렇게 관리하는 것이 더 까다로워집니다. 모든 것이 말되고 완료되면, 나는 0을 남길 자리가 있고 스택 팝핑 방식은 거의 없으므로 13은 최대에 가깝다고 생각합니다. 나는 dc에서 이것을 달성하는 비슷한 (그리고 아마도 더 짧은) 많은 방법이 있다고 확신합니다.이 종류는 제자리에 떨어졌습니다. cygwin은 대부분의 dc 버전과는 다르게 0-9와 혼합 된 AF를 처리하며 cygwin 44C4r/CC 4//의 최종 스 니펫에서 작동합니다.


0

Pyth , 124 스 니펫

l"x00x01x03x04x05x06x07x08
x0bx0c
x0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkmnopqrstuvwxyz{|}~x7f

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

3 개의 인쇄 가능한 문자 ( x..)를 사용하여 이스케이프 할 수없는 인쇄 가능한 문자 . 첫 번째 스 니펫은 길이가 3 바이트이며 그 이후의 모든 스 니펫 길이는 1 씩 증가합니다.


0

Beatnik , 22 바이트, 20 점

K A
E
I
L
N
O
R
S
T
U
a
e
i
l
n
o
r
s
t
u

"스 니펫"이라는 단어를 가정하면 스택에서 값을 푸시 할 수 있습니다.


0

옥타브, 86 점

nnz n

뒤에 :

!$&()*+./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmopqrstuvwxy{|}~

이것은 Octave가 함수 이름 뒤의 모든 것을 문자열 입력으로 취급한다는 사실을 이용합니다. 따라서 nnz n문자열에서 0이 아닌 요소의 수를 반환합니다 'n'. 다른 인쇄 가능한 ASCII 문자를 추가하여 86을 얻습니다. ',"%#작동하지 않습니다.



0

줄리아 0.6, 111217

다음 스크립트는 전체 프로그램을 만듭니다.

A = "macro length(a);length(string(a))end;@length a"
B0 = join(([Char(x) for x in Iterators.flatten((0x000001:0x00d7ff, 0x00e000:0x10ffff)) if Base.isvalid(Char(x)) && Char(x) ∉ A && Base.isidentifier("a$(Char(x))") ]));
B = normalize_string(B0, stripmark=true, decompose=true);
B = join(unique(b for b in B))
while (n = search(B, '·')) > 0
    B = B[1:prevind(B,n)]*B[nextind(B,n):end]
end
while (n = search(B, '`')) > 0
    B = B[1:prevind(B,n)]*B[nextind(B,n):end]
end

open("concount.jl", "w") do f
    write(f, A)
    write(f, B)
end

설명

매크로

 macro length(a);length(string(a))
 end
 @length a

뒤에 식별자로 허용되는 모든 고유 한 유니 코드 문자가옵니다 isidentifier. 일부 분음 부호가 세어지면서 삭제했습니다.


0

TeX, 61 점 (190 점)

첫 번째 스 니펫 :

\def\len#1{\expandafter\glen\string#1=}
\def\glen#1{\tlen}
\def\tlen#1{\if#1=\let\tlen\end\number\count1\else\advance\count1by1\fi\tlen}
\count1=-1
\catcode33=11
\catcode34=11
\catcode36=11
\catcode37=11
\catcode'46=11
\catcode40=11
\catcode41=11
\catcode42=11
\catcode43=11
\catcode44=11
\catcode45=11
\catcode46=11
\catcode47=11
\catcode56=11
\catcode57=11
\catcode'72=11
\catcode'73=11
\catcode60=11
\catcode62=11
\catcode63=11
\catcode64=11
\catcode'133=11
\catcode'135=11
\catcode'136=11
\catcode'137=11
\catcode'140=11
\catcode124=11
\catcode126=11
\len\t

기타 60 스 니펫 : 순서에 관계없이 각 문자 중 하나의 문자를 포함

!"$%&()*+,-./:;<>?@[]^_`|~89ABCDEFGHIJKLMNOPQRSTUVWXYZhjkqwz

설명 : \len끝에 호출되는 제어 시퀀스를 문자열로 변환합니다. 각 문자 (포함 \)는 해당 문자열의 하나의 문자 토큰입니다. 그런 다음 \glen토큰 \\tlen계산 한 다음 나머지 토큰 을 계산합니다. 따라서 해당 제어 시퀀스의 길이 (를 포함하지 않음 \)를 출력합니다 .

다른 스 니펫의 문자는 처음에는 방금 제어 순서를 확장합니다. \t . 다중 문자 제어 순서는 문자로만 이루어져야하지만 모두 카테고리 코드 11이 할당 되었기 때문에 문자로 계산됩니다 (ASCII 코드를 사용하여 문자 자체가 첫 번째 스 니펫에 표시되지 않음).

나는 한 문자의 비용이 드는 일부 문자에 8 진 코드를 사용하기로 결정 '했지만 8과 9의 두 자리를 절약했기 때문에 하나의 발췌 문장을 얻었습니다. 내가 필요하지 않으면 아마도 몇 가지를 더 얻었을 것 \expandafter입니다.

산출

가능한 변경 : 출력이 출력으로 들어 가지 않고 대신 콘솔 출력과 \number\count1로 들어가 \message{}도록 랩핑 하십시오 . 추가 문자는 들지 않습니다..dvi.log

190

불행히도 TeX는 유니 코드가 아닌 ASCII로 작동하지만 (또는 지금?) 코드 127-255의 문자를 포함하는 129 개의 단일 문자 스 니펫을 포함하도록 솔루션을 확장 할 수 있습니다. 32 이전의 일부 문자조차도 가능합니다. 문자 32 (공백)가 작동하지 않았습니다. 그렇지 않으면 스 니펫에도 넣었습니다. 첫 번째 스 니펫에는 필요하지 않았습니다. 물론 이러한 추가 문자는 \catcode첫 번째 스 니펫에서 문자로 표시되어야합니다.


0

핍, 57 바이트, 점수 = 16

!u
2
RT9
#m
5
(EX3Y8)
7
y
A'<tab>
t
11
+o
-v
PI@`\...`@`..$`
"F"FB:4*4
Ok=k6

<tab>리터럴 탭 문자 (ASCII 9) 를 나타냅니다. 온라인으로 사용해보십시오!

각 스 니펫은 원하는 숫자를 출력하는 전체 프로그램입니다. 대부분은 Pip 프로그램의 마지막 표현식이 자동 인쇄된다는 원칙에 따라 작동합니다. 예를 들어 스 니펫 5에서는 이전 코드가 평가되지만 중요한 부분은 5입니다. 이에 대한 예외는 다음과 같습니다.

  • 스 니펫 3은 RT9(제곱근 9) 와 격리되어 잘 작동 하지만 스 니펫 2 이후에는 실제로 2RT9(9의 두 번째 루트) 로 구문 분석됩니다. 물론 물론 동일한 것입니다.
  • 스 니펫 6은 e ^ 3의 8 번째 문자 (0 색인)를 가져옵니다. 이는 6입니다. 그러나 숫자 8을 y변수에 넣습니다 . 그런 다음 스 니펫 8은 값을 출력합니다 y.
  • 스 니펫 12는 이전 스 니펫에서 11을 가져 와서 추가합니다 o(1로 사전 초기화 됨). Snippet 13은 그 결과를 빼고 뺍니다.v (사전 초기화 됨 -1).
  • Snippet 16 1은 줄 바꿈없이 출력 하고 ( Ok=k, 여기서 k=k기본 진리 값 1로 평가됨) 자동 인쇄 6합니다.

다른 흥미로운 것들 :

  • 스 니펫 14는 정규식 작업을 사용하여 추출 14 하여 pi 값에서 합니다.
  • 스 니펫 15는 문자열 "F"을 16 진수에서 변환합니다 .

0

Zsh , 점수> 50 000 ( 1112 046?), 16 + Σ (UTF-8 코드 포인트 길이) 바이트

exec echo   $((${#:-$(<$0)}-33))
#

Zsh는 기본적으로 멀티 바이트 인코딩을 처리합니다. 기본 스 니펫에는 18 개의 고유 한 문자, 총 34 개의 문자가 있습니다. 다른 모든 코드 포인트 (널 바이트 저장)를 여기에 추가 할 수 있습니다. 이 글을 작성할 때 스크립트 테스트는 코드 포인트 ~ 50000, 총 파일 크기 150K, 초당 약 30 스 니펫입니다. 여기서 전체 테스트 스크립트를 직접 실행하십시오. 나중에 일부 코드 포인트에서 시작하도록 조정할 수 있습니다.

처음 2000 개 코드를 온라인으로 사용해보십시오!

이 기술 을 사용 하면 더 많은 스 니펫이 가능합니다 .

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