문자를 공유하지 않고 문자열 인쇄


15

편집 : 공백을 재사용 할 수 있습니다.

당신의 임무는 동일한 언어로 n 개의 프로그램 (또는 매개 변수 또는 함수 이름을 사용하지 않고 함수 또는 함수 본문)을 작성하는 것입니다. 유전율 번째 프로그램이 출력해야 (기수) 번호 K 표준 영어 (선택적 후행 개행) 소문자있다. 따라서 첫 번째 프로그램은 출력 one하고 두 번째 프로그램은 출력 해야합니다 two. 두 부분으로 구성된 숫자의 경우 하이픈과 같이 하이픈으로 구분해야합니다 twenty-one.

그러나 제출 한 두 프로그램은 유용한 작업을 수행하는 공백이 아닌 문자 나 공백 문자를 공유 할 수 없습니다. 첫 번째 프로그램은 그냥 예를 들어 "one", 다음의 어느 " o n와는 e다른 프로그램에서 다시 사용할 수 없습니다.

공백 문자 (줄 바꿈, 줄 바꿈 및 탭)는 둘 이상의 프로그램에서 구분 기호 또는 들여 쓰기로만 사용되며 자체적으로 아무 것도 수행하지 않는 경우 둘 이상의 프로그램에서 사용할 수 있습니다. 따라서 공백 언어로 재사용 할 수 없으며 둘 이상의 프로그램에서 문자열로 사용할 수 없습니다.

인쇄 가능한 ASCII 문자, 탭 및 줄 바꿈 (CR 및 LF 포함) 만 사용할 수 있습니다. 모든 프로그램은 1 자 이상이어야합니다.

당신의 점수는 1 / 프로그램 크기의 합입니다 ^^ 1.5. 가장 높은 점수가 이깁니다. 이 스택 스 니펫 ( 또는 CJam 코드 )을 사용하여 점수를 계산할 수 있습니다.

function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;}
<textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div>


하나의 더 나은 득점 규칙은 1 / (프로그램 크기 + c) ^ 1.5의 합일 수 있으며, 여기서 c는 상수입니다. 하지만 변경하기에는 너무 늦었다 고 생각합니다.
jimmy23013

더 높은 기수를 얻기 위해 승수를 추가 할 수 있습니까? 이것이 목표 인 것 같습니다. 나는 다른 모든 것보다 열두 살이되었지만 여전히지고 있습니다.
mbomb007

@ mbomb007 Headsecks을 (를) 일부러 낮은 점수로 설정 한 것에 대해 죄송합니다. 그러나 Headsecks가 다른 사람들과 비슷한 점수를 받았다면 Glypho가 너무 많이 이길 것입니다 (Lengage는 말할 것도 없습니다).
jimmy23013

