소스 코드에 숫자없이 숫자 2014를 생성하십시오.


579

메타 합의에 따라 작가들에게 이의를 제기하기위한 참고 사항 :이 질문은 게시되었을 때 잘 받아 들여졌지만, Y를 사용하지 않고 Do X에 대한 답변을 요구하는 이와 같은 도전은 잘 받아들이지 않을 것입니다. 비슷한 도전을 게시 하려면 샌드 박스 를 사용 하여 의견을 얻으십시오.


그건 2017 2018 이미 2019, 사람들은 집에 가서.

이제 2014 년이되었으므로 2014 년과 관련된 코드 문제가 생겼습니다.

당신의 임무는 코드 2014의 문자 0123456789를 사용하지 않고 날짜 또는 시간 또는 임의의 시드와 같은 외부 변수와 독립적으로 숫자를 인쇄하는 프로그램을 만드는 것 입니다.

숫자가 유효한 토큰 인 모든 언어에서 가장 짧은 코드 (바이트 단위로 계산)가 이깁니다.


리더 보드 :


10
brainfuck에서 숫자가 무시되었지만 어쨌든 하나를 게시 할 것이라고 생각했습니다. 32 문자 :++++++[>++++++++<-]>++.--.+.+++.
브 래든 베스트

4
Brainfuck은이 도전에 유효한 언어가 아닙니다.
Joe Z.

8
이 질문이 새해를 맞이하면서 인기가 급증하는지 궁금합니다.
Joe Z.

3
"사람들에게 와라, 2016 년인지 몰라?" :)
padawan

1
@BradenBest +++++++ [> +++++++ <-]> + .--. +. +++의 두 가지 다른 방식으로 31 자에서 수행 할 수 있습니다. 및 ++++++++++ [> +++++ <-]> .--. +. +++.
Zubin Mukerjee

답변:


126

Mouse-2002 , 4 바이트

4 바이트의 순수하고 달콤한 ASCII입니다.

Mouse 에서는 알파벳 문자가 0-25 값으로 초기화됩니다. !인쇄 정수의 오퍼레이터 따라서이 인쇄 인 2014(NO 간헐적 바꿈)이.

U!O!

이 가능한 온라인 인터프리터는 없지만 여기에 당신은 C로 작성된 인터프리터 (하나가 강요하기 전에 약간의 비틀기를 필요로 찾을 수 gcc와의 같은 컴파일 된 인터프리터를 컴파일) Win32하지만 리눅스에서 완벽하게 작동한다 wine.

여기에서 당신은 컴파일 인터프리터의 고정 된 버전을 찾을 수 있습니다.


7
와우, 이것은 도전 후에 너무나 놀라운 발견입니다. 그리고 매우 난해한 언어로 아직 아무도 들어 본 적이 없습니다!
Joe Z.

3
BTW : CJam과 같은 일을 KE하지만 실제로는 2014 년 이전의 언어이기 때문에 실제로 유효합니다.
Joe Z.

7
내 얼굴의 잘난 척하는 표정은 이제 가장 빠른 코드 에서 Python의 지지자를 때린 후 Fortran-77 마법사의 표정과 비슷합니다 .
cat

56
이것은 @cat과 Mouse-2002의 게임입니다.
Digital Trauma

5
@DigitalTrauma 실제로 : 3
고양이

1300

파이썬, 52 바이트

print sum(ord(c) for c in 'Happy new year to you!')

@Frg 덕분에 2015 년에 업데이트되었습니다.

print sum(ord(c) for c in 'A Happy New Year to You!')

2016 버전을 보려면 마우스를 올려 놓으십시오.

print sum(ord(c) for c in 'Happy New Year to you!!!')

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


186
당신은 영리 상을받을 자격이 있습니다
Carter Pape

167
와우-이것은이 질문의 정신에 있습니다. <3
Johannes

80
나는 그것이 "행복한 새해!"다음에 시도한 4 번째 문구에 불과하다는 것에 약간 놀랐습니다. 이것은 1374 년에 완벽했을 것입니다.
dansalmo

55
print sum(ord(c) for c in 'HAPPY NEW YEAR To you too.') 아 잠깐, 나는 1 년 늦었다. 2013 년입니다.
Warren P

164
sum(map(ord,'Happy new year to you!'))7자를 저장합니다.

243

비 펀지 98 - 17 11 9 8 바이트

'-:*b-.@

이전 버전과 비슷하지만 '

'-:* pushes 45, duplicates it, then squares it, producing 2025
b-   subtracts 11 from it, resulting in 2014
.@   prints the result, then ends the program

흥미롭게도 45 2 -11은 숫자 a, b의 유일한 쌍입니다. 여기서 해당 집합의 의의는 [32,126] 은 인쇄 가능한 ASCII 문자 집합이며 [10,15]는 쉽게 액세스 할 수있는 Befunge 숫자 집합입니다. 이 파이썬 프로그램 과 그 쌍을 발견했습니다 .

(a,b)[32,126]×[10,15]a2b=2014
for a in range(32,127):
    for c in range(10,16):
        if (a**2-c)==2014:
            print("%s,%s"%(a,c))

또는 인터프리터가 유니 코드를 지원하면 다음과 같이 작동합니다.

Befunge 98-5 바이트 (4 자)

'ߞ.@

