프로그램의 ASCII 코드의 합을 인쇄하는 프로그램 작성


14

당신의 임무는 프로그램 자체의 문자의 ASCII 코드의 합계를 인쇄하는 프로그램을 작성하는 것입니다. 파일을 열 수 없습니다 (명령 줄 인수, 표준 입력 또는 파일과 같은 입력은 금지됨).

가장 낮은 숫자를 인쇄하는 프로그램 (즉, 가장 낮은 ASCII 코드 합계를 가진 프로그램)이 승리합니다.

다음은 C로 작성된 그러한 프로그램의 예입니다 (가장 짧지 않음).

#include <stdio.h>
int main(){
printf("4950");/*i*/
return 0;
}

(이후에 줄 바꿈 없음 })


4
자체 바이트를 생성하고 합산하는 quine 솔루션을 보는 것이 흥미로울 것입니다.
Joey Adams

1
매우 도전적인 imho. 특히 PowerShell, Golfscript 등과 같이 단순히 토큰을 덤프하는 언어의 경우에는 무차별 적으로 강제 할 수 있습니다.
Joey

2
나는 downvoted하고 의견은 이유를 제공합니다. 이전에 언급했듯이 답변 수는 품질을 나타내는 것으로 간주하지 않습니다 . 쉽게 해결할 수 있다고해서 이것이 흥미 롭거나 도전적인 도전이되지는 않습니다. 적어도 내 의견.
Joey

5
기다림. 뭐? 한편으로 당신은 그 질문이 쉽고 흥미롭지 않다고 불평하고 당신은 저를 공감합니다 (-2). 반면에이 질문에 대한 답변의 25 %를 게시합니다 (+70).
Alexandru

4
그래서 당신은 이것을 평판 싸움이라고 생각합니까? CW에 대한 답변을 쉽게 변경할 수 있습니다. 어떤 식 으로든 많은 답변이 약간의 항의였으며 많은 답변을 얻는 것은 사소한 일임을 보여줍니다. 예를 들어 알파벳을 네 번 원했던 작업과 비교하십시오. 또한 내 답변 자체 (작업 사양에 묶여 있음)와 내 댓글 자체 (일반 사이트 품질 개선을 위해 호핑)는 종종 상당히 분리되어 있습니다. 어쨌든, 이제 그들을 삭제 한 것이 더 행복합니까? 그래도 그들은 여전히 ​​유효한 답변이었습니다.
Joey

답변:


10

화장실, 0을 인쇄

누군가가 "고양이와 같은 언어"라고 말했습니다.

빈 파일 :



로 실행하십시오 wc -c file.wc. 0 바이트에서 나는 이것이 실제로 프로그래밍 언어가 아닌 범주에서 승자라고 생각합니다.

또한

고양이, 인쇄물 80 (기본 13)

80

종료 줄 바꿈이 없으면 숫자 80 13 은 10 진수 104와 같습니다. 60 17 (102 12 월) 로 더 짧아 질 수 있지만, "base 13"이 더 괴짜 포인트가 될 것이라고 생각했습니다.

편집 : 새로운 wc예, 이것은 프로그램으로 실행될 수 있습니다.

#!/usr/bin/wc
ÿÿzw17

(라틴 -1로 인코딩 된-ÿ는 값이 255 인 바이트입니다.)

바이트 합계는 2223이며 출력은 다음과 같습니다.

  2  2 23 ./w

그러나 wc는 0이 아닌 0을 포함하는 파일을 읽어서 비어있는 것이 아니라 0을 생성해야합니다. 공란은 널이 아닙니다.
사용자 알 수 없음

user : 빈 세트의 값의 합계가 여전히 0이라고 주장 할 수 있습니다. 그럼에도 불구하고 wc -c질문에는 금지되어 있습니다.
Joey

1
그렇게하는 유일한 절은 "명령 줄 인수와 같은 모든 입력은 금지됩니다"이므로 -c를 생략하고 인쇄합니다 0 0 0(파일로 전달되는 파일이 금지하는 경우 모든 스크립팅 언어는 다음과 같습니다). 또한 금지됨)
Random832

