연결된 program + output이 95 개의 인쇄 가능한 ASCII 문자의 순열 인 가장 짧은 프로그램


12

가능한 짧은 (바이트 수로 측정), 입력이없고, 주석이없고, 문자열 / 시퀀스를 출력하여 연결된 프로그램 + 출력의 길이가 정확히 95 자이며 인쇄 가능한 모든 ASCII 문자를 포함하는 프로그램을 작성하십시오. 정확히 한 번 , 즉 프로그램 + 출력은 ASCII 코드 32-126의 95 문자 순열입니다.

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

동점 인 경우, 승자는 Levenshtein 편집 거리 (즉, 단일 문자 삭제, 삽입 또는 수)에 의해 측정 된대로 (95 자) 연결된 프로그램 + 출력이 위의 문자열에 가장 가까운 항목입니다. ASCII 순서로 바꾸려면 대체해야합니다).


2
예를 들어 프로그램에 반복되는 문자가 포함되어 있으면 자동으로 실격됩니다. 거칠다.
breadbox


1
기존 echo $0자격이 박탈 되었는지 여부를 판단 할 수도 있습니다 .
피터 테일러

3
인쇄 가능한 ASCII 문자 범위를 벗어나는 문자가 허용됩니까? 또는 프로그램 + 출력에 모든 인쇄 가능한 문자가 정확히 한 번만 포함되어야하며 더 이상 아무것도 포함되어 있지 않아야 합니까?
primo September

1
@primo 나는 그들이 허용된다고 가정합니다. 나는 그것의 시간이 "변화 앤 평가"사용의 중복 (문자열 리터럴은 구하기 힘든 될 것 되더라도) 해당 솔루션 쓸 생각
존 드보락

답변:


12

GolfScript, 14 자

{`),32>46-^}.~

출력 :

 !"#$%&'(*+/015789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_abcdefghijklmnopqrstuvwxyz|

(적어도 내가 아는 한) 도전 과제 는 95 개의 인쇄 가능한 ASCII 문자를 출력하는 가장 짧은 프로그램을 작성하는 것이 아니라 프로그램출력 이 95 개의 인쇄 가능한 ASCII 문자의 순열 인 프로그램 을 작성하는 것이 었습니다 .
Frank Schmitt

미안, 내 실수 제목에서 "프로그램 + 출력"을 읽지 만 질문의 뒷부분에서 연결된 프로그램 + 출력을 읽습니다 .
Frank Schmitt

),- 와. 나는 그것을 좋아한다.
John Dvorak

1
@ JanDvorak codegolf.SE : 사람들이 친밀한 부모와 쉼표에 대해 흥분하는 유일한 장소. : P
Doorknob

golfscript에서 @Doorknob은 "올바른 uncons (rparen) 및 해당 크기의 배열 (쉼표) 만들기"를 의미합니다. 실제로 하나의 문자 (오른쪽 곱슬)로 단축 된 문자열과 해당 문자의 ASCII 위치 바로 아래 (|)로 끝나는 배열이 남습니다. 인쇄 할 수없는 문자, 기간 및 xor (여기서 대칭 세트 차이)를 소스 코드 (빼기 수행)로 자르면 제대로 끝났습니다. 그리고 예, 문자열 xor 배열은 문자열입니다.
John Dvorak

6

펄, 89 자

이것이 내가 지금까지 할 수 있었던 최선입니다.

q< !"#%&'()+/8:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\^_`abcdefghjklmosuvwxz|>;
print~-$=.73*2,y[]{}

펄 minutae에 정통되지 않은 경우,에 두 개의 인수 print문으로 렌더링 할 수 ~(-($=)) . (73 * 2)tr///.

이 프로그램은 6 개의 문자를 출력합니다.

591460

내가 Perl로 생각할 수있는 불행하게도 매일 반복 구조 ( for, while, until, map, grep)와 공유 적어도 하나 개의 문자 print. 줄 바꿈이 출력에 표시되면 Perl 5.010을 사용하여 87 자 솔루션을 알아낼 수 있습니다.

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

내가 더 큰 숫자 :-) 인쇄 할 수 있는지 보자
존 드보락

어 ... 두 번째 줄을 번역 해 줄 수 있습니까?
John Dvorak

1
@JanDvorak $=는 현재 출력 장치의 수평선 수입니다. 기본적으로 60. ~-$=은 2의 보수 음수 60의 비트 단위 반전입니다 59. 73*2(146)입니다 .그리고 ,당신은 그들에게 무엇을 기대 않습니다. y[]{}또 다른 방법 tr///은 음역 연산자입니다. 그것은 필요 $_당신이 그것을 대체하는 모든 문자를 제공하지 않았기 때문에, 아무것도하지 않습니다. 교체 된 문자 수를 반환합니다 0. 따라서 ~-$= . 73*2 , y[]{}= 59 . 146 , 0= '591460`입니다.
Dan