최소한 다음 코드 (Befunge 93-6 바이트 / 5 문자)로 http://www.quirkster.com/iano/js/befunge.html 에서 작동합니다 .

"ߞ".@

구 버전

cdd**e-.@

숫자를 계산 한 다음 인쇄합니다.

cdd pushes numbers to the stack so that it is this: 12,13,13
**  multiplies top three values of stack, which is now: 2028
e   pushes 14
-   subtracts the top two values of the stack, resulting in: 2014
.   prints the numerical value
@   end of program

이전 버전 :

"*'&("#;:a`j@a+,;

2014 년의 ASCII 값을 -10으로 푸시합니다. 그런 다음 10을 더한 후 각각 인쇄합니다.


78
en.wikipedia.org/wiki/Befunge ... 이것은 나조차도 ...
Plato

36
"언어는 가능한 한 컴파일하기 어려운 언어를 고안하기 위해 1993 년 Chris Pressey에 의해 만들어진
것입니다

7
@ 11684 결과는 질문에 잘 정의되어 있습니다. 프로그램이 인쇄 된 경우 : randomstuff2randomstuff0randomstuff1randomstuff4올바른 솔루션으로 간주하지 않습니다.
Cruncher

7
@Plato Wikipedia 기사 (Befunge 93 만 포함)를 읽는 대신 Befunge 98에 대해 배우려면 공식 사양을
Justin

3
Wiki : '언어는 가능한 한 컴파일하기 어려운 언어를 고안하기 위해 1993 년 Chris Pressey에 의해 만들어졌습니다.'... 왜 그렇습니까?
CousinCocaine

239

루비, 15

p Time.new.year

임시;)


질문 섹션

날짜 또는 시간 또는 임의의 시드와 같은 외부 변수와 독립적으로

내 답변을 게시 한 후까지 편집하지 않았습니다 ...


Jan Dvorak은 주석 에서 훌륭한 대안을 제공합니다 .

Happy = Time
Happy.new.year

그러나 너무 열정적이지 않습니다. 나는 선호한다:

Happy = Time
class Time; alias year! year; end

Happy.new.year!

또는:

class Have; def self.a; A.new; end; end
class A; def happy; Time; end; end
class Time; alias year! year; end

Have.a.happy.new.year!

올바른 영어 문장 부호는 다음과 같습니다.

def noop x = nil; end
alias a noop
alias happy noop
alias new noop
alias year! noop
def Have x
    p Time.new.year
end

Have a happy new year!

좋아, 나는 그것을 도울 수 없었다 :

def noop x = nil; end
eval %w[we wish you a merry christmas! christmas and a happy new].map{|x|"alias #{x} noop"}*"\n"
def year!; p Time.new.year; end

we wish you a merry christmas! we wish you a merry christmas!
we wish you a merry christmas and a happy new year!

168
Happy = Time; Happy.new.year
존 드보락

5
@hobbs 아니요 그렇지 않습니다. 문제는 이것에 대해 아무것도 말하지 않는다
손잡이를

12
이것은 일정 시간 동안 만 올바르게 작동합니다.
hippietrail

119
그것은 현재까지 모든 테스트에서 잘 작동했습니다
CoderTao

7
나는 질문의 정신이 올해 (2014 년)에 올해를 말하는 것이라고 생각합니다. 따라서이 솔루션은 허용 된 솔루션보다 시간이 더 "휴대용"입니다. 당신 (그리고 Jan Dvorak)은 내 투표를 얻습니다!
Olivier Dulac

223

이동, 2 바이트 (UTF-16)

하나의 유니 코드 문자 (UTF-16의 2 바이트, UTF-8 형식의 3 바이트), 오류의 일부로 2014 출력

http://ideone.com/dRgKfk

can't load package: package : 
prog.go:1:1: illegal character U+2014 '—'

7
그것은 매우 영리하지만 질문은 숫자를 인쇄하는 프로그램을 요청합니다.
HelloGoodbye

40
인쇄 된 오류 코드가 카운트되면이 제출물이 승리합니다.
ToastyMallows

37
+1. 질문은 " 숫자 인쇄 하고 다른 것은 인쇄하지 않습니다"라고 말하지 않습니다 .
Kaz

1
나는 그것이 유효한지 아닌지 상관하지 않습니다. 굉장합니다.
Redwolf 프로그램


177

파이썬, 26

print int('bbc',ord("\r"))

53
bbc는 기본 13에서 2014
Darren Stone

71
나는 'bbc'문자를 사용하고 base 13을 사용하는 것은 Douglas Adams 공물이라고 가정합니다. "죄송 합니다만베이스 13에는 농담을 쓰지 않습니다."
Brian Minton

10
13 년 전 삼가 고인의 명복을 빕니다.
대런 스톤

4
IMO,이 답변은 "True Pythonese"
kmonsoor

8
@BrianMinton : 그것은 숫자 2014은 문자의없이 표현 될 수 있도록 2와 36 사이의 유일한 기준이기 때문에 자료 (13)의 사용은 아마 0- 9.
dan04

146

MATLAB, Scala (4 자, 5 바이트)

여기서 MATLAB (및 Scala)의 상대적으로 약한 유형 시스템을 활용할 수 있습니다. 트릭은 +문자로만 구성된 문자열 ߞ(UTF-8 코드 포인트 U + 07DE 또는 십진수 2014)에 단항 연산 을 적용하는 것 입니다. 이 연산은 문자열을 내재적으로 이중 (MATLAB에서) 및 Int(스칼라에서)로 변환합니다.

