수학없이 출력 Pi [닫기]


56

가능한 한 적은 바이트로 당신의 임무는 다음을 출력하는 프로그램을 작성하는 것입니다.

3.14

물론 파이의 날을 축하합니다! :)

규칙

어쨌든 원하는대로 할 수 있지만 몇 가지 제한 사항이 있습니다.

  • 프로그램의 어느 곳에서나 산술 연산을 사용할 수 없습니다 . 여기에는 +, -, *, /, %, ^(지수) 등 ... 이것은 또한 (일반적으로 증가하는 것을 포함한다 ++(감소시키는) --) 비트 연산 및 기능 내장 임의 등의 대체로서 사용할 수 sum(), prod(), mod(), double(), pow(), sqrt(), inc(), dec()등 ... (저자의 재량)
  • 숫자 3, 14은 코드의 어느 곳에도 나타나지 않을 수 있습니다.
  • 당신은 할 수 없습니다 당신의 언어를 대체 가질 수있는 미리 정의 된 변수 / 상수를 사용 3, 1하고 4. (저자의 재량)
  • 당신은 또한 할 수 없는 등의 모든 삼각 함수를 사용하여 sin(), cos(), tan(), arcsin(), arccos(), arctan(), sinh(), cosh(), tanh(), 등 ... (저자의 재량)
  • 내장 또는 사전 정의 된 Pi (또는 ) 값을 사용할 수 없습니다3.14 . 웹 요청이 없습니다 .
  • 프로그램 은 어떤 종류의 입력도 요구할 수 없습니다 (실행하는 것 외에).
  • 3.14당신이 출력 할 수 있는 유일한 것입니다, 그것은 더 길거나 더 큰 출력의 일부가 될 수 없습니다.

우승자

4 월 18 일 에 바이트 수가 가장 적은 답이 이깁니다. 행운을 빕니다!

영리한 마음에서 영리한 답변을 기대합니다! Malbolge 누군가? :피


3
^비트 XOR 연산자가 아니라 지수 연산자 임을 명확히 할 수 있습니다 .
ace_HongKongIndependence

2
비트 연산자가 허용됩니까?
ProgramFOX

1
@ProgramFOX 글쎄, 그것들은 정상적인 작업을 대신 할 수 있기 때문에 아닙니다. 허용되지 않습니다. 글을 수정하겠습니다.
kukac67

1
웹 요청이 허용 되었습니까?
swish

7
@swish : 그 목록에 속한 때문에, 웹 요청을 사용하지 않을 더 이상 재미 있습니다 표준 "허점"
ProgramFOX

답변:


25

CJam- 8 6

S`,'.E

CJam은 GolfScript- http: //sf.net/p/cjam과 비슷한 새로운 언어 입니다.
설명은 다음과 같습니다.

S공백으로 사전 초기화 된 변수 ( "")
`는 마지막 값의 문자열 표현을 생성합니다.-정확히 " "(3 자)
,문자열 길이를 계산합니다 (3)
'.도트 문자
E는 14로 사전 초기화 된 변수입니다. 3, 1 및 4는 허용되지 않지만 14에 대해서는 아무 말도하지 않습니다 :)

백틱 아이디어에 대한 Doorknob의 크레딧


1
@ Brilliand의 사용을 수락합니다 E.
kukac67

6
@ kukac67 아직 공식 릴리스를하지는 않았지만 (오늘 출시 예정), 현재 CJam 코드를 hg를 통해 사용할 수있게했습니다. 질문을 게시하기 하루 전날 CJam 코드를 얻으면 프로그램이 올바르게 실행 되므로이 문제를 해결하기 위해 변경하지 않았습니다. 그러나 나는 어쨌든 정말로 신경 쓰지 않을 것입니다.
aditsu

33
HQ9 + π ... 개발 시간
Nzall

2
@AnonymousPi 모든 사람이 선택한 답변에 대해 자유롭게 투표 할 수 있습니다. 그들이 짧지 않더라도 다른 답변에 더 깊은 인상을 받았을 수도 있습니다.
aditsu

2
왜 14로 사전 초기화 된 변수가 있습니까?
user2357112

113

PHP-22 바이트

<?=date('n.j',8899e5);