2
+1 wc, 기본 부정 행위의 경우 -1,베이스 13의 농담을위한 +1

wc언어가 아닌 응용 프로그램 이라고 말하고 싶습니다 .
토마스 에딩

14

PHP, m4 및 기타 고양이와 같은 언어 : 150

150

간단한 Haskell 프로그램을 사용하여이 솔루션을 찾았습니다.

f :: String -> Bool
f s = (read s :: Int) == (sum . map fromEnum) s

main = mapM_ print [filter f $ sequence $ replicate n ['0'..'9'] | n <- [1..10]]

나는 이것이 가장 짧은 것 같아요.
Alexandru

2
@Alexandru : 반드시 그런 것은 아닙니다. 5!J 와 같이 일부 내장 함수를 사용하여 합계를 올바르게 인쇄하는 한두 문자 길이의 프로그램이있을 수 있습니다.
mellamokb

@mellamokb ASCII 문자의 합은 5!125가 아니라 86입니다.
Peter Olson

3
@ 피터 : 실제로, 실제 솔루션이 아닌 150보다 작은 솔루션 유형 의 예를 보여주었습니다 . (! (120),하지 (125)과 BTW, 5) 나는 :-) 아직 하나를 발견하지 않았습니다
mellamokb

12

Brainf * ck, 255

-.¤

숫자 255가 아니라 255 번째 ASCII 문자를 인쇄합니다.

BF 컴파일러가 ¤을 건너 뛰기 때문에 부정 행위로 간주 될 수 있습니다.


1
팀 : 가장 짧은 프로그램이 아니라 가장 낮은 숫자가 승리합니다. 어쨌든, 나는 ¤단지 평범한 의견이기 때문에 속이는 생각하지 않습니다 .
Joey

조금 더 빼면 더 낮은 점수를받습니다 : ----. ␦
Helena

8

자바 스크립트, 인쇄 9432 6902

(function a(){b="("+a+")()";c=0;for(i=0;i<b.length;i++){c+=b.charCodeAt(i-0)}alert(c)})()

Haskell 솔루션을 올바르게 이해하지 못하면 지금까지 첫 번째 quine 솔루션 입니다.


하스켈 코드는 숫자의 ASCII 코드의 합과 같은 가장 작은 숫자를 찾고 있습니다. 나는 대부분의 대답이 무차별 대대적으로 이루어 졌다고 생각합니다.
Joey

다음을 사용하여 89 바이트에서 86 바이트로 더 줄일 수 있습니다.(function a(){b="("+a+")()";for(i=c=0;i<b.length;i++)c+=b.charCodeAt(i-0);alert(c)})()
WallyWest


6

펄, 500

say     500

say와 사이에 두 개의 탭이 있습니다 500. :)

( perl -E이것이 규칙 내에 있다고 말할 수 있는 한, 하나의 라이너로 실행하십시오 )


1
나는 2 개의 탭을 좋아합니다
Steve P

5

루비, 인쇄 380

p (380)

닫는 괄호 뒤에 줄 바꿈이 없습니다.


5

PowerShell

(230)

분명히 230을 인쇄합니다.





3

요소, 220

이 언어는 제가 만든 언어이며 여기 다른 질문에 대한 답변이 나와 있습니다 .

