Stack Exchange의 역 따옴표 코드 스 니펫


9

목표는 다음과 같은 임의의 텍스트를 입력하는 것입니다.

This is some text

그리고 다음과 같이 Stack Exchange에서 게시물 코드 (SE-flavored Markdown) 및 주석 (mini-Markdown)으로 형식화 된 텍스트를 출력하십시오.

`This is some text`
`This is some text`

그러나 까다로워집니다. 입력을 고려하십시오.

Perl has a variable called $`

출력은

`` Perl has a variable called $` ``
`Perl has a varaible called $\``

형식에 대한 전체 규칙은 다음과 같습니다.

  • 전체 게시물 (전체 SE 마크 다운)

    • 1 단계 : 문자열에 연속 된 많은 백틱이없는 최소 수를 계산하십시오. 이것을 호출합시다 n. (예를 들어, 문자열 potato, n1, 대 this is a backtick: `, n2이며 ` `` ``` ````` ``````, n제이다)

    • 2 단계 : 문자열을 n백틱으로 줄 바꿈 문자열이 백틱으로 시작하거나 끝나는 경우 공백으로 줄 바꿈해야합니다. (예를 들어, potato이된다 `potato`, this is a backtick: `해진다 `` this is a backtick: ` ``` `` ``` ````` ``````된다 ```` ` `` ``` ````` `````` ````.

  • 댓글 (미니 마크 다운)

    • 랩의 `모든 탈출 `로 '들 \`. (예를 들어, potato이된다 `potato`, this is a backtick: `해진다 this is a backtick: \`` `` ``` ````` ``````된다 \` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\`.

이것은 ; 바이트 수에서 가장 짧은 답이 이깁니다.


우주는 어때요? ``코드 포맷을 얻지 못한다 ...
Justin

@Quincunx 흠 ... 어쨌든 코드에서 공백을 어떻게 포맷해야합니까?
Doorknob

나도 몰라 이 게시물은 백틱 등을 포맷하는 방법을 배웠습니다.
저스틴

2
주석 양식도 작동하지 않습니다 \. 형식을 지정 \하려면해야합니다 ``\``. 또한,로 끝나는 것도 \같은 문제로 실행이 : asdf\`생산 asdf`
저스틴

답변:


4

APL (90)

(예, APL 문자셋은 바이트에 맞습니다. 여기에 IBM의 코드 페이지 907이 있습니다.)

{⎕ML←3⋄(,/m,m,⍨{⍵=m:'\`'⋄⍵}¨⍵),⊂(⌽g),⍵,g←(''↑⍨∨/t[1,⍴t]),m/⍨0⍳⍨z∊⍨⍳⌈/0,z←,⊃⍴¨⍵⊂⍨t←⍵=m←'`'}

이 함수는 문자열을 가져와 두 문자열의 배열을 반환하는 함수입니다. 여기서 첫 번째 문자열은 주석 표현이고 두 번째 문자열은 전체 게시물 표현입니다.

테스트 :

      backtickify←{⎕ML←3⋄(,/m,m,⍨{⍵=m:'\`'⋄⍵}¨⍵),⊂(⌽g),⍵,g←(''↑⍨∨/t[1,⍴t]),m/⍨0⍳⍨z∊⍨⍳⌈/0,z←,⊃⍴¨⍵⊂⍨t←⍵=m←'`'}
      ↑backtickify 'potato'
`potato`
`potato`

      ↑backtickify 'this is a backtick: `'
`this is a backtick: \``   
`` this is a backtick: ` ``

      ↑backtickify '` `` ``` ````` ``````'
`\` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\``
```` ` `` ``` ````` `````` ````  

      ⍝ testcase for not wrapping with spaces
      ↑backtickify 'no`spaces``at````the`edges'
`no\`spaces\`\`at\`\`\`\`the\`edges`
```no`spaces``at````the`edges``` 

참고 : 가독성을 위해 함수에 이름을 지정했습니다.이 함수를 사용하는 데 꼭 필요한 것은 아닙니다 (익명 함수 옆에 인수를 넣을 수 있음).


2

루비, 119

s=gets.chop
c=1
c+=1while s=~/([^`]|\A)#{?`*c}([^`]|\z)/
puts ?`+s.gsub('`','\\\\`')+'`
'+?`*c+(s=~/$`|`^/?" #{s} ":s)+?`*c

언 골프 드 :

def backtickify str, comment = false
  return "`#{str.gsub '`', '\\\\`'}`" if comment
  c = 1
  c += 1 while str =~ /([^`]|\A)#{?` * c}([^`]|\z)/
  str = ' ' + str + ' ' if str[0] == ?` || str[-1] == ?`
  return ?` * c + str + ?` * c
end
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.