+'ߞ'

바이트 수 세부 사항 :

  • + ASCII이며 1 바이트를 계산
  • ' ASCII이고 1 바이트를 계산합니다 (하지만 표현식에서 두 번 나타남)
  • ߞ 2 바이트 UTF-8 문자입니다.

합계 : 5 바이트

TeX (32 26 바이트, 많은 바이트)

\def~{\the\catcode`}~}~\\~\%\bye

더 짧은 대안 ( Joseph Wright 가 제안한 )은

\number`^^T\number`^^N\bye

XeTeX / LuaTeX (13 자, 14 바이트)

XeTeX 또는 LuaTeX가 허용되면 UTF-8 입력을 직접 사용할 수 있습니다 ( Joseph Wright가 제안한대로 ).

\number`ߞ\bye

\let~\number~`^^T~`^^N\bye25 자 / 바이트 IMHO는 잘못된 것으로 계산합니다. 솔루션도 25입니다.
yo '

1
@tohecz 두 솔루션이 실제로 26 바이트 길이라고 생각합니다.
jub0bs

1
현재 연도가 필요한 경우 13 바이트 :\the\year\bye
yo '

2
+'ߞ'스칼라 (그리고 내가 생각하는 다른 언어들)에서도 작동합니다
theon

118

dc, 6 자

DiBBCp
  • D 입력 기수가 처음에 10 일지라도 스택에서 13을 누른
  • i 입력 기수를 변경합니다 (10에서 13으로)
  • BBC 2014 년 기준 13입니다.
  • p 인쇄물.

콘솔 출력 :

$ dc <<< "DiBBCp"
2014

10
사실, 실제 DC 프로그램은 여전히 DiBBCp(6 자) 나머지는 프로그램 을 실행하는 방법입니다.
daniero jan

11
나는 이것을지지하려고 노력했지만 42 포인트가 있습니다! 기본 13과 BBC라는 단어를 사용합니다. 얼마나 멋진가요? 올해 우리는 삶, 우주 및 에버리스트에 대한 질문을 찾을 것으로 보인다 ;-) en.wikipedia.org/wiki/Base_13 . 나는 대신 @daniero의 의견을 찬성하고이 웅장한 42 평판으로 답을 남겨 둡니다. ;-)
Pablo Marin-Garcia

4
@ PabloMarin-Garcia, 불행히도 일부 알지 못하는 사람이 그것을 깨뜨 렸습니다 ... 지금 43 투표했습니다. 돌아가서 투표하십시오! :)
Tomas

3
@Tomas Vogons는 항상 Vogons입니다. 저항은 은하 간 관료주의에 대한 무의미하다.
Pablo Marin-Garcia

2
D맨 페이지에서 명령을 찾을 수도 없습니다 . 무엇을합니까? 신경 쓰지 마라 ... D는 13 진수이다.
kzh

93

모스 부호, 23

;)

..--- ----- .---- ....-

21
"숫자가 유효한 모든 언어로"
Doorknob

14
"..---"는 숫자 2에 5 번의 유효한 토큰입니까? "4"가 숫자 "4"에 대해 3 행으로 유효한 토큰 인 것처럼.
DavidC

8
점자 더 짧을 수 있음 :)
Dr. belisarius

31
좋은 지적. Btw, 나는 아무도 내 컴퓨터에서 모스 부호를 어떻게 사용할 수 있는지 묻지 않았다고 안심했다.
DavidC

14
@DavidCarraher 무슨 뜻인가요? 나는 자연스럽게 당신 이이 저장소를 사용하여 그것을 해독했다고 가정했습니다. github.com/Nyubis/mspa-morse-decoder 모두가하고 있습니다…
Michael J. Calkins

88

72 코드에서 45 자; 제로 문자 코드

이것은 가장 짧은 답변과는 거리가 멀지 만 아직 아무도 답변을 게시하지 않았습니다.

  • 문자 코드를 숫자 대신 사용하지 않습니다.
  • 시스템 날짜를 호출하지 않습니다.

R 콘솔에서 R로 순수 수학 (괜찮고 자동 부울 변환) 사용 :

x<-(T+T);x+floor(exp(pi)^x)*x*x-(x*x)^(x*x)/x

숫자 2014를 인쇄 T합니다. R에서 true에 대해 사전 정의 된 동의어입니다. floorexp함수는 pi상수 와 마찬가지로 기본 패키지에서 직접 사용할 수 있습니다 . R에는 증가 연산자가 없지만 (x*x)각 문자를 두 번씩 증가 및 감소시키는 문자 수를 줄 이도록 반복합니다.


Javascript의 원본 버전 (72 자)

콘솔에서 테스트 할 수있는 간단한 이유로 공백이 완전히 없어도 괜찮습니다.

m=Math;p=m.pow;t=true;++t+m.floor(p(m.exp(m.PI),t))*t*t++-p(++t,t--)/--t

콘솔에서 실행하면 숫자 2014가 다시 인쇄됩니다.


소품합니다 XKCD (그리고 또한 특급 (PI)에 대해 생각하는 저를 얻기 위해) : 파이로 빼기 파이

추신 : 같은 알고리즘을 다른 언어로 더 짧게 만들 수 있다면, 코멘트를 게시하십시오.


