해피 라운드 파이 데이


25

Rounded Pi Day를 축하하려면 오늘 날짜를 활용하여 원의 지름을 가져 와서 지름에 3.1416을 곱하여 오늘 날짜를 사용하여 3.1416을 얻어야하는 둘레를 출력하는 프로그램을 만들어야합니다.

Input 3
Output 9.4248
etc.

날짜를 입력으로 사용하지 않습니다. 날짜의 모든 구성 요소를 사용할 필요는 없지만 pi의 숫자는 Date 객체를 형식화하거나 Date 객체를 사용하여 가져와야합니다. 지금까지 답변이 좋아 보인다.

무엇을 지정할지 잘 모르겠습니다. 지금까지의 모든 대답은 내가 기대했던 것을 충족시킵니다.

내 제약 조건은 Pi를 만들려면 날짜의 구성 요소를 사용해야한다는 것입니다. 물론 구성 요소를 사용하고 0을 곱한 다음 3.1416을 추가 할 수는 있지만 지루하고 귀중한 문자를 낭비합니다!

최단 코드 승리!


61
14/3/16의 특별한 점은 무엇입니까?
Neil

5
오늘 날짜를 사용하여 정의하십시오 . 날짜를 숫자로 가져 와서 스스로 나누고 미리 정의 된 상수를 곱할 수 있습니다.pi
Luis Mendo

7
@Neil : 3/14/16 및 31/4/16은 D / M / Y 형식의 유효한 실제 날짜가 아니기 때문입니다. 14 개월이 없으며 4 월에는 30 일밖에 없습니다. 개인적으로 우리는 6/28/32 (M / D / Y) 또는 아마도 6/2/83 (D / M / Y)까지 기다려야한다고 생각하지만 그것은 완전히 다른 거룩한 전쟁입니다.
Darrel Hoffman

8
@DarrelHoffman 당신은 내가 본 타우 사람입니다.
jmasterx

16
슬프게도, 미국 문화 지역에서의 유일한 PI 데이. 어리석게도 사 전적으로 합리적인 날짜 주문을하는 유럽인들은 매년 PI 일을 갖지 못합니다. 오늘 당신의 파이 (e)를 먹을 때 그들에 대한 슬픈 생각을 아끼십시오.
TED

답변:


8

05AB1E, 16 13 바이트

žfžežg¦¦J*4°/

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

불행히도 수레가있는 버그는이 바이트를 더 길게 만듭니다 : /

3 바이트를 골라 낸 Adnan에게 감사합니다.

설명

žfžežg¦¦J*4°/
žfžežg         push month day year
      ¦¦       slice off the first two chars from the year (2016 -> 16)
        J      join them together into a number
         *     multiply by input
          4°/  divide by 1e4

¦¦대신에 2000-3 바이트가 짧습니다;)
Adnan

11
+1 žfžežg좋은 체코 어 단어처럼 들린다 :)
yo '

UTF-8에서는 총 19 바이트입니다.
OldBunny2800

3
@ OldBunny2800 05AB1E는 인코딩에 CP1252를 사용합니다.
스파게티

수레와 버그?
CalculatorFeline

19

C, 32 바이트

#define f(d)d*time(0)/464083315.

조금 더 정확성을 잃는 것이 괜찮다면, 나는이 게시물의 시점에서 소수점 이하 4 자리까지 여전히 약 29 바이트로 줄일 수 있습니다.

#define f(d)d*time(0)/46408e4

#include<time.h>?
고양이

또한 실행 코드는 어디에 있습니까? 이것은 전처리 기가 복사 / 붙여 넣기를하기위한 것입니다. 스 니펫. 우리는 여기서 실행 가능한 구현을 좋아합니다.
고양이

3
@tac 대부분의 C 컴파일러는 #include표준 라이브러리 헤더 를 요구하지 않습니다 . 그것들을 수동으로 포함하는 것은 거의 항상 좋은 생각이지만, 생략하면 C에서의 코드 골프가 훨씬 쉬워집니다.
Josh

12
@tac 대답은 대부분 함수와 동일하게 동작합니다. 여기에 대한 몇 가지 대답은 독립형 기능입니다. main이 단일 인수 매크로를 호출하는 방법을 보여주기 위해 샘플 함수를 제공하는 요점을 보지 못했습니다 .
Josh