1998 년 Pi Day는 정말 시원했습니다!


13
@ kukac67 : n.j형식이며 8899e51998 년 3 월 14 일의 Unix 타임 스탬프입니다.
ProgramFOX

7
너무 영리한.
Amal Murali

7
을 제거하여 7자를 저장할 수 있습니다 ,8899e5. 일년에 한 번 정확합니다.
Damir Kasipovic

1
@Timo 당신 말이 맞지만 잘못된 숫자 "3";)이 포함되어 있습니다.
Blackhole

18
@Blackhole 20 바이트 : <?=date('w.W',78e5);1970 년 4 월 1 일은 14 번째 주 수요일이었습니다.
primo

92

C, 39

기계가 리틀 엔디안이고 IEEE 부동 소수점 표준을 사용한다고 가정합니다.

main(){printf("%.2f",*(float*)"P@I@");}

재미있는 사실은 즉 "P@I@"실제로 관련이없는 PI것이 아니라 동등 0x40494050있는 표현입니다3.144550323486328

http://ideone.com/uXVEtl


3
꽤 굉장합니다.
wchargin

1
귀하의 코드는 리틀 엔디안 컴퓨터에서 타입 제거를 가정합니다.
Nayuki

@NayukiMinase, 네, 그렇습니다. 지적 할 가치가 있습니다. 또한 IEEE 부동 소수점 표준을 사용한다고 가정합니다.
Michael M.

그리고 그것은 정의되지 않은 행동 (
변이

5
이 코드는 실제로 머신이 Michael의 머신 이라고 가정합니다 . :-)
Konrad Borowski

50

dc , 11 9 바이트

zE[.]znPp
  • z 현재 스택 깊이 (0)를 스택으로 푸시
  • EE 16을 누릅니다 (== 14 10 )
  • [.] 문자열 "."을 누릅니다.
  • z 스택에 현재 스택 깊이 (3)를 밀어 넣습니다.
  • n 팝 3과 숫자로 인쇄
  • P팝 "." 그리고 문자로 인쇄
  • p 팝 14와 개행으로 숫자로 인쇄

산출:

$ dc <<< zE[.]znPp
3.14
$ 

"입력베이스 사용"은 연산자입니까? 그것은 산술 연산과 같은 냄새이지만 여전히 유효합니다.
Brilliand

@Brilliand 기본 전환을 금지하는 질문에는 아무것도 없습니다. 실제로 영업 이익은 여기에 코멘트에서 기본 변환을 장려하는 것으로 보인다 codegolf.stackexchange.com/a/25681/11259
디지털 외상

나는 그것이 유효하다는 것에 동의합니다. 기본 변환이 숫자 구문의 일부가 아닌 연산자 일 때 인라인 데이터와 산술 연산 사이의 경계가 흐려진다 고 생각합니다.
Brilliand

나는 이것이 15 바이트 여야한다고 생각합니까?
등록 된 사용자

9
@AdityaPatil 왜? dc여기 다른 모든 언어와 마찬가지로 언어와 통역사입니다. dc -e 그 통역사의 호출 일뿐입니다. 9 바이트 프로그램을 파일에 쉽게 저장하고 실행할 수 dc pi.dc있었습니다. 이 바이트 수를 계산해야하는 경우 다른 모든 언어에도 동일하게 적용되어야합니다. 예를 들어 python 모든 파이썬 항목 또는 ruby golfscript.rb 모든 골프 스크립트 항목에 포함하십시오. 특별한 옵션을 전달할 필요가없는 한 여기에 합의 된 협약에는 이러한 협약이 포함되지 않는다고 생각합니다.
Digital Trauma

42

자바 스크립트 ( ES5 ) 20 바이트

m.buettner의 JS 솔루션 변형

(x='.'+0xE).length+x

편집 : JavaScript ( ES5 ) 18 바이트

Base64 디코드 기능 사용에 대한 ComFreek의 아이디어 변형.

atob('Mw')+'.'+0xE

편집 : Javascript ( ES5 ) 16 바이트

단항 +연산자가 문자열을 숫자로 캐스트 할 수 있으면 다음과 같이 줄일 수 있습니다.

+atob('MDMuMTQ')