1
o =! ""; (o + o) + ""+ (oo) + (o + oo) + (o + o + o + o)
커널 제임스

4
25 바이트 : alert ( 'ߞ'. charCodeAt ())
oberhamsi

1
+1. 그러나 귀하의 답변은 "숫자 대신 문자 코드를 사용하지 않고 시스템 날짜를 호출하지 않는"첫 번째 답변이라고 주장합니다. 그것은 실제로 거짓입니다. 내 대답 에는 cdd**e-.@문자 코드 또는 시스템 날짜를 사용하지 않는 이 솔루션 (귀하의 게시)이 있습니다. 그것은 수 2014 계산 c, de16 진수 숫자입니다. a,, b..., f푸시 (각각) 10,11, ... 15 12 * 13 * 13 - 14계산도 마찬가지 입니다.
Justin

이것은 문자 코드를 사용하지 않는 첫 번째 대답이 아니 었습니다. 나는 몇 가지 이전 것들이 있습니다.
Timtech

1
@Quincunx : 당신 말이 맞아요. 나는 당신의 버전이 문자 코드가 아닌 16 진수를 사용하고 있음을 알지 못했습니다.
AmeliaBR

85

스칼라 REPL

34 29 자

+"Happy new year to you!".sum

실제로 어떤 문자로 골프를 원한다면 다음을 사용할 수 있습니다.

'@'*' '-'"'

또는

"{yz}"map(_-'I'toChar)

각각 11과 22 문자가 있습니다.


4
골프를 타지 않더라도 재미있는 아이디어. 그러나 문자열 자체는 높은 바이트를 사용하는 것보다 더 흥미 롭습니다.
Konrad Borowski 2019 년

골프 버전을 추가했습니다.
Mikaël Mayer

다음 toInt과 같이 몇 개의 문자를 저장할 수 있습니다 : +"Happy new year to you!".sum Test
theon

업데이트되었습니다. +도 접두사가 될 수 있다는 것을 몰랐습니다.
Mikaël Mayer

68

PHP, 9 바이트

PHP 7.1 이하가 필요합니다. PHP 7.2에서는 작동하지만 경고가 발생합니다. 향후 버전에 대한 보장은 없습니다.

xxd이진 데이터로 인해 필요하므로 복사하여 붙여 넣기가 더 쉽습니다. 반환 E_NOTICE할 수는 있지만 실제로 중요하지 않습니까?

~ $ xxd -r > 2014.php
0000000: 3c3f 3d7e cdcf cecb 3b                   <?=~....;
~ $ php 2014.php
2014

또는 ISO-8859-1 인코딩을 사용하여 저장하십시오.

<?=~ÍÏÎË;

@Quincunx : 업로드가 비교적 까다로 웠지만 여기는 Ideone-ideone.com/APHKhn 입니다.
Konrad Borowski 2019 년

1
이것은 흥미로워 보인다. 무엇을합니까?
Justin

7
@Quincunx : 문자열의 모든 문자에서 비트 단위 (0x00은 0xFF로, 0x7F는 0x80으로)가 아닙니다. 문자열이 유효한 식별자이기 때문에 (높은 비트 세트가있는 것은 PHP의 식별자 문자이며 다른 인코딩을 지원할 것임) PHP는 상수라고 생각하지만 정의되지 않았기 때문에 문자열로 취급합니다.
Konrad Borowski 2019 년

2
질문은 "이제 2014 년입니다 ..."였으므로 echo date('Y');어떻습니까?
John

6
@ 존 : 아뇨. 질문에 대한 의견을 읽으면 OP가 현재 연도를 답변으로 받고 싶지 않다는 것을 알 수 있습니다. 게다가, <?=date(Y);11 문자가 될 것이고 9 문자로 해결책이 있습니다.
Konrad Borowski

67

C, 33 바이트

main(){printf("%d",'A'*' '-'B');}

19
2014의 소인수 분해에 ASCII 5가 필요하다는 것은 얼마나 귀찮은 일입니까!
벤 잭슨

Cocoa Touch objective C에 대해 (int a; YES; a ++) {NSLog (@ "% i", a);}를 얻었지만 아직 추가 할 수는 없습니다 (충분히 평가되지 않음). 그것은 결국 2014를 보여 주며 컴파일러 오류가 있으며 전혀 작동하지 않을 수 있으며 컴파일 된 것은 아마도 4.2 meg입니다.
재활용 된 철강

main () {printf ( "% d", '\ a \ xde');}
mjy

1
@mjy 다중 문자 리터럴의 바이트 순서는 보장되지 않습니다.
Jonathon Reinhart

@JonathonReinhart 다중 문자 리터럴은 전적으로 구현 정의됩니다.
FUZxxl

54

Mathematica, 14 자 (또는 비트 맵을 문자로 계산하면 15 자)

TextRecognize @여기에 이미지 설명을 입력하십시오


50
실제로 바이트 수를 계산하여 비트 맵 이미지 크기의 14 + 크기입니다.
Sylwester

22
비트 맵은 아마 7,357 자일 것입니다.
Joe Z.

5
또한 이미지의 일부 바이트가 \d범위에 속한다고 생각 합니다. 즉, GIF 인 경우 헤더 자체에 일부가 포함되어 있습니다.
John Dvorak

