구멍을 뚫지 않은 채 구멍 전체를 쓰십시오


55

10 진수 코드 33에서 126까지 의 ASCII 문자 는 다음과 같습니다.

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

대부분의 글꼴에서 이러한 문자 중 25 개 문자에 "구멍"이 있습니다. ( 0보다 큰 속은 말할 수 있습니다)

#$%&04689@ABDOPQRabdegopq

다른 68 개의 "비 홀드"문자는 다음과 같습니다.

!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~

당신의 임무는 홀로 된 각 문자를 순서대로 정확히 한 번만 출력하는 홀드되지 않은 문자 만 사용하여 가능한 가장 짧은 프로그램을 작성하는 것입니다.

공간, 탭 및 줄 바꿈 (줄 바꿈 및 / 또는 캐리지 리턴)은 빈 공간이므로 프로그램이나 출력에 나타날 수 있습니다. 그들은 여전히 ​​문자 수에 포함됩니다. 다른 ASCII 문자는 사용할 수 없습니다 (비 ASCII 문자는 아님).

노트

  • 홀딩되지 않은 모든 문자를 사용하거나 각 문자 중 하나만 사용할 필요는 없습니다.
  • 출력에는 홀드되지 않은 문자가 포함되지 않을 수 있습니다.
  • 공백 언어를 사용할 수있다.
  • 출력은 stdout으로 이동하거나 파일로 이동할 수 있습니다. 입력이 없어야합니다.

보너스 : 재미를 위해 구멍이없는 문자를 사용하여 홀드되지 않은 모든 문자를 인쇄하십시오. 기존 언어로 할 수 있다는 것에 회의적입니다.


9
제목에 +1 우리는 이런 것들을 좋아 합니다 .
Jacob

1
Perl 솔루션은 어디에 있습니까?!
Pierre Arlaud

4
하스켈이나 C에는 해결책이 없습니다. 원하는 프로그램이라면 철자를 써야합니다 main.
Rhymoid

2
공백을 사용하여 보너스를 수행 할 수 있습니다.
여호수아

1
내가 잊어 ~버렸다는 것을 아무도 눈치 채지 못했다 ??
Calvin 's Hobbies

답변:


18

Pyth , 43 35 자

tTFk"*+,-7;=?GHIKVWXYhiklnvwx"C-Ck7

여기에서 시도 하십시오 .

9가 시작 부분에 있고 개행 문자가 분리 된 것을 제외하고 문자를 순서대로 인쇄합니다.

문자열은 9가 @가된다는 점을 제외하고 필요한 문자보다 큰 문자 7을 모두 포함하므로 특수한 경우입니다. @Howard 덕분에 알고리즘.

설명:

tT                print(10-1)                T=10, t(x)=x-1 if x is an int.
Fk"<string>"      for k in "<string>":
C-Ck7             print(chr(ord(k)-7))       Note that C is overloaded as ord and chr.

24

GolfScript, 37 36 자

[":=<?)-/! YX[]VIHKx{}|~vih"{25^}/]+

여기 에서 코드를 사용해보십시오 .

문자열에는 25로 xor'ed 금지 된 문자가 포함되어 있습니다. 다행히도 모든 문자는 유효한 문자로 매핑됩니다.


22

머리 씨발 119

--[------->++<]>-.+.+.+.++++++++++.++++.++.++.+.+++++++.+.+.++.+++++++++++.+.+.+.[------>+<]>--.+.++.+.++.++++++++.+.+.

어, --처음에 ... 처음 등록 할 때 254로 돌아가고 있습니까?
WallyWest

1
Yup :) 루프를 36으로 짧게 만듭니다 (35를 얻기 위해)
Teun Pronk

글쎄, 그것은 확실히 내 275를 능가합니다 ... 잘 했어요 ...
WallyWest

@ Calvin 's Hobbies 나는 입력이 허용되지 않는다고 확신합니다. 죄송합니다. 그러나 OP는 명확히하고 싶을 수도 있습니다.
isaacg

@isaacg 나는 그것이 나의 주요 코드가 입력을받지 않는 이유와 마지막 예제가 심각하지 않다는 것을 안다. :)
Teun Pronk

20

보너스-dc, 179 자

오, 좋아, 또 다른 제한된 캐릭터 세트 도전 P이 허용됩니다.

6A44469PD684P44D4898PDB99P4008D0BP486B48BPA60BPD096P4A68666P460A0D4P690490AP8084088P6B6AB66P6BBB608P80D4BAAPA046PBAD4P60A6668P480DD96P4A040BBP848BP40DD8D0P46840B6P696B48BP48D64BAP