1
@tac 표준 [code-golf] 규칙은 금지 된 기능이 정상이 아닌 한 규칙이라고 생각합니다.
Mindwin

14

AppleScript, 122120 바이트

set a to current date
(display dialog""default answer"")'s text returned*(month of a+day of a*.01+year of a*1e-4 mod.01)

변수 a

변수 a는 날짜 객체입니다. 나는 모든 날짜 정보를 그것으로부터 벗어났다.

월, 일 및 연도

월, 일 및 연도 호출은 실제로 문자열을 반환하는 객체를 반환합니다. 숫자로 올바르게 사용하기 위해 자동으로 숫자로 캐스트하는 수학 연산으로 양쪽에 둘러 쌉니다.

1e-4

1e-4보다 짧은 바이트 .0001입니다.

mod.01

.AppleScript 자동 고침의 구분 기호로 사용됩니다. 이것을 사용하면 모듈로를 사용하고 여전히 바이트를 유지할 수 있습니다 .

반품 문 / 로그 없음

프로그램이 자동으로 계산 한 마지막 값을 반환합니다. 반환 상자를 통해 계산 된 숫자를 출력합니다.

그리고 여기에 달리는 gif가 있습니다!

pi day gif


8
Java를 잊어 버리십시오. 이것은 가장 장황한 언어입니다
Downgoat

@ Downgoat 나는 "영어처럼 읽을 수 있어야한다"고 생각합니다 ... 우리는 내 작업 중 하나에서 조금 사용하고 그러한 스크립트를 변경해야 할 때마다 정말 싫어합니다.
Chris Cirefice

@ChrisCirefice 예, 아니오-이 언어에는 성가신 부분이 있습니다. 즉 볼륨 시스템 볼륨입니다.
Addison Crump

13

Mathematica + coreutils, 20 바이트

<<"!date +%m.%d%y"#&

다행스럽게도 Mathematica는 외부 명령의 출력을 표현식으로 해석합니다. 이 경우 출력은 유효한 float이므로 함수 인수와의 곱셈 #이 암시됩니다.


그것은 내가 존재하지 않았던 조합입니다.
CalculatorFeline

12

루아, 30 27 바이트

print(...*os.date"%m.%d%y")

첫 번째 명령 줄 인수에 현재 날짜 형식을 mm.ddyy실제로 곱하십시오 03.1416.


9

배쉬 + BC, 25 20 바이트

date +%m.%d%y\*$1|bc

5 바이트 절약을위한 manatwork 덕분 입니다.

용법:

$ ./pi-round.sh 3
9.4248

여기에 문자열 표기법이 너무 깁니다 :date +%m.%d%y\*$1|bc
manatwork

@manatwork 당신이 맞습니다! 나는 같은 것을 가지고 놀았지만 그것을 결합하는 방법을 알 수 없었습니다. 감사!
andlrc

6

PowerShell v2 +, 46 28 25 바이트

$args[0]*(Date -F "M.dy")

꽤 직설적 인. 입력을 취하고 형식이 지정된$args[0] 날짜 ( 암시 적) M.dy 곱합니다 Get-. v2에서 설정하기 전에 가능한 대체 변수 Date(예 : %PATH%환경 변수 확인 등)를 반복하므로 v2에서 실행하는 데 시간이 오래 걸릴 수 있습니다 Get-Date.


당신은 공간을 잘라 후 수 -f있습니까?
briantist

1
@briantist 슬프게도, 여기가 아닙니다. 실제 플래그는이므로 PowerShell의 패턴 인식을 남용합니다 -Format. (당신이 가지고있는 경우, 예를 들어 같은 플래그와 함께, 당신은 명확해야 -Debug하고 -Delimiter잠재적 인 옵션으로, 당신은 구별하기 위해 적어도 세 글자를해야합니다). 공백을 제거하면 PowerShell에서 플래그를 구문 분석하려고 -F"M.dy"하지만 일치하는 인수를 찾을 수 없으므로 오류가 발생합니다.
AdmBorkBork

아아, 나는 지금 그것을 본다. 그것이 긴 하루를 보낸 후 기차에서 이것을 읽은 것입니다. 나는 그것을 -f연산자 로 해석했다 . 이제 완전히 이해됩니다.
briantist