13
당신은 모두 killjoys입니다. 좋습니다, First @ ToCharacterCode @ "ߞ"를 25 자, 26 바이트로 사용하십시오.
Michael Stern

9
보너스로, 여기에 30 자 --URLFetch @ "에 티카 솔루션입니다 goo.gl/miVwHe "
마이클 스턴

53

Python3.4.0b2 (0 바이트)

% python3.4  
Python 3.4.0b2 (v3.4.0b2:ba32913eb13e, Jan  5 2014, 11:02:52) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

사람들이 일년 후에 파이썬 3의 버전을 업데이트하면 작동하지 않습니다.
Joe Z.

21
그래서 python3.4.0b2를 언급 한 이유는 두 번 발생하지 않습니다. 시스템 날짜가 아닌 릴리스 날짜입니다.
당신

6
이것은 나를 미소 짓게했다!
매트 플레처

2
Python 3.4.2에서도 작동합니다.
Outgolfer Erik

외부 출력을 추가 할 수 없습니다.
MilkyWay90

48

자바 스크립트, 23 바이트

Base 64 변환 사용

alert(atob("MjAxNA=="))

23 문자 (atob 만있는 16 자)

또는

alert("MMXIV") // ;)

27
MMXIV2014마지막으로 확인한 문자가 없습니다 .// ;)
Joe Z.

23
고대 로마인들은 동의하지 않을 수 있습니다. 첫 번째는 현대 영어로 2014 년을 생산합니다.
logic8

1
당신의 첫 번째 것은 출력되지 않습니다 ...
Doorknob

1
크롬으로 콘솔을 열면 붙여 넣기하고 Enter 키를 눌러 값을 반환합니다-어쨌든 다른 것보다 길게 경고를 추가합니다.
logic8

5
@ logic8 : 좋은 것 +1. 작동하는 또 다른 JavaScript 버전 : (4 바이트) [!+[]+!+[]]+[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]- 의 요구 사항을 alert([!+[]+!+[]]+[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]);충족하는지 잘 모르겠습니다 Joe Z.
Nope

41

펄-10 자

이 솔루션은 PerlMonks에서 BrowserUK 에 의해 제공되었지만 그가 게시 한 솔루션에서 불필요한 구두점과 공백을 제거했습니다. 4 개의 문자 이진 문자열에서 비트 단위의 "not"입니다.

say~"ÍÏÎË"

위에 표시된 문자는 이진 8 진수 cd : cf : ce : cb를 나타내며 ISO-8859-1 및 ISO-8859-15에 표시되는 방식입니다.

다음은 전체 스크립트를 16 진수로 실행하고 예제를 실행하는 예입니다.

$ hexcat ~/tmp/ten-stroke.pl
73:61:79:7e:22:cd:cf:ce:cb:22
$ perl -M5.010 ~/tmp/ten-stroke.pl
2014

펄 (높은 비트없이)-14 자

say'````'^RPQT

이것은 두 개의 4 문자열 "RPQT""````"4 개의 백틱 에서 비트 단위 "또는"을 사용합니다 .

$ ~/tmp/fourteen-stroke.pl
73:61:79:27:60:60:60:60:27:5e:52:50:51:54
$ perl -M5.010 ~/tmp/fourteen-stroke.pl
2014

(나는 처음에 사이에 공백을 요구하는 다른 방법으로 주위에 두 개의 문자열을했다 printRPQT 하여 토큰 을 구분해야했습니다. @DomHastings는이를 전환하여 문자를 저장할 수 있다고 지적했습니다.)

펄 (속임수)-8 자

이것은 아마도 경쟁의 정신 에 있지는 않지만 PerlMonks의 hdb 는 Perl $0이 현재 실행중인 프로그램의 이름을 포함하는 라는 변수를 제공한다고 지적했습니다 . 스크립트 "2014"를 포함하는 파일 이름을 지정할 수 있으면 2014와 $0같습니다. $0숫자가 포함되어 있으므로 직접 사용할 수는 없지만 ${...}0으로 평가되는 표현식을 포함하면 괜찮습니다. 예를 들면 다음과 같습니다.

say${$|}

일관성을 유지하기 위해 hexcat-then-perl을 수행하십시오.

$ hexcat 2014
73:61:79:24:7b:24:7c:7d
$ perl -M5.010 2014
2014

나는 이것이 부정 행위라고 생각하지만 그럼에도 불구하고 흥미로운 해결책이므로 언급 할 가치가 있습니다.


2
거기에서 문자열과 베어 워드를 반대로 바꾸면 char :을 저장할 수 있습니다 print"````"^RPQT. say-e 대신 -E를 사용하여 5.10 이상에서도 사용할 수 있지만 다른 명령 줄 인수에 대해 +2 페널티가 발생하는지 모르겠습니다.
Dom Hastings

2
Perl 5를 사용 say하고 페널티없이 사용하도록 지정하는 것이 허용되는 것으로 간주됩니다 .
피터 테일러

@DomHastings, 개인적으로 "-e"또는 "-E"로 수행하려면 문자 수에 "perl -E"를 포함하여 전체 명령을 포함시켜야한다고 생각합니다. .
tobyink


4
따옴표가 필요없는 문자열 리터럴을 사용하여 다른 바이트를 저장할 수도 있습니다 (예 :) say ABCD^srrp.
primo

40

루비, 20

p 'bbc'.to_i ?\r.ord