와! 정말 영리합니다!
kukac67

9
@NateEldredge 이것은 문자열 연결이며 산술이 아닙니다.
tomsmeding

+여기에 사용이 허용됩니까?
phuclv

1
Javascript 솔루션이 가장 우아하고 atob ( 'My4xNA =='), lol, '4'가 있음을 알 때까지 내 게시물을 게시하려고했습니다.
rdev5 April

1
@ 데니스 당신이 옳아, 여전히 거기에있다. 콘솔에서 결과를 복사하여 붙여 넣으면 거기에도 있습니다. 나는 그것에 만족하지 않으므로 16 바이트 솔루션으로 되돌릴 것입니다.
nderscore

39

하스켈, 41 바이트

호주에서 파이 데이는 언제입니까?

p=(\(a:n:y:t:i:m:e:_)->[m,a,t,e])['.'..]

추가하기 위해 편집 : 다른 Haskell 답변과 마찬가지로 문자열을 출력하므로 따옴표가 있습니다. 점수는 33 점이며 규칙을 엄격하게 준수 할 수 있지만 재미는 떨어집니다.

p=putStr$map([','..]!!)[7,2,5,8]

하하 이것은 좋다!
Ry-

왜 이것이 작동하는지 설명 할 수 있습니까?
yhager

5
나는 이것을 좋아한다. +1. 그러나 기술적으로 ".."는 금지 연산자를 호출한다고 생각합니다. (실제 upvoting도 증가 작업을 호출하므로 금지해야합니다.)
Marc van Leeuwen

나는 실제로 그것에 대해 생각했습니다-나는 더 짧은 대답을했습니다 : p=[2.9,2.92..]!!([0,6..]!!2)... 이것은 ..잘못 보입니다. 그러나 하스켈은 강력하게 형식화되고, 내가 준 대답 증가는입니다 Char하지 Num실제로 금지 것 산술 것은 아니다. fromEnum그런 식으로 사용하려면 문자를 숫자로 다시 변환 해야합니다 . 어쨌든, 내 양심은 분명하다 :)
bazzargh

6
@yhager : [ '.'..]는 문자 시퀀스 "./0123456 ..."(등)입니다. (a : n : y : t : i : m : e : _)는 처음 7 자 ([m, a, t, e])를 4 개를 "3.14"로 재정렬하는 패턴 일치입니다. 이것이 당신이하고 싶은 일임을 알면 올바른 구조의 단어를 찾기 위해 사전을 검색하는 것입니다. 내가 한 ... 예를 들어 다른 쌍은 "가장 추악한 정장"이었습니다. 그럼 당신은 농담을 생각해 :)
bazzargh

32

모스 부호, 33 바이트

morse -d ...-- .-.-.- .---- ....-

기술적으로 말하면 정보는 21 바이트 만 필요합니다.


11
여기 모스 부호로 더 많은 골프 솔루션이 필요합니다 ...
counterclockwis를 중단하는 것은

26
기술적으로 내가 21라고 말하고 싶지만, 말하기 비트 가 아닌 바이트
마이클 M.

14
@Michael Morse 코드는 점, 대시 또는 공백 일 수 있으므로 1 개의 연산을 저장하는 데 1 비트 이상이 필요하지 않습니까?
smcg

5
@smcg ButSpacesAreForWeakPeopleWhoCan'tReadThingsLikeThis
Cole Johnson

8
내가 모르스 코드를 좋아하는만큼 (따라서이 해결책) – 규칙 3에 반대되는 것은 아니다 : "귀하의 언어가 3, 1, 4를 대체 할 수있는 미리 정의 된 변수 / 상수를 사용할 수 없습니다." 또는 규칙 2 : "3, 1 및 4의 숫자는 코드의 어느 곳에도 나타나지 않을 수 있습니다."?
kratenko

27

J- 15 11 10 자

환상적인를 사용하여 짧게 만들었습니다 i:.