220`!

작동 방식은 다음과 같습니다 220. 해당 번호를 스택으로 푸시합니다. 그런 다음`` outputs the top element of the stack. The!``는 제어 스택 (별도의 스택)에서 논리가 아닌 논리를 수행하여 1로 설정합니다.


2

PHP, 인쇄 4440

<?php
for($x=0;$x<15000;$x++)if($x==4440){printf($x);exit;}

2

PowerShell, 인쇄 3902

&{[char[]]$myinvocation.Line|%{$s+=+$_};$s}

현재 실행중인 행을 살펴보고 코드 포인트 값을 합산합니다.


2

INTERCAL, 1572

아직 아무도 INTERCAL을하지 않았다고 믿을 수 없습니다!

DOREADOUT#1572


DOGIVEUP

(개행 종료 포함)이 프로그램은 MDLXXII를 인쇄합니다.


1

펄, 인쇄 690

die 690 . $/

또는 1 개의 라이너를 게시 할 수있는 경우 ( perl -E)

say(570)

570을 인쇄합니다.

(후행 줄 바꿈 없음)


1

자바 스크립트, 1750 900 860 790

alert(790)

( 프로그램 후 또는 전에 캐리지 리턴 (CR \r또는 \x0D))

이러한 프로그램은 무차별 강제 실행에 의해 발견됩니다.

더 큰 값 :

alert(860)%0
alert(900)&&6
document.write(1750)

1

자바 -128

나는 stdin을 읽는 것이 허용되지 않는다는 것을 알고 있지만 점수를 어떻게 계산했는지에 대한 예를 제공하고 싶었습니다.

내 코드는 stdin에 전달 된 ASCII 카운트를 합산하고 -128을 출력합니다.

class P{public static void main(String[]z)throws Exception{byte v=0;int b=0;while((b=System.in.read())!=-1){v+=(byte)b;}System.out.println(v);}}

후행 줄 바꿈 없음


나는 당신의 합계가 넘치고 있다고 생각합니다.
Alpha

1

루비, 인쇄 300

p   300

와 사이에 공백과 탭 p300있습니다. 후행 줄 바꿈이 없습니다.


1

배치 파일, 500

ECHO  500

또한 "ECHO"(의도적으로 대문자)와 "500"사이의 두 공백을 확인하십시오.


1

1700 년 C

이상 함-아무도 C 솔루션을 아직 게시하지 않았습니다 (질문의 예 제외).

main(R){puts("1700");}

끝에 줄 바꿈이 없습니다.


1

K ( 923796795746513 )

이것이 규칙에 위배되는지 여부는 확실하지 않습니다. stdin을 사용하지 않고 바이트 및 합계 벡터로 열립니다.

+/1:.z.f

용법:

q scriptname.k

2012.05.08 편집-파일 핸들을 숨길 필요가 없습니다. 2012.05.09-int 대신 바이트로 변환하여 1 포인트 저장

2012.05.17-파일을 텍스트가 아닌 바이트 스트림으로 읽어서 많은 양의 포인트를 저장할 수 있습니다.


1

198 년

33*6

6*33

무차별적인 힘으로 찾았습니다. J에는 1 또는 2 개의 문자 솔루션이 없으며 유일한 3 문자 솔루션은 150입니다. 내 검색에서 버그를 제외하고 다른 4 문자 솔루션도 없습니다.


#jsoftware IRC 채널에서 우리는 또한 <.%:10!20429에, +/a.i.2#(,{:)'+/a.i.2#(,{:)'''1706 에는 자체 계산 퀴네를 가지고있었습니다 .


0

기원전 1160

echo와 blank를 사용하여 7 개의 공백을 포함한 전체 문자열 echo 1160 | bc의 바이트 수는 1160입니다.

echo 1160    |  bc

bc도 150에서 작동합니다.

echo "150" > 150
bc -q 150
150

0

D, 9752

이건 실제로 내 quine 과 비슷하게 계산합니다

enum c=q{import std.stdio;void main(){int s;foreach(d;"enum c=q{"~c~"};mixin(c);")s+=d;write(s);}};mixin(c);

0

공백, 369

이 20 자 프로그램은 숫자 369를 인쇄합니다.이 숫자는 문자의 ASCII 값 (Tab, Space, Linefeed 문자, 여기서 각각 T, S, L로 표시됨)의 합계입니다.

SSSTSTTTSSSTLTLSTLLL

(369 = 7 * 9 + 8 * 32 + 5 * 10, 탭 7 개, 공백 8 개 및 줄 바꿈 5 개가 있습니다.)



0

Brainf * ck, 253 (또는 252)

Peter Olson의 솔루션에 대한 약간의 개선 :

---.H

인쇄 할 수없는 것이 허용되면 ASCII 코드 26 을 추가 -하고 대체 하여 더 향상시킬 수 있습니다 H.



0

파이썬, 5440

가장 높은 점수가 이깁니다.

import sys
print sum(ord(i)for i in open(sys.argv[0]).read())

방금 반 퀴네 솔루션 인 b / c 게시한다고 생각했습니다.

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