설명 : bbc입니다 2014기본 13 파이썬보다 짧은에. Forth만큼 짧지 않습니다.


23
"아무도베이스 13에 농담을 쓰지 않습니다!"
Jean-Michaël Celerier

1
? w = $ 「^ XA [_AXeMFGIAHJLjKNAEFEJJNHQHNKLAEMINJOJOHLAGKHOJOJ [AG [HQHRFJAH} IHAIGGwIIAHHGwKHAHGHrEUAGQFiGVAGQGfIPAFHKHHbJHAQII] MGASHNSOHATIdIAUJJRLIAWLIQGKAZOFUA] ZAeSAiPAjOAkLA ".codepoints {| R | R- = 68; $> << (R <0? \ n (w = w = =? $? '':? $) * r)}
대런 스톤

1
p 'ߞ'.ord'ߞ'.ord내부 의 모든 기능을 갖춘 프로그램 irb. 1.9 이상에서 작동
Ricardo Panaggio

1
"이상한"유니 코드 문자가없는 경우 : ?-*?--?\v(45 *
45-11

한 글자 작음 : ?.*?.-?f(46 *
46-102

29

파워 쉘, 9

+"ߞ"[""]

ߞ( U + 07DE NKO LETTER KA )는 code-golf 태그 info 에 따라 2 바이트로 계산됩니다 .

[""]문자열에서 첫 번째 문자를 반환합니다 ( ""로 변환 됨 0). 단항 더하기 opeartor ( +)는 문자를 정수로 변환합니다.


1
codegolf.stackexchange.com/tags/code-golf/info 에 따르면 9 자로 계산되어야합니다.
Konrad Borowski

@GlitchMr, 고마워, 내 대답을 수정했습니다.
Danko Durbić

3
['']멋진 트릭입니다. 나는 보통 사용 [char]했지만 실제로 더 짧습니다 :)
Joey

27

스칼라 REPL-6 자

"?="##

( ##스칼라의 기호 의미 hashCode와 Java 문자열입니다."?=" 은 2014 년으로 해시됩니다.)

스칼라 REPL-4 자, 5 바이트

+'ߞ'

가장 좋아하는 유니 코드 문자에 대한 수학은을 생성합니다 Int.


27

자바 스크립트, 18 자

alert(btoa('ÛMx'))

업데이트 : ES6에서 템플릿 리터럴을 사용하면 두 문자를 저장할 수 있습니다.

alert(btoaMx`)

위의 코드 btoa는 잘 정의 된 규칙 세트 ( RFC 4648 ) 에 따라 문자열을 다른 문자열로 변환 한다는 점을 명심하면 이해하기가 매우 쉽습니다 . 변환 작동 방식을 확인하기 위해 입력 문자열 "ÛMx"를 일련의 이진수로 작성합니다. 여기서 각 문자는 8 비트 문자 코드로 렌더링됩니다.

입력 문자 | Û | 남 | 엑스
문자 코드 (10 진수) | 219 | 77 | 120
문자 코드 (이진) | 11011011 | 01001101 | 01111000

그룹 6의 마지막 행에서 이진수를 재구성 한 후 문자열 "2014"의 4 개 문자에 대한 Base64 색인에 해당하는 4 개의 새로운 숫자로 이진 표현을 얻습니다.

Base64 색인 (이진) | 110110 | 110100 | 110101 | 111000
Base64 색인 (10 진) | 54 | 52 | 53 | 56
출력 문자 | 2 | 0 | 1 | 4

: HTML 사양에 따라, 출력 문자는이 표에 따라 자신의 Base64로 지수에서 검색 할 수 있습니다 http://dev.w3.org/html5/spec-LC/webappapis.html#base64-table .

세부 사항에 신경 쓰지 않으면 브라우저에서 계산을 수행하고 "ÛMx"가 atob('2014')Javascript 로 평가 한 결과임을 알 수 있습니다 .


질문은 숫자 인쇄에 대해 언급합니다. 콘솔에서 평가하면 결과가 반환된다는 것을 알고 있지만 코드 골프 에서는 일반적으로 JS 답변에 어떤 형태의 IO ( alert가장 일반적 임) 가 포함될 것으로 예상됩니다 .
zzzzBov

@zzzzBov 예, 원래 답변 에는 alert전화가 포함되었습니다 .
GOTO 0

그것은 나열 커뮤니티를 을 제거 것으로 alert. JS codegolf의 표준이 변경되었는지 아니면 커뮤니티에서 채택한 변경인지 궁금합니다.
zzzzBov

@zzzzBov : SHiNKiROU 및 luser droog에 의해 승인 된 익명 사용자에 의한 변경이었습니다. 어쨌든이 편집은 메타 ( meta.codegolf.stackexchange.com/questions/803/… ) 에 대한 토론을 시작했습니다 .
Konrad Borowski

@ xfix, 메타에 대한 질문을 한 것은이 편집만이 아닙니다. 개발 콘솔이 인쇄로 간주되는지 여부에 대해 사람들이 의견이 일치하지 않는 충분한 코드 골프를 보았습니다. 표준을 요구할 가치가 있다고 생각했습니다.
zzzzBov

24

또 다른 GolfScript 항목, 9 개의 인쇄 가능한 문자

나는 이것이 지금까지 인쇄 가능한 GolfScript 항목보다 짧다고 생각합니다.

"!="{*}*)

( Peter Taylor의 7 자리 항목이 이기는 반면 인쇄 할 수없는 제어 문자는 포함합니다.)

나는 이것을 " 작년에 너무나 !" 라고 부릅니다 . 실제로 수행하는 작업은 숫자 8을 2013 년 33 × 61로 생성 한 다음 1 씩 증가시키기 때문입니다. ;-)


당신은 승리 (아스키 골프 스크립트)
aditsu

21

C (31)

main(){printf("%o",' b'/'\b');}

C (32)

main(){printf("%x%o",' ','\f');}

C (30)

main(){printf("%x",' j'^'~');}

C (30)

main(){printf("%d",'\a\xde');}

어떻게 막 "%x"'b'*'S'? 2014 년 12 월 또는 8212 년입니다. 하나의 문자 하나의 리터럴과 두 개를 형식 문자열에 저장합니다.
MSalters

@MSalters No 'b'*'S'는 8134입니다. 8212의 소인수 분해는 2 * 2 * 2053이므로 쉽게 생성 할 수 없습니다.
fredoverflow

바, 정수 나누기로 확인 8212/'b' == 'S': (
MSalters

8 진수도 작동하지 않습니다 (02014 = 1036 = 37 * 28, 28은 인쇄 할 수 없음)
MSalters

1
@FredOverflow 28 문자 솔루션은 어떻습니까? main () {puts (__ DATE __ + '\ a');}
Arunprasad Rajkumar

20

넷째, 14

'> '" * '^ - .      

1
이것이 어떻게 작동하는지 설명 할 수 있습니까?
ProgramFOX

1
정수 상수를 서수 (ASCII) 값을 사용하여 문자 리터럴로 표현하고 있습니다. 그래서이있다 : 62 34 * 94 - . 당신 로한 말을하지 않는 경우, 이것이 의미 print (62 * 34 - 94).
대런 스톤

Forth (Gforth 0.7.0), 5 바이트, 4 문자 : 문자를 'ߞ .인쇄합니다.
18446744073709551615

20

골프 스크립트, 14

'-+,/'{)))))}%

작동 방식 : ASCII는 다음과 같습니다.

...
+
,
-
.
/
0
1
2
3
4
...

따라서 이것은 각 문자의 ASCII 코드를 취하여 5를 빼고 문자열에 붙입니다.

{...}%문자열을 인수로 지정하면 매핑 된 문자열의 문자 배열이 생성됩니다. 따라서 각 문자를 5 )씩 증가시킵니다 ( 증분을 의미).


+끝은 불필요하다. 또한 5 배씩 늘리지 말고 5를 추가하십시오. 총 절감액 : 4 자 '-+,/'{5+}%
저스틴

15
@Quincunx 5는 숫자입니다.
피터 테일러

5
@PeterTaylor 나는 계속 잊어 버린다.
Justin

영리한 솔루션
Sumurai8

이것의 CJam 버전 : "-+,/"_,)f+. : (다시, CJam이 있습니다 KD.)
마틴 청산

19

파이썬, 32 자

print ord(',')*ord('-')+ord('"')

아마도 2014 번째 유니 코드 char을 사용하여 줄일 수 ߞ는 있지만 시도하지 않았습니다.

Quincunx는

a=ord('.');print a*a-ord('f')

세 문자만큼 짧습니다.


유니 코드 버전은 적어도 IDLE이있는 Python 3에서 작동합니다 print(ord("ߞ")). 파이썬 2에서는 작동하지 않는 것 같습니다. 파이썬 2는 아마도 유니 코드를 지원하지 않을 것입니다.
저스틴

3
또한 버전에 따라 a=ord('.');print(a*a-ord('f'))2자가 짧습니다.
Justin

@Quincunx 지원하지만 파일에 특정 인코딩을 설정 u하고 문자열 끝에 추가 해야합니다 ( "ߞ"u)
Kroltan

2
@Kroltan 사실, 나는 두 번째 부분이 사실이 아니라고 확신합니다. 파이썬 2에서는 문자열 이 유니 코드라고 앞에 덧붙여 야 u했지만 파이썬 3에서는 모든 문자열이 자동으로 유니 코드됩니다
murgatroid99

1
위에서 언급 한 것과 마찬가지로 유니 코드 print ord('.')**2-ord('f')가 없으면 약간 짧습니다.
MLS

18

APL (6 바이트, 4 문자)

⊃⎕TS

그러나 올해 만 작동합니다.

작동하는 이유 :

      ⎕TS
2014 1 1 11 58 5 811
      ⊃⎕TS
2014

시스템 날짜에 의존하지 않고 10 바이트 (7 자)입니다.

⎕UCS'ߞ'

6
불행히도 올해에만 작동하는 답변은 유효하지 않습니다.
Joe Z.

나는 APL을 모른다 : 그 정사각형 상자는 APL 문자입니까, 아니면 글꼴 표현 (Chrome)이 누락 되었습니까?
Carl Witthoft

@JoeZ .:이 질문은 그런 말을하지 않지만 2014 년에 의존하지 않는 것을 추가했습니다.
marinus

4
@CarlWitthoft : 쿼드 ( ) 라고하며 , 그렇게 보일 것입니다.
marinus

18

Python 32 10 바이트, 91 85 ( math기본적 으로 가져온 66 ) 바이트 순수 수학

이것을 쓰는 것이 재미있었습니다.

my_lst = []
for i in range(33, 126):
    for j in range(i, 126):
        if 2014 - 126 < i * j < 2014 - 33:
            if j not in range(48, 58):
                my_lst.append("ord('" + unichr(i) +
                              "')*ord('" + unichr(j) +
                              "')+ord('" + unichr(2014 - i * j) + "')")

for val in my_lst:
    print val, '->', eval(val)

Bruno Le Floch 의 방법을 2014사용하여 쓸 수있는 모든 가능한 방법을 인쇄합니다 (32 자).

ord('!')*ord(':')+ord('d') -> 2014
ord('!')*ord(';')+ord('C') -> 2014
ord('!')*ord('<')+ord('"') -> 2014
ord('"')*ord(':')+ord('*') -> 2014
ord(')')*ord('/')+ord('W') -> 2014
ord('*')*ord('-')+ord('|') -> 2014
ord('*')*ord('.')+ord('R') -> 2014
ord('*')*ord('/')+ord('(') -> 2014
ord('+')*ord(',')+ord('z') -> 2014
ord('+')*ord('-')+ord('O') -> 2014
ord('+')*ord('.')+ord('$') -> 2014
ord(',')*ord(',')+ord('N') -> 2014
ord(',')*ord('-')+ord('"') -> 2014

그러나 이것은 분명히 중복이므로 인터프리터가 기본적으로 utf-8로 설정되어 있으면 필요한 것은 다음과 같습니다.

>>> ord(u'ߞ')
2014

또한 AmeliaBR (아이디어) 덕분에 순수한 수학 버전을 구현하기 위해 최선을 다했습니다.

from math import*
a,b,c=int(e),round(e),ceil(pi);print int(a**(b*c-(c-b))-a*a**c-a)

ord ( ',') ** 2 + ord ( 'N')
MLS

6
@MLS 글쎄, 그것은 숫자가 있습니다 :)
Joachim Isaksson

2
나는 수학 버전을 약간 최적화했습니다.. a,b=int(e),int(pi);c=a+a;print a**(b*c-c+b)-a*a**c-a그리고 TruePython 2.x에서 정수 1과 작동 한다는 사실을 사용하여 수학 가져 오기를 완전히 제거하여 50 자로 줄일 수 있습니다.o=True;a=o+o;b=a+o;c=b+o;print a**(b*c-o)-a*a**c-a
Ponkadoodle

Python 3을 사용하면 캐릭터를 저장할 수 있습니다.ord('ߞ')
asmeurer

@JoachimIsaksson 숫자는 숫자가 아닙니다;)
Mega Man

17

R (20 자)

@popojan (아직 답을 게시 할 수는 없습니다)은 20 자 이내의 해결책을 제공했습니다.

sum(T+T:exp(T+pi))-T

산출:

> sum(T+T:exp(T+pi))-T
[1] 2014

R (22 자)

익명의 사용자가 더 짧은 솔루션을 제안했습니다.

strtoi("bbc",pi*pi+pi)

2014BBC베이스 (13)에서 pi*pi+pi정수 13과 같은 출력이 문맥에서 R에 의해 처리된다 (= 13.0112)를 :

> strtoi("bbc",pi*pi+pi)
2014

R (30 자)

@Tomas에게 감사합니다!

cat(a<-T+T,T-T,T/T,a*a,sep="")

산출:

> cat(a<-T+T,T-T,T/T,a*a,sep="")
2014

R (31 자)

cat(T+T,T-T,T/T,T+T+T+T,sep="")

AmeliaBR의 답변 에서 영감을 얻었 습니다 . 산출:

> cat(T+T,T-T,T/T,T+T+T+T,sep="")
2014

와우, +1! 그리고 로마 숫자 솔루션 이 최고가 되길 바랐습니다 ... :( ;-)
Tomas

아래 변형은 더 짧게 만들 수 있습니다. cat(a<-T+T,T-T,T/T,a^a,sep="")(30 자), paste0(aT+T,T-T,T/T,a^a)(26 자)
Tomas

@Tomas paste0에서 기호가 포함되어 있으므로 함수 가 허용되지 않습니다 0. 를 사용하면 솔루션에서 30자를 만듭니다 cat.
djhurio

2014현재 디렉토리에 파일 을 작성 하고 쓰기 list.files()-12 자
Zbynek

@ Zbynek, 귀하의 솔루션이 일반적인 코드 골프 규칙 범위에서 유효하지 않을 것으로 기대합니다.
djhurio

15

자바- 77 75 자

printmain 메소드를 사용하여 클래스에 추가 된 경우 75 자 :

class C{public static void main(String[]a){System.out.print('#'*'<'-'V');}}

35*60-862014와 같은 의미


2
나는 당신의 공식을 좋아합니다.
Johannes

7
클래스 정의가 실행되어야하기 때문에 실제로는 더 길어야합니다. 내가 아는 가장 짧은 방법 (Java 6 사용) :class a{static{System.out.println('#'*'<'-'V');}}
Justin

1
@Quincunx, Java 7에서 주요 방법이 필요합니다
True Soft

2
@TrueSoft 참고 "Java 6에서"라고 말했습니다. 가능한 가장 짧은 Java를 선택해야합니다.
Justin

2
println에서 'ln'을 제거하여 문자를 줄일 수 있습니다.
laksys
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.