6{i:6.28j8

설명 :

  • 6.28j8 -복소수 6.28 + 8i.
  • i:-마법이 일어나는 곳입니다. i:복소수 A + Bi에서 B ≠ 0은 간격 [-A, A]에서 B + 1의 간격이 같은 점을 취합니다.
  • 6{ -인덱스 6에서 요소를 가져 와서 3.14입니다.

이전에는 다음과 같은 말이되지 않았습니다.

|.'.'2}":22b8d5

폭발로 설명 :

         22b8d5  NB. 8d5 in base 22 = 4163
       ":        NB. convert to string
  '.'2}          NB. change character at index 2 to '.'
|.               NB. reverse to make '3.14'

대신에 |.'.'2}":22b8d5반전이 필요없는 숫자를 선택하여 2자를 절약 할 수 있습니다.'.'1}":16bbc6
rationalis

3
@epicwisdom 숫자 3, 1 및 4는 금지됩니다. 41X3인덱스 0과 2에서만 문자를 수정할 수 있기 때문에 양식의 숫자를 사용해야합니다 .
algorithmshark

20

리눅스 명령 줄, 35 바이트

이것은 승리에 가까운 곳이 아니지만 여기에 재미가 있습니다.

ping -w2 67502862|grep -oP '.\..\d'

출력 (2 초 후) :

$ ping -w2 67502862|grep -oP '.\..\d'
3.14
$

질문에서 인용 : "웹 요청 없음"
Doorknob

9
@Doorknob ICMP 에코 요청! = 웹 요청. 어쨌든 핑은 4.6.3.14입니다. 답장을받지 못해 인터넷에서 유용한 정보를 다시받는 것과는 다릅니다.
Digital Trauma

10
@Doorknob 그러나 이것이 여전히 당신을 귀찮게한다면, 우리는 이것을 할 수 있습니다 :;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'. 이렇게하면 TTL이 1로 설정되어 나가는 ICMP 에코가 인터넷 근처에 오기 전에 라우터에 의해 삭제됩니다.
Digital Trauma

1
을 사용하여 9 초를 저장할 수 있습니다 ping -w2 67502862. (내가 w1을 조언하기 전에 거의 규칙을 어 겼기 때문에 닌자 편집.)
lolesque

@lolesque 감사합니다. 그래도 골프 점수를 향상 시키지는 않습니다. ;-)
Digital Trauma

16

골프 스크립트, 18 13 12

'.'.`,\.,n`,

구 버전:

'...','.'.,'....',

매우 예술적이며 단 3 명의 독특한 캐릭터입니다! ;)

작동 방식 :

# cmd   # stack
'...',  # 3
'.'.    # 3 '.' '.'
,       # 3 '.' 1
'....', # 3 '.' 1 4

다음은 12 문자 버전에 대한 설명입니다 (훨씬 더 흥미로운 IMO).

'.' # '.'
.`, # '.' 3
\.  # 3 '.' '.'
,   # 3 '.' 1
n`, # 3 '.' 1 4

