해피 라운드 파이 데이


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.