6

R 3.2.4, 55 51 47 바이트

편집scan @FryAmTheEggMan을 사용할 수 있다는 것을 깨달았습니다 . @MickyT 덕분에 4 바이트가 줄었습니다.

scan()*as.numeric(format(Sys.Date(),'%m.%d%y'))

골프에서 첫 시도. 행복한 파이의 날!


1
PPCG에 오신 것을 환영합니다 :) 나는 R 프로그래머가 아니지만 명명 된 함수를 제공 할 필요는 없으며 함수로 평가되는 표현식 만 제공하면됩니다. 따라서을 삭제할 수 있다고 확신합니다 f=.
FryAmTheEggman

2
더 나아가서 할 수 있습니다scan()*as.numeric(format(Sys.Date(),'%m.%d%y'))
MickyT

2
as.doubleas.numeric추가 바이트 를 절약하는 대신
Flounderer

5

GNU Awk, 23 자

$0*=strftime("%m.%d%y")

샘플 실행 :

bash-4.3$ awk '$0*=strftime("%m.%d%y")' <<< 3
9.4248

5

Pyth, 19 바이트

*Qvs[.d4\..d5>2`.d3

여기 사용해보십시오!
물론 2016-03-14에만 작동합니다.

설명

* Qvs [.d4 \ .. d5> 2`.d3 # Q = 입력

     .d4 # 현재 달
        \. 월과 일 사이의 점
          .d5 # 현재 날짜
             > 2`.d3 # 연도의 마지막 두 자리
   s [# 모든 것을 문자열로 연결
  v # eval-> 부동으로 변환
* Q # 둘레를 얻기 위해 입력과 곱하기

5

PHP, 45 26 25 24 바이트

Windows-1252 인코딩 사용

<?=$argv[1]*date(~‘Ñ•†);

다음과 같이 실행하십시오.

echo '<?=$argv[1]*date(~‘Ñ•†);' | php -- 3
  • date()대신 에 사용하여 19 바이트 절약DateTime::format
  • 에코 태그를 사용하여 바이트를 저장했습니다
  • ISO-8859 인코딩을 사용하고 형식 문자열을 무시하여 바이트를 저장하므로 큰 따옴표가 필요하지 않습니다. CLI에서 터미널을 실행할 때 약간 엉망이 될 수 있지만 작동합니다.

register_globals를 true로 가정 하면 URL에서 $nvia /?n=3를 사용할 수 있습니다 .
Martijn

@Martijn PHP 4.1이 필요하거나 php.ini파일을 사용하여 설정 하십시오. aross는 전에 그런 방법에서 벗어나고 싶다고 말했다.
Ismael Miguel

4

파이썬 2, 58 자

import time
print float(time.strftime("%m.%d%y"))*input()

시도 해봐!

설명:

import time                                   # Import time time module
print                                         # Print the following
      float(                                  # Cast to float
            time.strftime("%m.%d%y"))         # Format the time as MM.DDYY
                                     *input() # Multiply by input

4

자바 스크립트, 41 39 자

이것은 독점적 인 Firefox 전용 방법을 사용합니다.

d=>new Date().toLocaleFormat`%m.%d%y`*d

덕분에 :

샘플 실행 (Firefox 웹 콘솔) :

> (d=>new Date().toLocaleFormat`%m.%d%y`*d)(3)
9.4248

참고 : Firebug Console에서는 실패합니다. 방화범이 변형, 템플릿 문자열에 대한 몇 가지 확장을 수행하는 것 같습니다 `%m.%d%y`으로 `%__fb_scopedVars(m).d%y`코드에 전달하기 전에.


1
-2 바이트 :d=>new Date().toLocaleFormat`%m.%d%y`*d
Ismael Miguel

오. [facepalm] 왜 그런지 잘 모르겠습니다. 템플릿 문자열을 정기적으로 사용하지만.
manatwork

알아. 나는 정말로도 얻지 못한다. 내가 얻는 것은 new거기에서 그것을 제거하는 방법 입니다.
Ismael Miguel

Firefox에서 시도했지만 정상적으로 작동했습니다. 콘솔에서 복사하여 붙여 넣었습니다. ('...')2 개의 백틱으로 대체 되었으므로 2 바이트입니다.
Ismael Miguel


2

매스 매 티카, 54

.0001FromDigits[Now@{"Month","Day","YearShort"},100]#&

2

Vitsy + coreutils, 19 바이트

'y%d%.m%+ etad',W*N

설명:

'y%d%.m%+ etad',W*N
'y%d%.m%+ etad'       Push 'date +%m.%d%y' to the stack.
               ,      Execute as shell.
                W     Grab input from STDIN and eval it.
                 *    Multiply the top two items
                  N   Output as a number.

런타임의 exec 메소드를 사용하므로 안전 모드에서 실행할 수 없습니다.




2

파이썬 3, 74 54 바이트

Loovjo의 답변 과 같은 날짜 시간 대신 시간 모듈 사용

import time
lambda n:n*float(time.strftime('%m.%d%y'))

이전 솔루션

from datetime import*
lambda n:n*float(datetime.now().strftime('%m.%d%y'))

2
@Zenadix 메타 합의 는 명명되지 않은 기능이 정상이라는 것입니다.
FryAmTheEggman

2

Google 스프레드 시트, 13 바이트

바이트는 문자 당 1 바이트, 지정된 입력 셀을 제외하고 셀당 0 바이트, 2 바이트로 계산됩니다. 수식을 시작하는 등호는 계산되지 않습니다. (이것이 표준인지 잘 모르겠습니다. 잘못되면 정정하십시오.)

코드를 보려면 스 니펫을 실행하십시오.

table {
  empty-cells: show;
}
table,
th,
td {
  border: 1px solid black;
}
<table border="1">
  <tr>
    <th></th>
    <th>1</th>
    <th>2</th>
    <th>3</th>
  </tr>
  <tr>
    <td>A</td>
    <td>&lt;input></td>
    <td style="text-align:right">3.1416</td>
    <td style="font-family:'Ubuntu Mono',monospace">=<span style="color:rgb(257,142,29)">A1</span>*<span style="color:rgb(126,55,148)">A2</span>
    </td>
  </tr>
</table>

Google 스프레드 시트에서 자신의 날짜 형식을 정의 할 수 있기 때문에 작동합니다. 나는 그것을 만들었습니다 <month>.<day><year>.


이 스코어링 시스템에 대해 메타를 묻고 싶을 수도 있습니다. ; P
Addison Crump

내가 시간이있을 때 할 것이다 (메릴랜드에서 오늘 밤)
OldBunny2800

2

파이크 , 16 15 바이트, ASCII 인코딩

C867wä%J"bT4^/*

설명:

C867            - b,c,d = year, day, month
    wä          - a = base_96("ä") - 100
      %         - a = a%b
       J"       - a = "".join([a,c,d])
         b      - b = base(a, 10)
          T4^   - a = 10^4
             /  - a = a/b
              * - imp_print(a*eval_or_not(input))

또는 11 바이트 (비경쟁), (문자열 단일, 2 자리 연도, 문자열 합산 가능)

C856\.R3sb*

설명:

C856        - a,b,c = 2d_year, day, month
    \.      - d = "."
      R3    - a,b,c = b,c,a
        s   - a = sum(a,b,c)
         b  - a = base(a, 10)
          * - imp_print(a*eval_or_not(input))

나는 이것이 pyke.sourceforge.net 과 다른 Pyke라고 생각합니다 . 언어 사양에 대한 링크를 게시 할 수 있습니까?
Robert Fraser


Pyke는 어떤 인코딩을 사용하는지 궁금합니다. UTF-8이면 16 바이트입니다.
OldBunny2800

1
@ OldBunny2800 중요하지 않습니다. 이 경우 모든 코드 포인트가 255 미만이므로 오래된 ASCII를 사용합니다. meta.codegolf.stackexchange.com/a/5879/32686 에 따르면 답변은 무료로 자체 인코딩을 정의 할 수 있습니다.
Blue

1

자바 스크립트 ES6, 68 66 바이트

dev-null 덕분에 2 바이트가 절약되었습니다!

x=>x*((a=new Date).getMonth()+1+"."+a.getDate()+(a.getYear()-100))

익명의 기능. 일부 용도 :

f(1)    == 3.1416
f(5)    == 15.708
f(f(2)) == 19.73930112

1
다음을 사용하여 시도해야with
이스마엘 미구엘에게

1

Tcl / Tk, 58 바이트

puts [expr {[gets stdin]*[clock f [clock se] -f %N.%d%g]}]

(완전한 프로그램입니다. 명시 적 puts진술 을 속이고 제거하려면 단지 51 바이트입니다. tclsh를 시작하고 다음을 직접 입력 / 붙여 넣기해야합니다.)

expr {[gets stdin]*[clock f [clock se] -f %N.%d%g]}

1

자바 114 바이트

public double p(double d){
  return (d*Double.parseDouble(new SimpleDateFormat("MM.ddyy").format(new Date())));
}

96 바이트 :float p(float d){return d*Float.parseFloat(new SimpleDateFormat("MM.ddyy").format(new Date()));}
Addison Crump

1

라켓, 112 자

(define d(seconds->date(current-seconds)))(*(read)(+(date-month d)(*(date-day d).01)(*(-(date-year d)2e3)1e-4)))

표준 리더 구문의 입력에서 숫자를 읽습니다.


1

TI-84 기본, 30 바이트

TI-83 / 84 계산기에서 작동합니다. E는 과학적 표기법 토큰이며 ~는 음수 토큰입니다.

Prompt D:getDate:D(Ans(2)+E~4Ans(1)-.2+.01Ans(3

테스트 사례

D=?3
          9.4248



1

TI-BASIC, 16 13 9 바이트

Xround(π,1+min(getDate

π최소값과 같은 소수 자릿수로 반올림 {month,day,year}한 다음 입력 값을 곱합니다.

이것은 X를 통해 입력을받는 함수입니다. 예를 들어 Y- 변수 중 하나에 저장 Y1한 다음 Y1([number])홈 화면 에서처럼 호출 하십시오.


입력을 통한 입력 이 허용 된다는 의견일치하지 않는 것 같습니다 Ans.
AdmBorkBork

이것은 어떻게 13 바이트입니까? 입력 A를 세지 않고 22자를 셉니다.
OldBunny2800

1
@ OldBunny2800 TI-BASIC은 토큰 기반이며 각 아톰은 1 또는 2 바이트로 표시됩니다.
Adám

@ OldBunny2800 코드 페이지는 여기에 있습니다 .
lirtosiast

1

APL , 19 바이트

⎕×0.01⊥⌽⍎2⌽8↑2↓⍕⎕TS

⎕TS이다 2016 3 14 12 34 56 789, 즉 3 월 14 번째 , 2016 우측 오후 12시 35분 전에
문자열로 make가, 즉 '2016 3 14 12 34 56 789'
8↑2↓이 (첫 번째 드롭 '20'다음 (다음 8을) '16 3 14 ')
2⌽, 두 개의 문자를 돌려주는 ' 3 14 16'
(숫자로 메이크업을 3 14 16)
주는 목록을 반대 16 14 3
0.01⊥베이스 평가 ¹/₁₀₀ , = 16 × 0.01² + 15 × 0.01¹ + 3 × 0.01⁰ = 0.0016 + 0.15 + 3 = 3.1416
⎕×입력과 곱하기

또는

⎕×1E¯4⊥⌽⍎2⌽7↑2↓⍕⎕TS

⎕TS있다 2016 3 14 12 34 56 789, 즉 3월 14일 번째 2016 우측 오후 12시 35분 전에
문자열로 메이크업, 즉 '2016 3 14 12 34 56 789'
7↑2↓처음 두 (드롭 '20'다음 (다음 7을) '16 3 14')
2⌽, 두 개의 문자를 돌려주는 ' 3 1416'
(숫자로 메이크업을 3 1416)
주는 목록을 반대 1416 3
1E¯4⊥베이스 평가 ¹/ ₁₀₀₀₀, = 1416 × 0.01¹ + 3 × 0.01⁰ = 0.1416 + 3 = 3.1416
⎕×입력과 곱하기


어떻게 작동합니까?
OldBunny2800

1
@ OldBunny2800 취소?
Adám

예, 감사합니다. 그러나 UTF-8에서는 38 바이트입니다.
OldBunny2800


1
@ OldBunny2800 APL은 자체 코드 페이지를 사용합니다. 각 문자는 1 바이트입니다. (이것은 ASCII를 염두에 두었을 때 ...)
spaghetto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.