때문에 작품 n`,입니다 4이후 n`입니다 '"\n"'. 에 대한 동일한 논리 '.'`,. 또한 문자를 저장하기 위해 새 문자열을 만드는 대신 교체합니다 (@algorithmshark 덕분에).

대체 버전 :

'pi ','.'.,'day!',

또는

'Hi ','.'.,'PPCG',

아니면 그 문자열의 어떤 것이라도 :피


멋진 3 가지 캐릭터, 멋진 :)
aditsu

겠습니까 '.'.`,\.,n`,숯불을 저장하는 일? '.'복제 및 교체 하여 재사용 .
algorithmshark

@algorithmshark 응, 고마워!
Doorknob

이것은 매우 영리합니다! +1
VisioN

이것은 모스 코드 버전 생겼
pwned

14

OP의 답변.

매스 매 티카, 21 20 18

싸구려 ...

Range[2,5,.06][[20]]

또는

Range[2,5,.02][[58]]

그것을 만드는 방법을 알아 냈습니다 18 :

Range[-.86,5][[5]]

하스켈, 49 48 12

(48 줄 바꿈 문자 포함)

p=[-6..]
r=concat$show(p!!9):".":(show$p!!20):[]

r함수 를 호출하여 실행하십시오 .

위의 Mathematica와 같은 방법을 사용하여 GHCi에 입력 할 수 있습니다.

[-2.86..]!!6

자바, 87 86

class P{public static void main(String[]a){System.out.print("tri".length()+"."+0xe);}}

스칼라, 27

Score_Under가 제안한대로 Java에서 번역되었습니다 . (나는 정말 스칼라를 모른다)

print("tri".length+"."+0xe)

아, 0xe영리하다. JS 응답을 향상 시켜도 될까요? ;)
Martin Ender

대부분의 자바는 스칼라로 직접 변환 될 수 있는데, 이는 실제로 바이트를 절약하고자한다면 더 짧습니다. 스크립트로 사용하는 경우 전체는 다음과 같습니다 : print ( "tri".length + "."+ 0xe)
Score_Under

예, 줄리아 [-.86:5][5]에서는 11과 같은 것이 똑같다고 생각했지만 범위가 수학이기 때문에 계산에 포함되지 않았다고 생각했습니다.
gggg

12

배쉬, 50

도움말 / 오류 메시지는 외부 리소스가 아니라 명령 출력입니다.

규칙 남용이 있다면 이것입니다. 도움말 메시지 STDERR가 정확한 명령으로 제공되는 일치 성을 사용합니다.

ping6

길이는 314 자입니다 (적어도 Ubuntu 13.10에서는 iputils-121221). 편집 : 나는 이것이 예상보다 훨씬 덜 이식 가능하다는 것을 알고 있습니다 ...

m=`ping6|&wc -c`
false
o=$?
echo ${m:0:o}.${m:o:2}

첫 번째 줄은 도움말 메시지의 문자 길이를 변수에 저장합니다.

내 다른 답변에서와 같이 다음 몇 줄은 종료 상태 false(매우 이식성이 좋지 않지만 결국 !)를 사용 하여 숫자 1을 얻은 다음 해당 값을 사용하여 마지막 줄에 소수점을 삽입하십시오

산출: 3.14


당신은 천재
여호수아

1
아, 우분투 12.04의 "2.81"(iputils-101006). +1 모두 동일 ;-)
Digital Trauma

내가 따르면 @DigitalTrauma info ping6는 iputils-121221을 가지고

또한 내 체크 아웃 chmod에서이 질문에 대한 -abusing 응답을 codegolf.stackexchange.com/a/25724/16402

2
더 짧은 :ping6|&wc -c|sed 's/./&./'
malkaroee

11

Bash + TeX 28 바이트

TeX를 설치 한 경우 :

tex -v|head -c8|cut -d\  -f2

소프트웨어가 향상됨에 따라 TeX의 버전 번호는 무의식적으로 pi에 접근합니다. 따라서 시간이 지남에 따라이 (부적합) 구현을 사용하여 더 많은 숫자를 인쇄 할 수 있습니다!

tex -v|cut -d\  -f2 | head -n1

2011 년에 3.1415926으로 다시 인쇄되었습니다. 2014 년 1 월 현재 3.14159265를 인쇄합니다.


이것을 사랑해!
gniourf_gniourf

tex -v|grep -oP '.\..\d'4 바이트를 저장 하는 데 사용할 수 있습니다 . (Regex는 DigitalTrauma의 답변 에서 도난당했습니다 .) 어쨌든 +1은 같은 대답을 생각했기 때문입니다.
ace_HongKongIndependence

10

자바 스크립트, 20 바이트

'...'.length+'.'+0xe

결과를 직접 인쇄 할 수 있도록 콘솔에서 사용하십시오. 그렇지 않으면 alert(...)다른 7자를 추가합니다.

내 다른 대답과 마찬가지로 방금 JS에서 훨씬 짧다는 것을 알았습니다.

0xe14 의 사용에 대한 아이디어 는 OP의 종류 허가와 함께 OP의 제출에서 가져옵니다.


1
괜찮아요, 당신은 그것을 사용할 수 있습니다 :)
kukac67

1
대체 20 바이트 솔루션 :(x='.'+0xE).length+x
nderscore

@nderscore 그것은 꽤 깔끔한 생각입니다. 다른 답변으로 게시하면 내 upovote를 얻을 수 있습니다.)
Martin Ender

10

GNU 날짜, 17 바이트

date -d2/5 +%u.%y

이것은 올해 만 작동한다고 보장했지만 이것에 관한 규칙에는 제한이 없습니다. ;-)

+단순히위한 포맷 지시자의 시작을 나타내고있다 date과 산술 가산 아니다. -입력 날짜를 나타내는와 동일 합니다.

산출:

$ date -d2/5 +%u.%y
3.14
$

only guaranteed to work this year괜찮습니다 .. :)
kukac67

10

배쉬, 17 바이트

tr 0 .<<<$[62#MC]

대시, 41 바이트

perl -pechomp,s/./$./<<$


..










.

Bash는 누락 된 결말 마커에 대해 큰 소리로 불평하지만 Dash는 그렇지 않으므로 오류 메시지가없는 Bash 솔루션에는 2 바이트가 더 필요합니다.
Dennis

+1도. @TheDoctor가 upvote 버튼을 클릭하는 것을 잊어 버린 것 같아요?
Digital Trauma

@DigitalTrauma oops ... fixed
TheDoctor

7

배쉬 23 22

seq 2 .02 5|sed -n 58p

쉘 (히스토리 확장 없음) 20

seq 2 .02 5|sed 58!d

seq 2 .06 5|sed -n 20pOP의 Mathematica 답변에서 주어진대로 작동합니다.
user80551

sed 58!d약간 짧습니다.
Dennis

@Dennis 이상한, 그놈 터미널 대용 !d으로 dpkg ...하는 나는 그와 함께 시작 마지막으로 실행 명령했다 d. 잘 작동 ksh하지만 분명히 무언가를 대체하고 zsh있다고 말합니다 zsh: event not found: d.
user80551

Bash의 역사 확장 때문입니다 . 스크립트에 대해서는 기본적으로 비활성화되어 있으므로 동일한 명령을 저장 pi.sh하고 실행 bash pi.sh하면 정상적으로 작동합니다.
Dennis

6

파이썬, 39 또는 28 47 또는 34

(감사합니다. 골프를 쳐서 내려 와서 감사합니다)

print"%s.%s%c"%(len('aaa'),len('a'),52)

+ 다음은 문자열 연결 연산자이며 추가는 아닙니다.

0xeOP 에서 트릭을 복사하면 @psal의 도움을 받아 28자가 있습니다.

print('%X.%s'%(675,0xE))[2:]

이전 버전 :

print str(len('aaa'))+'.'+str(len('a'))+chr(52)

print str(len('aaa'))+'.'+str(0xe)

print"%s.%s"%(len('aaa'),0xe)

두 번째는 인쇄 후 공백을 제거하고 str () 대신 "% s"형식을 사용하여 단축 할 수 있습니다. print"%s.%s"%(len('aaa'),0xe)29 바이트에서 cf. print"%s.%s%c"%(len('aaa'),len('a'),52)39 바이트에서 첫 번째 작업과 동일한 작업을 수행 할 수 있습니다 .
Score_Under 14 :

@Score_Under 아, %s그래도 여전히 사용하는 것이 필요 하다고 생각했습니다 str. 팁 주셔서 감사합니다 :)
ace_HongKongIndependence

1
다른 29 바이트 솔루션 :print('%s,%s'%(0xE9,0xE))[2:]
onionpsy

1
... 및 28 바이트 :print('%X.%s'%(675,0xE))[2:]
onionpsy

5

GolfScript, 8 바이트

'??.'(\(

이 프로그램은 인쇄 할 수없는 ASCII 문자를 포함하므로 여기에 직접 붙여 넣을 수 없습니다. 대신 위 코드의 물음표는 바이트 030E16 진수 로 바꿔야합니다 .

편의상 실제 프로그램의 16 진 덤프가 있습니다. 유닉스 / 리눅스 사용자는이 16 진수 덤프를 통해 xxd -r프로그램을 재구성 할 수 있습니다.

0000000: 2703 0e2e 2728 5c28                      '...'(\(

설명:

  • 프로그램의 처음 5 바이트는 ASCII 코드 3, 14 및 46 (= ASCII 마침표)으로 세 문자를 인코딩하는 작은 따옴표로 묶인 문자열 리터럴을 형성합니다.

  • (문자열에서 첫 번째 문자를 잘라 내고 ASCII 코드 (3)를 스택에 넣습니다. \스택에서 맨 위 두 항목을 바꾸고 문자열을 맨 위로 다시 당기고 두 번째 (는 문자열에서 다른 문자를 잘라 내고 다시 ASCII 코드 (14)를 스택에 밀어 넣습니다 .

프로그램 끝에서 스택 (빈 입력 문자열 제외)은 다음과 같습니다.

3 "." 14

프로그램이 끝날 때 GolfScript 인터프리터의 기본 동작은 스택의 모든 것을 문자열 화하고 인쇄하여 원하는 출력을 얻는 것입니다.


1
스냅! 나는 단지 12 시간 만에 똑같은 생각을했다 . 게시하기 전에 2 페이지를 읽어야한다고 생각합니다 ... 오, 롤백하고 +1합니다.
데니스

5

강타-39

Pi의 처음 몇 자리 숫자는 다음 문장에서 계산할 수 있습니다.

큰 커피 용기를 가질 수 있을까요

소수점 이하 2 자리 만 있으면됩니까?

m=May
i=I
h=have
echo ${#m}.${#i}${#h}


4

펄, 15 20 바이트

print 05706=~s/0/./r
print 0xbc6=~s/0/./r

PI__가 Pi와 관련된 상수가 아닌가?
Llamageddon

상수가 아닙니다. XOR-ed되는 두 개의 문자열입니다.
nderscore

비트 연산자는 허용되지 않습니다.
kukac67

아, 그렇지 않아 글쎄, 내 가설은 간다. 즉, 비트 연산자가 허용되지 않으면 문자열 길이를 계산하는 것보다 더 많은 일이 있습니까?
Llamageddon

다른 기준에 숫자를 사용하는 몇 가지 답변이 있습니다.
kukac67

4

tr + 배쉬, 17 바이트

tr a-j 0-9<<<d.be

-여기 의 문자는 산술 빼기 연산자가 아닙니다. 그들은 범위를 나타냅니다.

산출:

$ tr a-j 0-9<<<d.be
3.14
$

영리하지만 문자 변환은 실제로 숨겨진 산술입니다.
Pierre Arlaud

@ArlaudPierre True, 여기에있는 거의 모든 솔루션이 어떤 식 으로든 숨겨진 산술을 가지고 있다고 주장합니다. 이 답변 중 하나에 대해 실행 된 실제 기계 명령어를 보면, 모든 비트 또는 산술 명령어가 있다고 생각할 것입니다.이 명령어는 명시 적으로 사용되지 않습니다.
Digital Trauma

@ArlaudPierre이 질문에는 문자열 "3.14"가 출력되어야합니다. 언어에 관계없이, 어딘가에서, 이것은 write()호출 또는 유사한 것으로 변질 될 것 입니다. 다른 곳이 없다면 정확한 수의 바이트가 기록되도록하기 위해 커버 아래에 약간의 산술이 있어야합니다. 나는 질문의 요점은 생각 입니다 필요한 연산 / 비트 계산을 숨 깁니다.
Digital Trauma

4

배쉬, 57

이것은 대부분의 답변보다 길지만 시도하는 데 나쁜 것은 없습니다.

f=`echo aaaaaaaaaaaaa|wc -c`;e=`echo aa|wc -c`;echo $e.$f

준다

3.14

3
모든 사람의 대답을 다시 c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
골라서

4

C, 36

main(){printf("%d\b.%o\b",' ','`');}

