프로그램에없는 모든 문자를 인쇄하십시오


219

귀하의 작업은 프로그램의 소스 코드에 나타나지 않는 인쇄 가능한 ASCII 공간 ( 0x20~ 0x7e) 의 문자를 순서대로 인쇄하는 프로그램 (인쇄 가능한 ASCII 문자 및 / 또는 탭 및 줄 바꿈 만 사용 )을 작성하는 것입니다. 여러 번 당신이 원하는).

어떤 언어로든 이것을 수행하는 가장 짧은 코드가 이깁니다.


19
그들은,하지만 그들은 범위 아니에요 0x200x7e은 "인쇄 가능한 ASCII 문자"로 정의된다. 기술적으로 탭과 줄 바꿈은 실제로 제어 문자입니다.
Joe Z.

3
개행 (또는 다른 인쇄 할 수없는 ASCII 문자)을 인쇄 할 수 있습니까?
flornquake

1
탭과 줄 바꿈은 인쇄 위치를 차지하는 방식으로 렌더링되지 않습니다. 그들은 위치를 움직입니다. ANSI C "isprint"기능을 참조하십시오.
Kaz

1
이 질문은 어떻게 되살아 났습니까? 다시 투표를 시작했습니다.
Joe Z.

3
@Timwi : 그렇게하려면 CJK 문자 공간의 모든 문자도 출력해야합니다 (코드에 나타나는 문자 제외). 관리하기가 너무 복잡해서 ASCII로 제한했습니다.
Joe Z.

답변:



274

폴리 글롯, 95

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

아무것도하지 않습니다.


19
아니요, 그러나 이것은 polygot입니다. 나는 그것을 파괴하고 싶지 않습니다.
Johannes Kuhn

95
나는 이것을 GNU Fortran 컴파일러에 공급했고 segfaulted.
marinus

12
C에서는 #undef X;whatever junk you want작동합니다.
ugoren