6

PHP 67 바이트

<?=U4eB1gkFdA6J9snZD2IE8y5PhwQV^xHGmqYMfNjKpbR3vcLalCWi0_TtrOSXouz;

산출:

-|"/@>& *+}:[!],'~(){.\`7#%$

28 바이트 대신 30 문자를 출력하는 65 바이트 솔루션이 있어야하는 것처럼 보이지만 줄을 찾지 못했습니다. 6 개의 미사용 문자 OSXouz가 대신 문자열 리터럴 중 하나에 고정되었습니다.

편집 : 추가로 반영하면이 방식으로 28자를 초과하여 생성 할 수 없습니다. UPPER ^ lower는 항상 32에서 63 사이의 문자가되므로 10 자리 모두에 필요합니다 @[\]_`{|}~. 나머지 22 개 중 4 개는 스크립트 자체에서 사용되며 18 개만 글자만으로 얻을 수 있습니다. 그러나 순위 결정을 크게 개선 할 수 있습니다.


아, 물론입니다. 어떻게 잊어 버렸습니까?
John Dvorak

3

루비, 91 자

%{ !"#$&\',-/450:<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcefghijklmnqvwxyz|~};puts(?@‌​.ord*98+1)

출력 6273.

%{...} Jan Dvorak에서 도난당한 트릭


코멘트를하지 않고. 명확하게 언급했듯이.
Johannes Kuhn

@JohannesKuhn 아, 그것을 알아 차리지 못했습니다. 편집했습니다.
Doorknob

%{ !"#$&\',-/450:<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcefghijklmnqvwxyz|~};puts(?@.ord*98+1)세미콜론을 옮겨서 인쇄 가능한 구분 기호 (줄 바꿈 대신)로 사용하고 중괄호 내부에서 'ord'문자를 제거하여 (91 자)로 원하는 것으로 생각합니다.
res

@res Yep,이 모든 글자들을 관리하는 것은 어렵다 : P
Doorknob

이제 세 번 포함되어 있습니다.
Howard

3

펄, 61 자

print$:x8^CJIBQTOWAEULHVGFNMKRPZY,q<#"/;*g~?|={.>&+u15m97ws26

산출:

c@db[yo]le_ah\jfD`kX}zS-! %)('v304

$:기본값은 " \n-"입니다. x8그것을 8 번 반복한다; 24 자 결과는 23 자 베어 스트링으로 비트 단위로 바뀝니다 (마지막 -은 그대로 남습니다). 두 번째 부분은 12- 문자 q- 문자열 및 10- 문자 베어 스트링입니다 (마지막 2 문자는 버림).


1
귀하의 프로그램 길이는 61 자입니다.
res

감사. EOF로 인해 텍스트 편집기에서 62자를보고했습니다.
Grimmy

1

루비, 95 자, 편집 6 개

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

네. 그게 다야. 인쇄되지 않는 자유 부동 문자열 리터럴입니다. 루비는 퍼센트 유형 구분 기호 형식으로 문자열 리터럴 (Perl에서 빌려 왔습니다)을 지원합니다. 구분자는 영숫자가 아닌 문자이며 여는 구분 문자가 여는 괄호 (임의의 경우 [({<)이면 닫는 구분 기호가 해당됩니다 닫는 괄호 (중괄호는 허용됨).

나는 이것이 기본 제출에 가깝다는 것을 알고 있지만 누군가가 실제로 무언가를 인쇄하지 않거나 다른 시작 및 닫는 구분 기호 가있는 2 문자 자유형 문자열 리터럴이있는 언어가 없다면 이것이 가장 좋습니다.


0

TCL 96, 편집 거리 12

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

공간 중 하나는 탭을해야, 난 두려워
존 드보락

탭 또는 공간을 인쇄 할 수 있습니까?
Johannes Kuhn

탭은 인쇄 할 수 없지만 (ASCII 9) 공간은 인쇄 할 수 있습니다 (ASCII 32).
John Dvorak

1
[단지 OP가 답변 한 후에 만 ​​OP가이를 명확히하는 것을 보았습니다.]
flornquake

1
join {!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghklmpqrstuvwxyz|~} 95자를 사용하여 작동 하는 것 같습니다 ? (참가해 주셔서 감사합니다. 카멜레온에 대해 죄송합니다. 불행히도 급히 편집했으며 다른 방식으로 수행해야합니다.)
res
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.