1
우리가 내 대답과 결합하면 2 바이트를 절약하여 34 점을 얻습니다 .main(){printf("%d\b.%d",' ',0xe);}
vsz

3

자바 스크립트-23 바이트

atob('Mw')+atob('LjE0')

nderscore에게 감사합니다 (의견 참조)!


니스 : DI도 몰랐습니다
kukac67

그것은 포함 4;)
nderscore

@nderscore 아! 네가 옳아! 시겠습니까 btoa()얻기 위해 일을 3.14어떻게 든?
kukac67

@ kukac67 base64 문자 세트는 마침표를 포함하지 않습니다 :(
nderscore

3
23 바이트 "법적"버전 atob('Mw')+atob('LjE0')및 14 바이트 "불법"버전 :atob("My4xNA")
nderscore

3

씨#

 ((int)'ĺ').ToString("#\\.##");

 문자 314이며 사전 정의 된 변수 나 상수가 아닙니다. .ToString은 출력을 숫자, 마침표 및 2 자리 숫자로 형식화합니다.


훌륭하지만 현재 출력되지 않으며 컴파일 할 수 없습니다.
Rudi Kershaw

Console.Write (((int) 'ĺ'). ToString ( "# \\. ##"));
Grax32

3

골프 스크립트, 13 10

{xy}.*'.'\

개선 된 버전의 Ilmari Karonen 에게 감사합니다 !

xy인쇄 할 수없는 문자 (자세한 내용은 http://www.asciitable.com/ 참조 ) ETXSO이며 3 및 14로 디코딩됩니다.

이 코드의 기능은 매우 명확해야합니다.

참고 : 다음 규칙

You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)

ASCII 문자는 변수도 아니고 상수도 아니기 때문에 깨지지 않습니다.


The digits 3, 1, and 4 may not appear anywhere in your code.,Your program cannot require input of any kind (besides running it).
user80551

숫자는 어디에도 나타나지 않습니다. 입력이 없습니다.
Vereos

그리고 마지막 코드는 ...?
user80551

{}.*.{}.*그리고 괄호 안에 2 인쇄 할 수없는 문자를 각각 (존재 asciitable.com ) ETXSO
Vereos

2
이것을 {xy}.*'.'\ 10 자 (영문 10 자)로 줄일 수 있습니다. 그래도 여전히 짧습니다. ;-)하지만 일에 대해 가르쳐 위해 { }.*(그리고 { }.%), 나는 마음에 트릭을 계속해야합니다.
Ilmari Karonen