공백으로이 작업을 수행하려고합니다. (
YoYoYonnY

1
@ mbomb007 비슷한 질문을 다시한다면 점수의 프로그램 크기에 작은 상수를 추가 할 것입니다. 그러나이 질문에서 변경하기에는 너무 임의적입니다.
jimmy23013

답변:


6

gs2 , 0.38669200758867045

이 프로그램을 제외한 모든에서 공백 제거 , 그것은 만의 (기침) 가독성. 16 은 (스택을 오버플로하여) 충돌하는 gs2 프로그램으로, 편리 하게 quines 합니다.

하나 (3 바이트)

one

2 개 (1384 바이트)

A?"A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000A?"A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"00000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000A?"A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000

3 개 (92 바이트)

0a 21 2c 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 2f 20 0a 21 28 3c 0a 21 2c 21 20 21 20
21 20 21 20 2f 20 0a 21 28 3c 45 21 20 21 20 21
2f 20 0a 21 28 3c 0a 21 2c 21 20 2f 20 0a 21 28
3c 0a 21 2c 21 20 2f 20 0a 21 28 3c

중요한 공백이 많으므로 여기에는 16 진 덤프가 있습니다. 시작시 한 줄 피드 문자가 있습니다.


!,! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / 
!(<
!,! ! ! ! / 
!(<E! ! !/ 
!(<
!,! / 
!(<
!,! / 
!(<

4 개 (276 바이트)

f$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f
$f$31f$f$31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31Mf$f$f$31f$f$31f
$f$31f$f$31f$f$31f$f$31f$f$31f$f$31M

5 개 (178 바이트)

hd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&
&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&K

6 개 (3 바이트)

six

그 요구 사항을 보지 못했습니다. 중간 솔루션을 살펴보고 수정하겠습니다.
Lynn

, (탭), (LF) 및 (CR)을 20통해 사용할 수 있습니까? 7E090A0D
Lynn

예. CR을 명시 적으로 허용하도록 수정되었습니다.
jimmy23013

1다섯 오타했다; 나는 그것을 제거했다. 이제 3 개를 고칠 게요 .
Lynn

2
프로그램 16 은 본질적으로 소스 코드를 STDOUT에 덤프하고 STDERR에 오류를 표시하는 구문 오류입니다. 합의 는 이것이 괜찮다는 것 같습니다 (그래서 kudos) 당신은 당신의 대답에 언급해야합니다.
데니스

13

CJam, 0.24075

프로그램들

BA1]100cf|
"two"
{hree}`W<7a.-
N)92+_9+_6+_2~+
S(84^I^U$F^X$G^Y$(
's'i'x

그의 제안은 사용하기위한 @ user23013 덕분에 '대한 여섯 .

출력, 길이, 점수, 사용 된 문자

one    10  0.03162          01       AB         ]    c f         |  
two     5  0.08944  "                                     o  tw     
three  13  0.02133        -.     7  <        W     `a e h  r    { } 
four   15  0.01721      )+    2 6  9      N       _                ~
five   18  0.01309   $ (       4  8    FGI SU XY ^                  
six     6  0.06804    '                                  i  s  x

CJam 인터프리터 에서 직접 결과를 확인하십시오 .


6

잠 잘 수 없음 , 0.100688383057110116

일을 시작하기 만하면됩니다. 이것이 이길 가능성은 거의 없습니다. 현재 점수 체계에서 인쇄 할 수있는 모든 언어one 에서 5 자 이하로 는 압도적입니다.

1 개 (8 바이트, 0.04419417382415922)

uuyp>~p~

2 개 (9 바이트, 0.037037037037037035)

oeoojdoLj

3 개 (21 바이트, 0.010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

4 개 (23 바이트, 0.009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt

4

헤드 s , 0.044623631135793776

여기에서 생성

이 언어는 문자 값 모듈로 8이 중요한 유일한 BF 대체입니다.

불행히도, 더 긴 프로그램은 12 에 도달 할 수 있음에도 불구하고 더 나쁜 점수를줍니다. ! 인쇄 할 수없는 ASCII 및 유니 코드를 사용할 수 있으면 더 높아질 수 있습니다.

하나

##%%%%%%%&##$%&#&%&%%%%%%%%%&

--------+--.+++,-..+++.--------.

5555555535563334566555555555555633333333336555555555555566

==;=====>;<=>>;;;;;;;;;>;;;;;;>===>

다섯

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

일곱

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

여덟

]][]]]]]^[\]^]^[[[[^]]^[^[[[[[[[[[[[[^

아홉

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

열한

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

열 두번째

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~

인쇄 가능한 ASCII 문자, 탭 및 줄 바꿈 만 사용할 수 있습니다.
jimmy23013

@ user23013 내가 할 수있는 나는 많은로했고, 나는 12에 도착
mbomb007

2

/// , 0.19245008972987526

one

이 답변은 @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳의 답변에서 영감을 얻었습니다.

현재 점수 체계 one에서 5 자 이하로 인쇄 할 수있는 모든 언어 는 압도적입니다.


자, 점수 알고리즘에는 허점이있는 것 같습니다. 잘했다.
데니스

글쎄,이 질문은 더 나은 점수 매기기 방법을 얻기 위해 너무 오랫동안 샌드 박스되어 있습니다. 그리고 그것은 여전히 ​​잘 작동하지 않습니다 ... 이것은 또한 PHP, ASP 등에서 작동합니다.
jimmy23013

0

스마일 BASIC, .10062

"하나"

?"one

"두"

PRINT MID$(@two,1,3)

저의 다른 대답 은 더 흥미롭지 만이 점수는 더 높습니다.

가장 긴 체인을 얻는 중요한 전략은 추가 문자를 사용하여 고유 문자를 저장하는 것입니다 (예 : x - -x 프로그램 2를 사용 y + y하여 프로그램 3 을 저장 )

스코어링 시스템의 문제점은 3 개의 긴 프로그램보다 2 개의 짧은 프로그램의 점수가 높기 때문에 현재 프로그램을 더 길게 만들면 이후 프로그램의 문자를 저장할 이유가 없다는 것입니다.

또한 더 작은 TOTAL 크기보다 높은 개별 쇼트 프로그램을 중요하게 생각합니다. 내가 스왑 ?하고 PRINT대답하면 1 문자를 절약 할 수 있지만 내 점수는 절반입니다.

나는 전체 프로그램을 타이 브레이커로 사용하는 프로그램 에만 기반을 두는 것이 좋을 것이라고 생각합니다 .


3
두 프로그램 모두 공유하고 있다고 생각합니다 o.
JayCe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.