ハッピーラウンドパイデイ


25

Rounded Pi Dayを祝うために、今日の日付を利用して、円の直径を取り込み、直径に3.1416を掛けて円周を出力するプログラムを作成する必要があります。3.1416は、今日の日付を使用して取得する必要があります。

Input 3
Output 9.4248
etc.

入力として日付を取りません。日付のすべてのコンポーネントを使用する必要はありませんが、piの数字は、Dateオブジェクトをフォーマットするか、日付オブジェクトを使用して取得する必要があります。これまでの回答はよさそうです。

他に何を指定すべきかわからない。これまでのすべての答えは、私が期待していたものを満たしています。

私の制約は、日付のコンポーネントを使用してPiを作成する必要があるということでした。もちろん、コンポーネントを使用し、0を掛けてから3.1416を追加できますが、それは退屈で、貴重な文字を無駄にします!

最短のコードが勝ちます!


61
14/3/16の何がそんなに特別なのですか?
ニール

5
今日の日付を使用して定義します。日付を数値として取得し、それ自体で除算し、事前定義された定数で乗算することができましたpi
ルイスメンドー

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)まで待つべきだと思いますが、それはまったく別の聖戦です。
ダレルホフマン

8
@DarrelHoffmanあなたは私が見るタウの男です。
jmasterx

16
悲しいことに、アメリカ文化圏で唯一のPIデーです。愚かな語彙的に賢明な日付の順序付けを持つヨーロッパ人は、毎年PIデーを迎えることができません。今日、あなたはpi(e)を食べているので、彼らのために悲しい考えを控えてください。
TED

回答:


8

05AB1E、16 13バイト

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

オンラインでお試しください。

残念ながら、floatのバグにより、これは1バイト長くなります:/

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を使用します。
spaghetto

フロートのバグ?
電卓

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でのコードゴルフがはるかに簡単になります。
ジョシュ

12
@tac答えはほとんど関数と同じように振る舞います。ここでのいくつかの答えは、スタンドアロン機能でもあります。mainこの単一の引数マクロを呼び出す方法を示すサンプル関数を提供しても意味がありません。
ジョシュ

1
@tac標準の[code-golf]ルールは、禁止された機能が大丈夫でない限りだと思います。
マインドウィン

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オートコレクトのセパレータとして機能します。これを使用することにより、モジュロを使用し、それでも自分用に1バイト保持できます。

リターン文/ログなし

自動的に計算された最後の値がプログラムによって返されます。リターンボックスで計算した数値を出力します。

そして、これが実行中のgifです!

パイデイgif


8
Javaを忘れて、これは最も冗長な言語になる必要があります
-Downgoat

@Downgoat「英語のように読みやすい」か何かになっているはずだと思います...私たちの仕事の1つでそれを少し使用し、そのようなスクリプトを変更する必要があるときはいつでも本当に嫌いです。
クリスクレフィス

@ChrisCireficeええ、いや-この言語にはいらいらする部分があります。すなわち、ボリュームシステムボリューム。
アディソンクランプ

13

Mathematica + coreutils、20バイト

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

幸いなことに、Mathematicaは外部コマンドの出力を式として解釈します。この場合、出力は有効な浮動小数点数であるため、関数の引数#との乗算が暗示されます。


それは私が存在することを知らなかった組み合わせです。
CalculatorFeline

12

Lua、30 27バイト

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

最初のコマンドライン引数にformatの現在の日付mm.ddyy(実際は)を掛け03.1416ます。


9

Bash + 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.dyGet-暗黙の形式で)フォーマットされた日付で乗算します。これはv2での実行に時間がかかる場合があることに注意してください。これは、を設定する前に可能な置換Date(たとえば、%PATH%環境変数のチェックなど)を繰り返すためGet-Dateです。


あとでスペースをカットできます-fか?
-briantist

1
@briantist悲しいことに、ここではありません。実際のフラグはであるため、PowerShellのパターン認識を悪用しています-Format。(あなたが持っていた場合には、例えばこのようなフラグで、あなただけの明白なことする必要があります-Debugし、-Delimiter潜在的なオプションとして、あなたは区別するために、少なくとも3文字が必要になります)。スペースを削除すると、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へようこそ。だから私はあなたがあなたを落とすことができると確信していますf=
FryAmTheEggman

2
あなたも、さらに行くと行うことができますscan()*as.numeric(format(Sys.Date(),'%m.%d%y'))
MickyT