3

사이트를 처음 접했고 아직 의견을 쓸 수 없으므로 여기에 게시하겠습니다. 이 자바 스크립트 솔루션에 대해 궁금해합니다.

'...'.length+'.'+0xe

그리고이 규칙 :

3.14는 당신이 출력 할 수있는 유일한 것이며, 더 길거나 더 큰 출력의 일부가 될 수 없습니다.

브라우저 콘솔에서이 코드를 실행하면 다음과 같은 결과가 나타납니다.

"3.14"

또는 명령 행에서 Node를 사용하십시오.

'3.14'

하지만이 코드를 실행하면 :

parseFloat('...'.length+'.'+0xe)

나는 얻다:

3.14

Node.js를 사용하여 .js 파일을 실행하면 다음과 같이 쓸 수 있습니다.

console.log('...'.length+'.'+0xe)

그리고 얻다:

3.14

1
결과 값이 될 수있는 유형에는 제한이 없었습니다. 따라서 문자열이나 숫자는 중요하지 않습니다. 문자열 주위의 따옴표는 출력의 일부로 간주되지 않습니다.
nderscore

CodeGolf 및 프로그래밍 퍼즐 @RobertMunn에 오신 것을 환영합니다! 이 답변은 모든 규칙을 준수하므로 유효합니다 ... console문자열을 표시 할 때 따옴표로 묶는 경향이 있음을 명심하십시오 ... 사용 +했지만 산술적으로 사용 하지는 않았지만 연결기로 사용되므로 유효합니다 ... 당신은 사용이 작게 만들었을 수도 alert가 아닌 console.log, 큰 노력을 ...하지만 그렇지. 우리는 당신이 여기에 그것을 좋아 바랍니다 ...
WallyWest

꽤 좋습니다! 언어 이름과 바이트 수 (예 : Javascript, 20)를 추가하는 것을 고려해야합니다.
Vereos

1
감사합니다 에이스, 나는 여기서 규칙을 배우고 있습니다. 의견을 남길 수 없으므로 별도로 게시했습니다.이 규칙 종류의 게시물에 대한 설명이 더 컸습니다. 나는 newb에 대한 모든 사람들의 인내심에 감사한다.
Robert Munn

2

매스 매 티카, 56 바이트

(l=ToString@StringLength@#&)@"..."<>"."<>l@"."<>l@"...."

할 말이 많지 않습니다. 숫자를 문자열 길이로 생성하고 연결합니다.

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