dc설명이 필요하기에 충분히 모호하기 때문에 (여기서 이상한 것을 고려하면 이상합니다!) 개요는 다음과 같습니다.

주로 임의 정밀도 연산을 사용하는 RPN 계산기입니다. 그러나이 문제를 해결하기 위해 P명령 을 사용하고 있습니다.이 명령은 숫자를 기본 256의 일련의 문자로 해석하여 인쇄합니다. 예 : 65 P인쇄합니다 A(ASCII 코드 65). 16706 P인쇄합니다 AB(16706 = 65 * 256 + 66).

그 외에도 다른 흥미로운 특징은 16 진수에 0-9A-F포함되지 않은 경우에도 모든 16 진수를 인식한다는 것 입니다. 진수 입력은 기본이므로 입력 토큰 999수단 9 hundreds + 9 tens + 9ABC의미 10 hundreds + 11 tens + 12하는 것이 동등하게 1122.

ABD소수 자릿수를 부분적으로 사용하는 기능은 부분적으로 사용할 수 없게하고 12357순서 및 그룹화를 선택하면 나머지가 수행됩니다. (나는 몇 가지 숫자를해야 할 경우 x, y, z그들이 허용 숫자로 표현할 수없는, 그때 나타내는 시도 x*256*256+y*256+z대신에.)

더 큰 그룹을 사용하면 프로그램이 약간 짧아 질 수 있습니다. 나는 숫자 당 3 바이트를 넘지 않았다.


1
@DigitalTrauma는 문제의 말미에 보너스 였습니다.

하아! 나는 그것을 놓쳤다! 우수한! +1
디지털 외상

이것을 설명 할 수 있습니까? 그리고 우리가 이것을 실행할 수있는 곳이 있습니까?
Calvin 's Hobbies

4
당신이 그것을 실행할 수있는 장소? dc는 읽기 어려운 프로그램을 만들기 위해 설계된 어리석은 언어가 아니며, 심각한 계산기입니다. 모든 유닉스 머신 (또는 cygwin)에서 실행하십시오. en.wikipedia.org/wiki/Dc_(computer_program)

@ Calvin'sHobbies Linux 또는 Unix 머신 (OSX 포함)에 접근 할 수있는 경우 간단하게 텍스트 파일 (예 : bonus.dc)로 저장 한 다음를 실행하십시오 dc bonus.dc. dc는 가장 오래된 언어 중 하나이며 * nix에서 문자 그대로 수십 년 동안 영구적으로 사용되었습니다. 그러나 잘 알려지지 않은 RPN 구문 때문에 잘 알려져 있지 않습니다. ;-)
Digital Trauma

12

Bash + coreutils, 56 바이트

tr \(-y \!-r<<<'*+,-7;=?GHIKVWXYhiklnvwx'
tr C-F 7-:<<<E

운 좋게도 홀드 문자의 ASCII 값에 7을 추가하면 홀드되지 않은 모든 문자가 생성됩니다 ( "9"제외). 그래서 우리는이 변환을 역순으로 수행 한 다음 유사한 변환 ( "E"에서 12를 빼면) "9"를 얻습니다.

산출:

#$%&0468@ABDOPQRabdegopq
9

7
나는 첫 줄이 여러 문자에서 7을 빼는 방법을 좋아 -7하며 문장 부호 문자 사이에 눈에 띄게 표시되며 두 가지 사실은 서로 관련이 없습니다.

@ WumpusQ.Wumbley 나는 심지어 그것을 발견하지 못했습니다 :)
디지털 외상

6

펄-49 바이트

symlink".",':=<?)-/! YX[]VIHKx{}|~vih'^chr(25)x25

이것은 Howard의 솔루션의 Perl 버전과 거의 같습니다. 문자열을 25로 XOR하기. 출력은 이름이 파일입니다 #$%&04689@ABDOPQRabdegopq. 내가 사용하는 아이디어를 가지고 symlink다른 모든 것이 금지되어 있기 때문에 출력 형식으로 파일 이름을.

여기에 내가 만든 또 다른 Perl 솔루션이 있습니다. 아마 많이 향상 될 수 있고 꽤 길기 때문에 지금은 읽을 수있는 형식으로 남겨두고 있습니다.