6
파이썬에서도 작동합니다 ( #Ruby 및 Perl과 같은 주석에 사용 하기 때문에 )
Doorknob

87
" 어떤 언어 로든 이 작업을 수행하는 가장 짧은 코드가 이깁니다." 모든 언어로 작동하는 코드가없는 경우이 항목은 가장 많은 언어로 작동하는 코드이기 때문에 이길 수 있습니다. ;-D
msb

142

PHP 5.2, 4

<?<<

NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.php어딘가에 파일로 저장하십시오 /home. short_open_tag에 있어야 On합니다 php.ini.

출력은 다음과 같습니다.

PHP Parse error:  syntax error, unexpected T_SL in /home/wherever/NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.php on line 1

42
하하, 규칙의 좋은 굽힘.
Johannes Kuhn

6
좋지만 불행히도 :출력에서 a 를 발견 할 수 있습니다 .
Howard


78
@TheGuywithTheHat에 감사하지만, 어제와는 반대로 약 1 년 전에 이에 대해 답변했습니다.
Ry-

9
@TheGuywithTheHat 허점이 재미 있고 새롭고 링크 된 메타 게시물로 이어질 때 답변 중 하나였습니다. 이제는 더 이상 없습니다.
Johannes Kuhn

48

자바 스크립트-88

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

"bcdfghijkmnpquvxyz"인쇄


13
우와 나는 toLowerCase 아이디어를 좋아한다. 훌륭하다!
Pierre Arlaud

2
약간의 수학으로 세 문자를 저장할 수 있습니다. "!#$%&*+,-13:<=>?@[\]^_`{|}~AERTOWS";alert('BCDFGHIJKMNPQUVXYZ'.toLowerCase()+95*72)왜냐하면 95*72= 6840및 낭비 된 문자를 문자열로 이동하면 따옴표를 낭비하지 않고 사용할 수 있습니다. 게다가 댓글에 문자를 숨기는 것은 기분이 좋지 않습니다.
Umbrella

28

공백, 61 57 자

가장 짧지는 않지만 아마도 가장 간단한 논리를 가지고 있습니다 (실제로 루프 일뿐입니다).

여기에 S는 공간이고 T는 탭이고 L은 줄 바꿈입니다.

SSSTSSSSSL     # push 0x20
LSSSL          # label S
SSSTL          # push 1
TSSS           # add
SLS            # duplicate top of stack
SLS            # duplicate again
TLSS           # output ASCII character
SSSTTTTTTSL    # push 0x7E
TSST           # subtract (result - 0x7E)
LTTSL          # branch to label S if top of stack is negative
LLL            # end

위의 수정 (분기 명령에 여분의 사본이 필요함) 및 더 적은 수의 스택에 대한 @res 덕분입니다.


1
이 기능은 그대로 작동하지 않지만 조건부 분기 (LTTSL) 바로 앞에 SLS (중복 스택)를 삽입하여 수정할 수 있습니다. 조건부 분기 명령이 스택의 상단을 제거하기 때문에 필요합니다. . 결과 64 자 프로그램은 보급 된대로 작동합니다. (프로그램이 확장자가 .ws 인 파일에 저장되면 golf.shinh.org/checker.html 에서 온라인으로 테스트 할 수 있습니다 )
res

1
또한 거의 동일한 프로그램을 사용하여 프로그램 길이를 57 로 줄일 수 있지만 세 개의 푸시 된 숫자 -94, 127, 126은 각각 32, 1, 126로 변경됩니다 SSSTSSSSSL LSSSL SSSTL TSSS SLS SLS TLSS SSSTTTTTTSL TSST LTTSL LLL.
res

나는 5 년 이상 된 것을 알고,하지만 당신은 골프 라벨 S를 변경하여 5 바이트 (빈) 레이블 (할 수 있습니다 LSSSL하게 LSSL하고 LTTSL이된다 LTTL)과 끝 (세에서 출구를 제거 LLL). 온라인으로 원시 52 바이트 또는 강조 표시 및 설명 으로 시도해보십시오 .
Kevin Cruijssen

22

C, 83 74 69 자

main(z) {for(;++z<96;"\33iE!vk?}GkRP8z"[z/7]&1<<z%7&&putchar(z+32));}

실제로 80 자 미만으로 줄이려고했지만 그럴 수 없었습니다. 나는 내가 (또는 다른 사람이) 이것을 게시하고 10 분 후에 79 자 해결책을 알아낼 것이라는 가정하에 내가 가진 것을 게시하기로 결정했습니다. 좋아요, 10 분이 아니었지만 원칙적으로 효과가있었습니다.

소스 코드에 여유 공간이 필요하지 않은 버전을 게시하고 싶었지만 그 중 하나는 이상한 해결책 궤도에 들어서서 소수의 솔루션 사이에서 튀어 나왔습니다. 그중 하나를 안정적인 솔루션으로 쏟아 부 으려고 몇 분 동안 나는 공간을 포기하고 추가했습니다.


21

골프 공, 26 24 자

"126,32>''+".~\-'.~\-"'-

범위 생성 스크립트를 가져 와서 복제하고 실행 한 다음 결과에서 빼고 결과 빼기 코드와 다른 따옴표 문자를 뺍니다.


2
젠장, 그건 영리하다.
marinus

1
''+빼기 전에 프로그램을 제거 하고 제거하십시오 . noop을 입력하십시오 .;(점을 덮는 더 좋은 방법을 찾지 못함). 문자열 대신 코드 블록을 사용하십시오-> {126,33>`-.;}.~16 자입니다
Howard

원하는 순서대로 사용 하지만 원하는 경우 여러 번 세미콜론을 제거 할 수도 있습니다.
Howard

@Howard 나는 당신의 아이디어를 이해하지 못하는 것이 두렵습니다. 별도의 답변으로 게시 할 수 있습니다.
John Dvorak

@PeterTaylor 공간을 인쇄했다고 생각 했습니까?
John Dvorak

20

피쉬-80

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

물고기 오류가 발생하면 "어딘가 비린내가 나옵니다 ..."를 인쇄합니다. z는 나쁜 명령이므로 즉시 오류가 발생합니다.


17

컨테스트에서 이기지 못한다는 것을 알고 있습니다. 난 그냥 차기 위해 일반적으로 사용되지 않는 언어로 시도하고 싶었습니다.

자바 - 209 195 152 140 자

class a{public static void main(String[]a){for(char c=0;;c++)System.out.print("publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:}".indexOf(c)<0?c:"");}}

줄 바꿈 및 탭 사용

class a{
    public static void main(String[]a) {
        for(char c=0;;c++)
            System.out.print("publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"");
    }
}

다음을 실행하면주의하십시오 : 프로그램이 종료되지 않습니다. 하하

설명

  1. for(char c=0;;c++): char는로 취급 될 수 있기 때문에 int가능한 모든 값을 통해 증가시키기 위해 여기에서 이점을 사용합니다 c. 프로그램을 종료해야한다고 지정되지 않았기 때문에 문자를 절약하기 위해 루프 (두 세미콜론 사이에있는 것)에서 종료 조건을 생략합니다. :)
  2. "publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:""슬프게도, 매우 우아한 접근 방식은 아니지만 작업이 완료됩니다. 소스 코드에있는 모든 문자를 String리터럴 로 수동으로 나열한 다음 로 해당 문자에서 현재 char c발생 하는지 확인하십시오 indexOf(). 경우 indexOf()호출이 반환 -1, 그것은 존재하지 않기 때문에 우리는 그것을 인쇄해야합니다. 나머지는 삼항 연산자를 사용하여 문자와 공간을 절약합니다.

조금 설명해 주시겠습니까?
joey rohan

1
@joeyrohan 물론 아래에 설명을 추가했습니다. :)
asteri

cool;) nice stuff :)
joey rohan

2
ENTIRE ascii 인쇄 가능 테이블을 주석에 넣고 아무것도 반환하지 않는 Java 프로그램을 만들 수 있습니다. 그것은 :-) 당신을 이길 것
피에르 Arlaud에게

9
터미널에서 실행하기 전에 모든 단일 유니 코드 문자를 인쇄 할 것이라고 말할 수 있습니다.
nyuszika7h

14

펄, 49 자

say grep/[^+-246\[-^aceghmprsy]/,map chr,041..126

이것은 흥미로운 도전입니다. 일종의 안티 퀸이며, 나는 등장하는 문자의 범위를 늘려 프로그램을 몇 번 단축 했습니다.


14

루비, 81 78 68 66 62 57

(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}

간단히 확인하십시오. 중복 문자가 수동으로 제거되었습니다.

4자를 저장 한 Josh와 5자를 저장하는 minitech에게 감사드립니다!


끝 줄 중 하나를 저장하기 위해 $> << x 뒤에 if를 넣을 수 없습니까?
Josh

@ 조쉬 지금 할게요
Doorknob

당신은 58로 가져갈 수 있습니다 :(?!..?~).map{|x|$><<x if/[()ifmap{}|x?!.~\/\\\[\]$><]/!~x}
Ry-

1
아, 그리고 변수 이름을 더 잘 선택하면 57 :(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}
Ry-

$><<((32..126).map(&:chr)-IO.read(__FILE__).chars).join다른 접근 방식을 사용하는 55 바이트.
twe4ked

14

베 펀지 (48)

<|::-1,+*88:<+3*87
6<@.**85
9>"()~&"/%$ |!#';=?}

출력 : {zyxwvutsrqponmlkjihgfedcba` _ ^] [ZYXWVUTSRQPONMLKJIHGFEDCBA240


이런 젠장! 잘 했어!
Cruncher

12

그리 심각하지는 않지만 나는 가야했습니다.

JSFuck (138152)

(컴파일 된 소스)

원본 출처 :

for(x=0x7e;x>0x19;x--){
    console.log(String.fromCharCode(x).replace(/[\[\]!\+\(\)]/ig, ''))
}

() + []를 제외한 모든 문자를 인쇄합니다 !


2
(x)<=> [x][+[]]이면 코드 크기는 증가하지만 알파벳은 더 작게 만듭니다.
FireFly

12

당신의 임무는 프로그램을 작성하는 것입니다 (인쇄 가능한 ASCII 문자 및 / 또는 탭과 줄 바꿈 만 사용)

아이쿠, 당신은 (? 그 delibarate가)는 APL 하드 만든
그래서하기로 결정 모든 규칙을 무시 !

APL (Dyalog), 3 10

⎕AV

원자 벡터 (인쇄 가능한 모든 ASCII 문자 포함)를 인쇄합니다


"without"부분에 대해 완전히 잊어 버린 것으로 밝혀졌습니다 ...
그러나 그것은 쉬운 해결책입니다.

⎕AV~'AV'''

~'AV'''~문자 A, V 및 작은 따옴표 (이중 작은 따옴표로 이스케이프 됨)를 제외 ( ) 함을 의미 합니다.

비 ASCII 인쇄에 관해서는 모든 규칙을 무시하고 있습니다.


" 프로그램 소스 코드에 나타나지 않는 인쇄 가능한 ASCII 공간 ( 0x20~ 0x7e) 의 문자를 정확하게 인쇄 하십시오."출력에 인쇄 가능한 ASCII 공간 이외의 문자가 포함되어 있지 않을 수 있다고 생각합니다 (키워드 인 "정확하게"). 프로그램에 'A'와 'V'가 포함되어 있으므로 인쇄해서는 안됩니다.
FireFly

1
최소한 ~제외 된 문자 집합에 추가하고 싶을 것 입니다. ;-) Btw, 비슷한 J 솔루션은 다음과 같습니다.a.-.'a.-'''
FireFly

2
모든 규칙을 무시해도되지만 수락 된 답변이 될 수 없습니다.
Joe Z.

11

GolfScript ( 18 16 자)

"),@`^^32>#.~".~

정확성 검사를 수행하고 오류가있는 문자 수를 출력하는 추가 행이있는 온라인 데모 .

(동일한 다양한 대안이 있습니다. ; @`^로 대체 가능 \\`; 또는 #로 대체 가능 `또는 로 대체 가능 ]. 백 슬래시는 문자열 리터럴에서와 같은 방식으로 블록에서 이스케이프 처리 할 필요가 없기 때문에 Howard의 트릭으로 올바른 조합을 사용하여 점수 15와 동일하게 사용할 수 있습니다. {),\`^32>].~}.~그러나 하워드는 그 트릭에 대한 크레딧을받을 자격이 있습니다).



2
운 좋게도 ascii는 }~-코드 블록에 대해 더 좋았습니다. 새로운 답변을보십시오. ;-)
Howard