2
as.double代わりに、as.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#年の下2桁
   s [#すべてを文字列に連結する
  v#eval-> floatに変換
* Q#入力で乗算して円周を取得

5

PHP、45 26 25 24バイト

Windows-1252エンコードを使用

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

次のように実行します。

echo '<?=$argv[1]*date(~‘Ñ•†);' | php -- 3
  • date()代わりにを使用して19バイトを保存しましたDateTime::format
  • echoタグを使用してバイトを保存しました
  • ISO-8859エンコーディングを使用してフォーマット文字列を無効にすることでバイトを保存したため、二重引用符は不要です。CLIから実行すると、端末が少し混乱する可能性がありますが、動作します。

register_globalsをtrueにすると、URLで$nvia /?n=3を使用できます。
マーティン

@Martijnこれには、PHP 4.1またはphp.iniファイルを使用して設定する必要があります。前に言ったarossは、そのような方法を避けたいと言っています。
イスマエルミゲル

4

Python 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

JavaScript、41 39文字

これは、独自のFirefox専用の方法を使用します。

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

おかげで:

サンプル実行(Firefox Webコンソール):

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

注:これはFirebugコンソールでは失敗します。Firebugのは、形質転換、テンプレート文字列にいくつかの拡張を行うと思わ`%m.%d%y``%__fb_scopedVars(m).d%y`コードに渡す前に。


1
-2バイト:d=>new Date().toLocaleFormat`%m.%d%y`*d
イスマエルミゲル

ああ。[facepalm]なぜかわからない、私は通常そのトリックを忘れる。私はテンプレート文字列を定期的に使用していますが。
マナトワーク

知っている。私は本当にもらえません。私が取得しようとしているのは、newそこからそれを削除する方法です。
イスマエルミゲル

Firefoxで試してみたところ、うまくいきました。コンソールからコピーアンドペーストしました。('...')2つのバックティックに置き換えたので、それは2バイトです。
イスマエルミゲル



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

Python 3、74 54バイト

Loovjo's Answerのようなdatetimeの代わりにtimeモジュールを使用する

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
アディソンクランプ

私は(メリーランド州で多分今夜)時間があるときに実行されます
OldBunny2800

2

Pyke16 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であると推測していますか?言語仕様へのリンクを投稿できますか?
ロバートフレイザー


不思議に思って、Pykeはどのエンコーディングを使用していますか?UTF-8の場合、これは16バイトです。
OldBunny2800

1
@ OldBunny2800関係ありません。この場合は、すべてのコード・ポイントは、によると255を下回っているとして、古き良きASCIIを使用していますmeta.codegolf.stackexchange.com/a/5879/32686、答えはノーコストでそれ自身のエンコーディングを定義することができます
ブルー

1

JavaScriptの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
Ismael Miguel

1

Tcl / Tk、58バイト

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

(これは完全なプログラムです。明示的なputsステートメントをチートして削除したい場合、それはたった51バイトです。

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

1

Java 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()));}
アディソンクランプ

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 Basic、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を介して入力を受け取る関数です。たとえばY1、Y変数の1つにY1([number])保存し、ホーム画面でlike を呼び出します。


経由での入力が許可されているという意見の相違があるようAnsです。
AdmBorkBork

これはわずか13バイトですか?入力Aをカウントせず、22文字をカウントします。
OldBunny2800

1
@ OldBunny2800 TI-BASICはトークンベースであり、各アトムは1または2バイトとして表されます。
アダム

@ OldBunny2800コードページはこちらです。
リルトシアスト

1

APL、19バイト

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

⎕TSある2016 3 14 12 34 56 789すなわち月は14 回目、2016右12:35前に
文字列にmakeは、つまりは'2016 3 14 12 34 56 789'
8↑2↓2つ(最初にドロップし'20'た後(次の8を取る)'16 3 14 '
2⌽、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

⎕TS2016 3 14 12 34 56 789、つまり3月14日、RD、2016右12:35前に
文字列にメイク、すなわち'2016 3 14 12 34 56 789'
7↑2↓最初の2(ドロップ'20'その後、(次の7を取る)'16 3 14'
2⌽、2つの文字を回転させる与える' 3 1416'
(数にメイクを3 1416
、リストを逆に与えます1416 3
1E¯4⊥ベースで評価¹/ ₁₀₀₀₀、= 1416×0.01¹+ 3×0.01⁰= 0.1416 + 3 = 3.1416
⎕×入力と乗算


これはどのように作動しますか?
OldBunny2800

1
@ OldBunny2800クリア?
アダム

はい、ありがとうございますが、UTF-8では38バイトです。
OldBunny2800


1
@ OldBunny2800 APLは独自のコードページを使用します。これらの文字はそれぞれ1バイトです。(これは... ASCIIの心の前にあった)
spaghetto
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.