until(y/1/1/>32){s//1/}
until(y/1/1/>125+1){
    if(chr(y/1/1/)!~/[!"'()*+,-.\/12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\\\]^_`cfhijklmnrstuvwxyz{|}~]/) {
        symlink".",chr y/1/1/;
    }
    s/^/1/
}

이 파일은 많은 파일을 출력하며 각 파일의 이름은 문자 중 하나입니다. 금지 된 문자를 사용하지 않고 문자열을 추가하는 방법을 알 수 없었습니다.

for, while, map, say, print, eval, s///e, 및 변수 명 (변수 시작 사용할 수없는 @또는 $펄)이 어렵게한다.

정보를 출력하는 다른 모든 방법이 금지 된 문자 중 하나를 사용하기 때문에 파일 형식이 출력 형식으로 사용되기를 바랍니다.


창의성에 +1을 드리겠습니다! 매우 영리한 코드 사용!
WallyWest

나는 이것이 꽤 오래되었다는 것을 알고 있지만, 출력을 화면에 인쇄하고 -p플래그를 사용하여 몇 바이트를 저장할 수 있습니다*_=\( ... ): 온라인으로보십시오!
Dom Hastings

@DomHastings 쿨! 나는 구멍이 -p있기 때문에 깃발이 금지 될 것이라고 생각합니다 p.
hmatt1

5

MATLAB, 36 바이트

SO CLOSE .... 현재 승자 (isaacg)보다 1 바이트 만 더! 추가 검사를 통해 이미 내가 한 일을 이미 수행했습니다. 휠을 재발 명하는 데 아무런 해가 없습니다 ...

나는 이것이 오래된 도전이라는 것을 알고 있지만, 내가 관심을 얻은 후에 만 깨달았 습니다.

['*+,-7;=?GHIKVWXYhiklnvwx'-7,57,'']

MATLAB이 별도의 ''... 제안 없이 문자열을 원한다는 것을 이해할 수 있다면 누구입니까?


4

Brainfuck 303 275

++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>+++.--->----.+.+.++>.>----.++.++.+.->.+.+.-->----.++++>-.+.+.+.-->>+.+.-->----.+.++.+>-.+.+.

최고의 빈약 한 비 언어 인 Brainfuck (공백 제외);)


1
취소하지 않고 오래된 조각을 삭제하십시오.
isaacg

2
코드 스 니펫에 따옴표 (실명을 알지 못함)를 사용했습니다. 코드를보다 쉽게 ​​선택하고 Ctrl+ K:를 누르십시오.
Teun Pronk

@isaacg 완료. TeunPronk 완료!
WallyWest

6
또는 한 줄 또는 두 줄이면 스페이스 바를 4 번 누르십시오. @TeunPronk 이것은? `그것은 백틱입니다. (또한 " 견적 물건 "이 나에게 새로운 것이지만, 중음 악센트라고도 함 )
Doorknob

1
@Doorknob 그럼 우리가 오늘 배운 것은 어쨌든 틀렸지 만 : P
Teun Pronk

4

JS-196- 사용해보기

h=(c=!1+[])[1];i=c[2*2];j=(f=[]+{})[1];this[i+'v'+h+'l'](h+'l'+i+'rt('+h+'t'+j+f[2]+'("Iy\x51lJj\\x'+2*2+'1\\x3'+~-1+'Nj\\x'+2*3+'75\x51EFC\x52E\\x3'+3*3+'\x51UVJhYm\x52lZ2\\x3'+3*3+'wc\x51=="))')

1
어이, 이건 미친 짓이야 Js가 가장 끔찍한 언어 중 하나 인 것 같습니다.)
flawr

그렇습니다, 그러나 이것은 나의 입장과 비교되는 단순한 얼룩입니다… 죄송합니다 @bebe 그러나 나는 이번에 당신을 out-JS'd…
WallyWest

1
@WallyWest 나는 전쟁을 선포합니다.
bebe

1
217 : h=1-1;j=3+3;k='\\x';m=!i+k;c=m[1];f=m[i=2+2];l=k+3;n=k+j;r=k+i;this[f+'v'+c+'l'](c+'l'+f+'rt("\\x23\\x2'+i+k+25+k+2+j+l+h+l+i+l+j+l+2*i+l+3*3+r+h+r+1+r+2+r+i+r+'f\\x5'+h+k+51+k+52+c+n+2+n+i+f+n+7+n+'f\\x7'+h+k+'71")')-인라인 l, 단축 m, i처음 사용시 선언 , 반복되는 패턴에 대한 몇 가지 추가 변수를 만들었습니다 (출력 된 문자의 순서를 조정하여이를 향상시킬 수는 있지만 인내심을 초월합니다 : P).
Alconja

2

GolfScript, 89 자

71 22+,{33+}/]''+'!"\'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}'-

모든 ASCII 문자의 배열을 작성하고 "홀드되지 않은"문자를 뺍니다.

71 22+,  # Builds array of 0..93
{33+}/]  # Converts to 33..126
''+      # Convert ASCII codes to string
'stuff'- # Subtracts "stuff" (the non-holed characters) from the string

2

Befunge 98-69 바이트

"()+ijWI=*">:5j2 ,-5_"157:h">:5j2 ,-1_"=>?LMN^_lmn">:5j2 ,+3_"?"1+s <

3 부분으로 이루어집니다. 홀드되지 않은 문자 값이 홀드 문자와 5만큼 다른 곳 Befunge의 프로그램 종료 명령은 "@"(문자 값 64)이므로 마지막에 "?"를로드합니다. (char 값 63) 1을 더한 다음 명령어 's'를 사용하여 코드에 넣으십시오.

세 가지를 통합하여 더 골프를 칠 수도 있습니다.

>:5j2 ,(differ value)_

섹션,하지만 아마별로하지 않습니다.


2

자바 스크립트 240 228

최초 제출 :

z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;1[_="c\157nstruct\157r"][_](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()

자, 이것은 훌륭한 시작입니다. 여기에 고장이 있습니다 ...

z=(!1+"")[1];        // assigns "a" to z, !1+"" === "false"
y=(!!1+"")[3];       // assigns "e" to y, !!1 === "true"
x={}+"";             // assigns "[object Object]" to x
w=x[1];v=x[2]        // assigns "o" to w, and "b" to v
u=z+"t"+w+v;         // creates the mystical "atob" command, yes, I'm gonna use it!
1[_="c\157nstruct\157r"][_] // sets up the primitive to a number object... this acts similar to the "window" primitive object so that I can play off functions...
z+'l'+y+'rt(         // starts creating an alert call
'+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()
// Above line abuses atob command with a couple of nested instances of the command, also using hex and octal equivalents of characters

그리고 나는 생각했다. "더 간단한 방법이 있어야한다 ..."그리고 ...

수정 된 제출 : z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;this[y+"v"+z+"l"](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')

내가 사용할 수있는보고 eval (함께 @bebe에서 영감을 그것을 조립할으로하며를 사용하는 것보다 훨씬 빨리이다 constructor(A)의 constructor(A)의 number...) 내가 228에 드릴 다운 ... 나는이 특정 골프 챌린지 우승을하지 않을 수 있습니다 알고 , 그러나 이것은 JavaScript를 얼마나 많이 남용하고 원하는 결과를 얻을 수 있는지 보여주는 방법입니다.


2

주 – 불면증 , 50

FFy~~jF~y<={*n<<ztf>={.f=(tHL~k<yf={*n>Lj(FunLn<j~

출력합니다 :

abdegopq04689@ABDOPQR#$%&

보너스-불면증, 268

ogeeoddp@poe@ggep@oe@opge@gee@%d@p@gqeo@p@ge@e9de49ed9e4dppe@%e@geee@ge@p%ee@%e@dp@%ep@%ee@%d@%eeee@%e@%ee@%e@geee@%e@gee@ggopop@peo@ggep@p@ge@ggeep@ge@gee@%e@geee@ge@gee@ge@ppoep@%ee@%edep@gepe@ge@%ee@%e@geee@ge@%ee@%%eeoe@ge@pep@%gep@p@%e@%%eep@%e@gee@e%e@oe@%gep@p@

출력합니다 :

!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~

출력이 재정렬되면 프로그램 길이를 줄일 수 있어야한다고 생각하지만 검색 프로그램을 수정해야합니다.

제한된 수의 문자로 작동 할 수있는 다른 언어를 보여주기 위해. 그건 그렇고, 소스에 3 개의 고유 문자 만있는 출력을 거의 쓸 수 있습니다.

현재이 언어는 기존의 모든 답변 중에서 주요 과제와 보너스를 모두 수행 할 수있는 유일한 언어입니다.

불면증 통역사 .


1

Befunge 98-46 바이트

isaacg 's Pyth 항목의 펀드 화 버전 :

"xwvnlkihYXWVKIHG?=;7-,+*">:5j2 ,-7_"?"1+:,s <

1

Japt , 33 바이트

7+2+"*+,-7;=?GHIKVWXYhiklnvwx"c-7

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

isaacg의 Pyth 제출 과 동일한 알고리즘은 Japt에서 더 짧습니다.

작동 원리

7+2+"*+,-7;=?GHIKVWXYhiklnvwx"c-7

7+2           Obviously the number 9
    "..."c-7  Apply -7 on each char's charcode of this string
   +          String concatenation

예, JS 는 가장 모욕적 인 언어 중 하나이며 더 짧습니다 (그리고 필요하지 alert않거나 console.log여기에 없습니다 ).

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