11

브레인 포트, 173

+++++[->++++++<]>>>++[------<+>]<++++>>----[----<+>]>-[-------<+>]>-[---<+>]<------->>-[---<+>]<+++++++++>>--[-----<+>]<+++++>>+[---------<++>]+++++++++++++[<[.+<]>[>]<-]\=,

꽤 오랜 시간이 지난 후에 다시 시도 할 수 있습니다.


6
아무것도하지 않는 프로그램을 작성하고 나머지 od ascii를 소스에 추가하십시오. 최악의 경우 96 문자와 같습니다.
Jasen

10

J ( 52 40)

편집 : Duh, 잊어 버렸습니다 e.

'''(-@.e#[)~95{32}a'(-.@e.#[)~95{.32}.a.

구 버전:

(>@(*/@('(>@*/''&~:).#]32{95}a'&~:)&.>)#])95{.32}.a.

다른 변형 (길이는 같지만 출력은 적음) :

([#~*/"1@('([#~*/"1@''&:0)95{.32}a'&~:"0))95{.32}.a.

@ JanDvorak : 으악 오타
marinus

젠장! 나는 루비에서 당신을 이길만큼 충분히 낮아질 수 있기를 바랐다. 그리고 당신은 그것을 40으로
줄였다

새로운 것은 훨씬 더 quiney 보인다.
John Dvorak

1
@Doorknob : APL에는 24 자 뿐이지 만 ASCII 문자가 아닌 문자가 하나 있습니다.
marinus

예, APL과 같은 언어를 피하기 위해 ASCII 작업을 수행했습니다.
Joe Z.

7

파이썬 3- 68 61

x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"
exec(x)

... 개선을위한 @WolframH 덕분에.


1
나는 당신이 넣을 수 있다고 생각합니다 exec(x)새로운 라인과 저장 ;에를 x. 또한 Python 3에서는 x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"\nexec(x)61 문자를 사용할 수 있습니다 (여러 공백을 인쇄하여 허용됨).
WolframH

@WolframH의 창의력, 감사합니다!

7

PowerShell : 96

저장하고 스크립트로 실행해야합니다.

diff([char[]](gc $MyInvocation.InvocationName))([char[]](32..126))-Pa|?{$_.SideIndicator-eq'=>'}

diff에 대한 기본 제공 별칭입니다 Compare-Object.

gc에 대한 기본 제공 별칭입니다 Get-Content.

$MyInvocation.InvocationName 실행중인 스크립트의 전체 경로를 가져옵니다.

32..126는에 해당하는 10 진수 0x20..0x7e이므로 찾고있는 10 진수 ASCII 코드 배열을 만듭니다.

[char[]]다음 객체의 내용을 가져 와서 배열에 넣고,이를 분리하여 ASCII 문자로 변환합니다. 따라서 이제 두 개의 ASCII 문자 배열이 있습니다. 하나는이 스크립트에서 가져온 것이고 다른 하나는 챌린지 기준에 의해 정의 된 것입니다.

-PaCompare-Object"Passthru"형식으로 설정 되므로 입력간에 서로 다른 항목 만 콘솔에 출력됩니다. 입력 된 항목의 항목 표시기는 여전히 개체의 데이터에 저장되지만 표시되지는 않습니다.

|?{$_.SideIndicator-eq'=>'}pipes Compare-Object's output to으로 Where-Object, 두 번째 입력 전용 항목으로 필터링합니다.


Sane과 유익한.
Stéphane Gourichon

7

PHP-92

<? //A"$%&'()*+[,.]0123456789:=-@ABCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcdefghijklmopqrstuvwxyz{|}~#

산출:

아무것도

OP는 사용되지 않은 모든 문자를 인쇄하도록 요청합니다.


무엇에 대해 <?='A"$%&\'()*+[,.]/0123456789:=-@ABCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcdefghijklmopqrstuvwxyz{|}~#'?
jocap

모든 문자를 사용하는 제출물이 있다는 것을 알고있었습니다.
MilkyWay90

이것은 문자를 사용하지 않습니다!;>Xn
Jo King

6

자바 스크립트, 92

(function f(){for(i=32;126>i++;)!~(""+f).indexOf(c=String.fromCharCode(i))&&console.log(c)})()

이것이 공정한 해결책입니까? alert ( '! "# $ % ^ * + /-. / 0123456789 :; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _`bcdfghijkmnopqsuvwxyz {|} ~') 95 자로 시작하여 지옥처럼 바보입니다. : p
tristin

2
@tristin : P 그렇습니다. 자바 스크립트는 문자열에 대한 문자 코드와 관련하여 조금 장황합니다. 그리고 프로그램에없는 모든 문자를 출력하지는 않습니다. 텍스트 당신의 경고는 :)뿐만 아니라 당신의 프로그램에
C5H8NNaO4

1
하하, 죄송합니다. 오 잘
tristin 2009 년

6

자바-126 자

최소화 :

class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}

최소화되지 않은 :

class hjq {
    public static void main(String... w) { 
        for (char z = '"'|0; ++z != 'a';) {
            if ("'()+.0;=OS".indexOf(z) == ~0) {
                System.out.print(z);
            }
        }
    }
}

개별 토큰은 문자를 재사용하기 때문에 더 긴 형식의 이점을 얻을 수 있기 때문에 이것은 흥미로운 문제입니다. 예를 들어, 일반적 String[]으로 더 짧지 만 String...조건부 문자열에서 대괄호가 필요하지 않습니다.

트릭은 범위의 시작과 끝에서 문자를 사용하고 사용하여 루프 시작과 끝을 변경하여 출력에서 ​​제외 할 수 있다는 것을 알았습니다.

Java의 경우 제외 할 핵심 문자는 "입니다. 문자열에서 이를 제외 하려면 이스케이프가 필요하므로 \프로그램에 추가 되고 문자열로 이동해야합니다 \\. "조건부 문자열에서 제거 하여 4자를 제거합니다. 이것은 당신이 사용하도록하여 달성 할 수 !및에서 루프를 시작 #.

모든 소문자 만에, 범위의 끝 근처에 나타납니다 {, |, }그리고 ~그 이후에 오는. Java의 자세한 설명으로 인해 대부분의 소문자는 상용구에만 사용됩니다. 마찬가지로, {}상용구이 그들을 필요로하기 때문에, 자바 프로그램에 대한 사소한 있습니다.

|또는 조건이있는 경우 사용할 수 있지만 |비트 연산자로 사용하는 것보다 프로그램이 짧은 프로그램을 활용할 수있는 방법을 찾지 못했습니다 . 는 |0그냥 거기에 문자를 얻을 수있는 NOP의 유일한 부분이기 때문에 내가 조금 더러운 느낌.

~0yields -1는 이것이 우리가 확인해야하기 때문에 편리합니다 indexOf. 이것을 !=루프 조건부 사용과 결합 하면 <문자가 완전히 제거 되므로 조건부 문자열 내부로 들어갈 필요가 없습니다.


5

쉬 (47)

tr</dev/urandom -cd \[:print:]|tr -d "`cat $0`"

자기 참조 방식을 사용합니다. /dev/urandom결국 모든 옥텟을 적어도 한 번 출력 한다고 가정합니다 . 종료하지 않습니다.

man설치 되었다고 가정 하면 ascii(7)맨 페이지를 사용 하여 종료 프로그램 을 사용할 수 있습니다 ( 44 자, @fennec 덕분에).

man ascii|tr -cd \[:print:]|tr -d "`cat $0`"

더 짧은 이름을 가진 다른 파일을 사용할 수 있습니까? 본질적으로 가능한 모든 옥텟을 갖도록 보장됩니까? 심지어 종료 할 수 있습니까? 나는 / dev / memory 또는 무언가를 생각하고있다.

우리가 가정하는 경우 @fennec manzsh설치, man zshall기준에 맞는 것 같다. 변형으로 추가 할 수 있습니다.
FireFly

man ascii나는 당신에게 또 다른 편지를 구할 수 있다고 생각합니다.

어느 tr것을 사용하고 있습니까? GNU tr-" cat $0"를 범위 연산자로 취급 하여 출력을 차단합니다.
Toby Speight

BTW, ascii프로그램이 설치되어 있으면 대신 사용할 수 있습니다 man ascii.
Toby Speight

5

BitShift , 1038 바이트

BitShift는 만 지원 언어 01구문한다. 나는 다른 모든 문자를 인쇄하는 것이 쉬울 것이라고 생각했지만 실제로 루핑을 지원하지 않기 때문에 여전히 1038 바이트를 거쳤습니다.
그러나 나는 이것보다 더 작게 갈 수는 없다고 생각합니다.

101001100101011011010100110111010100100101011001101111010100100101011001000101011011010100101100110110101001001010110010001010110110101000001101010010010101100100010101101101010000010000011001010110110101000010000101011011010100110111010100100101011111100101011011010100110111010100100101011001101111010100100101011001000101011011010100000000011010100100101011001000101011011010100110010000101011011010100110111010100100101011001101001101010010010101100100010101101101010011001000010101101101010011011101010010010101111011111110010101101101010011011101010010010101100101100101011011010100010001010110110101001000010101101101010011011101010010010101110111110010101101101010011011101010010010101111111100101011011010100110111010100100101011111011110101001001010110010001010110110101001000100000101011011010100110111010100100101011111010011010100100101011001000101011011010100100000101011011010100110111010100100101011001101111010100100101011001000101011011010100010000010101101101010011011101010010010101101001101101010010010101101001101010

인쇄물

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

여기 사용해보십시오


4

확실히 가장 긴 해결책이지만 Lino로 코딩하는 것은 항상 재미 있습니다.

L.in.oleum -655 523 자

"libraries"/arch/cpu/base;/hmi/conout;/data/bytes;/data/string/t2s;/data/heap;/data/heap/connect/mgrab;"stockfile"a;"directors"displaystatus=engage;"injection"c=524;b<-bytes.bytesizeconvert:c;b<-heap.alloc:b;a<-heap.alloc:c;[filecommand]=readfile;[filename]=stockfile;[fileposition]=0;[fileblocksize]=c;[fileblockpointer]=b;arch.fileread;[string.psource]=b;[string.ptarget]=a;string.t2s;b<-heap.alloc:7fh;c=32;d=b;"f"[d_32]=c;+c;+d;?c<7fh>f;"w"d=[a];+a;?d=0>y;?d<32>w;?d>7eh>w;e=b;e+d;[e]=33;^w;"y"b+32;"v"conout.say:b;bye;

주석이 없으며 바이너리로 컴파일 된 소스를 읽습니다. 다른 이름으로 저장 a.txt하지 않으면 컴파일되지 않습니다!


4
아니, JSFuck은 더 길다.
Joe Z.

4

브레인 퍽, 133 123 114 110 바이트

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

이전 솔루션으로 조금 더 어설프게 (아래는 더 작다는 것을 알기 전에-이것이 약간의 최적화를하기 전에 있었지만). 이것은 4 세트의 ASCII 숫자를 저장하고 까다로운 루핑으로 인쇄 한 다음 누락 된 문자 (즉 잘못된 ASCII 숫자 사이에있는 문자)를 제공하여 작동합니다.

원본 제출

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

다음을 수행합니다.

  • 11, 13, 28, 33을 포함하는 4 개의 레지스터를 만듭니다.
  • 값이 31 인 5를 작성하여 인쇄를 시작하십시오.
  • ASCII 32-42 인쇄 (11)
  • 아스키 인쇄 44
  • ASCII 47-59 인쇄 (13)
  • ASCII 61로 인쇄
  • ASCII 63-90 인쇄 (28)
  • ASCII 인쇄 92
  • ASCII 94-126 인쇄 (33)

4

하스켈 (70)

import Data.List
main=putStrLn$[' '..'~']\\" \\\"$'.=DLS[]aimnoprstu~"

보링 프로그램에서 문자열의 중복 문자, 범용 세트에서 빼기 솔루션. 코드 골프 선수와는 거리가 멀지 만 놀랍게도 길이가 길기 쉽습니다.

(이제 filter/ 대신 목록 빼기 기능이 notWith있습니다.)


당신은 변경할 수 있습니다 import Data.Listimport List
자랑 haskeller

. @ proudhaskeller 응? runhaskell"모듈 '목록'을 찾을 수 없습니다."로 시도해도 작동하지 않는 것 같습니다 . 그래도 문자 수를 잘못 세는 것을 알았으므로 수정했습니다.
FireFly

1
글쎄, 그건 이상하다, ghc 또는 ghci로 시도해? 그것은 나를 위해 작동
자랑스런 Haskeller

@proudhaskeller 아니요, 작동하지 않습니다. 이것은 GHC 7.8.3입니다.
FireFly

3

J-21

(u:32+i.97)-.1!:1<":5

이 파일을 파일에 쓰십시오 5 현재 디렉토리에서 된 . 그런 다음 다음을 사용하여 스크립트를로드하십시오.0!:1<'5'

또는 파일 트릭이없는 25 :

(-.~".)'(":u:32+i.0-~95)'

소스 코드에가 포함되어 '있으며 출력에서 ​​제거되지 않습니다.
FireFly

3

클로저 (142, 106, 103)

(defn -main[](let[c"(fn[l](pr(reduce disj(set(map char(range 32 126)))l)));-\\\"o"]((load-string c)c)))

형식화 :

(defn -main []
  (let [c "(fn[l](pr(reduce disj(set(map char(range 32 126)))l)));-\\\"o"]
    ((load-string c) c)))

이것이 가능하다고 생각하면 약간의 조정이 필요할 수 있습니다. 산출:

#{@ ` ! A B b # C $ D % E & F ' G H I * J + K k , L M . N / O 0 P Q q R S 4 T 5 U V v 7 W w 8 X x 9 Y y : Z z { < | = } > ^ ? _}

평가 가능한 클로저 코드 인 문자열을 자체적으로 실행합니다. 문자열은 문자열 밖에서 사용되는 문자를 얻기 위해 끝에 주석이 있습니다 (주요 방법 등)


3

파이썬 2, 69

for x in range(38):print chr(x+59)#!"$%&'*,-./012467bdjklmqsuvwyz{|}~

나는 연속 문자의 가장 긴 (찾을 수있는) 시퀀스를 인쇄하고 코드 뒤에 주석으로 다른 문자를 추가 할 수 있습니다.


8
나는 의견이있는 것을지지하지 않을 것이다
John Dvorak

내 대답은이 작업을 해결할 수있는 최악의 방법을 보여 주어야합니다. (주석 허점을 사용하십시오).
Johannes Kuhn

9
좋아 ... 주석 있는 폴리 글로를 제외하고 .
존 드보락

@JohannesKuhn 그러나 가장 긴 코드이므로 컨테스트에서 이기지 못합니다. : P
Joe Z.

5
@JoeZ. 당신이 작동 언어의 숫자로 나눈다면 그것은 넓은 여백에 의해 승리
존 드보락
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.