Output dengan jumlah digit pi yang sama dengan panjang kode


9

Tantangan Anda adalah mencetak xdigit pi di manax panjang kode Anda.

Contoh:

Source code (length) -> output
foo!        (4)         3.141
foobar      (6)         3.14159
kinda long  (10)        3.141592653
+++++       (5)         3.1415
123456789   (9)         3.14159265

Anda dapat menggunakan untuk menentukan jumlah digit yang perlu Anda cetak. Perhatikan bahwa titik desimal tidak dihitung sebagai digit pi - jadi kode panjang 3 harus memiliki outputfloor(π/10 * 10code_length) / 10code_length - 13.14 , panjang 4.

Aturan:

  • Panjang kode Anda harus lebih besar dari tiga karakter.
  • Anda tidak boleh menggunakan celah standar apa pun.
  • Anda dapat menggunakan metode output standar yang diizinkan.
  • Anda mungkin tidak membaca sumber Anda untuk menentukan panjang kode.
  • Anda tidak boleh menggunakan konstanta pi builtin.
  • Pi harus sepenuhnya akurat dan tidak diperkirakan.
  • Titik desimal dalam output diperlukan. Jika Anda memilih untuk menghasilkan melalui nilai balik, Anda harus mengembalikan integer titik mengambang.
  • Tujuan dari tantangan ini adalah untuk menemukan solusi terpendek dalam setiap bahasa, bukan bahasa terpendek untuk solusi. Jangan takut untuk memposting solusi dalam bahasa ketika solusi yang lebih pendek diposting dalam bahasa yang sama selama solusi Anda menggunakan metode yang berbeda.

... jadi apakah ini valid atau tidak?
Jonathan Allan

(sunting ^ ini genap (pembulatan))
Jonathan Allan

“Panjang kode” ← dalam byte atau karakter?
Lynn

@ Lynn Bytes, seperti biasa.
MD XF

Apakah 3diizinkan?
NoOneIsHere

Jawaban:


3

Japt , 9 4 byte

Sesingkat itu bisa diijinkan :)

Termasuk yang tidak bisa dicetak (umpan garis terbalik, kode char 141) setelah #.

3.#

Menguji

Dalam Japt, setiap karakter berikut #dikonversi ke kode karakternya dan ditambahkan ke setiap angka atau titik desimal yang dapat mendahuluinya, dalam hal ini3.




6

VBA (Excel), 15 byte

MsgBox 4*Atn(1)

Output: 3.14159265358979

Saya pikir ini tidak dapat diterima karena saya golf hanya agar sesuai dengan panjang PI. Panjang un-golfed adalah 17 byte. D:


1
Sepertinya Anda belum disambut, jadi, selamat datang di situs ini!
MD XF

Oh, terima kasih, tuan! : D
remoel

Bukankah Atnarctangent? Saya tidak yakin apakah ini diizinkan ... meminta OP
JungHwan Min

Saya pikir OP hanya merujuk untuk PI internal. Salahku.
remoel

5

Jelly , 6 byte

3;⁽4ƒṾ

Cobalah online!

Mencetak 3,14159dengan pemisah desimal "Eropa" yang diizinkan ,,.

Bagaimana?

3;⁽4ƒṾ - Main link: no arguments
3      - literal 3                3
  ⁽4ƒ  - base 250 literal 14159   14159
 ;     - concatenate              [3,14159]
     Ṿ - unevaluate               ['3', ',', '1', '4', '1', '5', '9']
       - implicit print           3,14159

1
Daftar digit itu terlihat aneh. Saya pikir ada tambahan ,'di sana.
Jonathan Frech

1
Anda dapat melakukan -ÆAær5dan menggunakan .alih-alih ,, tetapi kemudian itu akan sama dengan solusi Jelly saya.
Zacharý



4

Desmos , 130 byte

f\left(\right)=\frac{\operatorname{floor}\left(10^{128}\cdot 4\sum_{k=1}^{9^9}\frac{\left(-1\right)^{k+1}}{2k-1}\right)}{10^{128}}

Kode sumber untuk ini (Yang dapat diakses dengan menyalin dan menempel di dalam dan di luar Desmos) tidak optimal ketika dibuat menggunakan editor Desmos, jadi beberapa byte spasi putih akan diturunkan jika memungkinkan.

Ini mendefinisikan fungsi fyang tidak mengambil argumen pengembalian pi, dihitung menggunakan Urutan Gregory untuk k=9^9 (Saya tidak dapat mengkonfirmasi ini cukup akurat, namun saya percaya bahwa itu, dapat dibuat lebih akurat dengan nilai lebih besar dari k ) itu kemudian lantai hasilnya ke 128tempat desimal, yang, di samping 3., adalah panjang kode sumber.

Cobalah online!


Bagaimana orang benar-benar melihat hasilnya - saya hanya melihat 3.14159265617, apakah saya mencari di tempat yang salah; apakah saya perlu menekan tombol?
Jonathan Allan

Desmos tidak mencetak secara default ke tempat desimal sebanyak yang disediakan, tetapi nilainya harus tetap akurat.
ATaco

1
Itu mengecewakan karena tantangannya adalah "mencetak ..."
Jonathan Allan

1
"Titik desimal dalam output diperlukan. Jika Anda memilih untuk output melalui nilai kembali, Anda harus mengembalikan integer titik mengambang." yang membuat ini valid.
ATaco

Saya merasa maksud dari pernyataan itu bukan untuk memungkinkan kurang presisi tetapi untuk memastikan pemisah desimal. Pikiran Anda, saya tidak berpikir jawaban Anda buruk.
Jonathan Allan



3

CJam , 5 byte

3.14F

Cobalah online!

Bagaimana itu bekerja

3.14   e# Push 3.14.
    F  e# Push 15.

Kalau saja Anda bisa melakukannya 3.E. : P, bagaimanapun juga, penyalahgunaan IO yang luar biasa.
Zacharý

Akan memposting 3'.EF, tetapi kemudian saya melihat jawaban ini ...
Buah Esolanging

3

Neim , 5 byte

3FBρσ

Penjelasan:

3      Push 3
 FB    F pushes 45, B converts it into a character code, '.'
   ρ   Push 14
    σ  Push 15
Implicitly concatenate and print stack

Cobalah online!


3

APL, 6 byte

10○⍟-1

Mengambil bagian imajiner dari ln (-1).

Cobalah online!


Hai, selamat datang kembali @Uriel! Bagus, saya tidak memikirkan hal seperti itu (dengan log angka negatif), pekerjaan yang bagus!
Zacharý

@ Zacharý terima kasih, baru saja berkunjung dan tidak dapat membantu menjawab ini: P
Uriel

2

J , 16 byte

17j15":4*_3 o.1:

Cobalah online!

Mirip dengan jawaban VBA. Output: 3.141592653589793.


"Anda mungkin tidak menggunakan makro bawaan atau konstanta untuk menentukan pi." Lucu, ini komentar Anda
Leaky Nun

Output Anda adalah 17 byte, bukan 16.
ATaco

1
@ATaco tepatnya, ini 16 digit
ASCII-only

@ LeakyNun tidak. _3 o.1menghitung atan (1). Seperti yang mungkin sudah Anda ketahui, saya menyadari aturannya.
Conor O'Brien

2

Math.JS , 17 byte.

     log(-1,e).im

Itu 5 ruang terdepan

Ini menghitung hingga 15 tempat desimal, dan secara implisit mencetaknya.

Cobalah secara Online!


Nah, secara teknis ini menghitung bagian imajiner ln(-1), tetapi karena ini adalah angka imajiner murni, ini setara dengan membagi dengan i.
Zacharý

2

05AB1E , 11 byte

3•∊&SK•)'.ý

Cobalah online!

COMMAND     # CURRENT STACK         | EXPLANATION
------------#-----------------------+-----------------------------------
3           # [3]                   | Push 3.
 •∊&SK•     # [3, 1415926535]       | Push compressed base-255 number 1415926535.
       )    # [[3,1415926535]]      | Wrap the 2 to an array.
        '.  # [[3,1415926535],'.']  | Push a decimal point.
          ý # ['3.1415926535']      | Join 3 and 1415926535 with a decimal point.

MENGGUNAKAN BUILT-INS:

05AB1E , 4 byte

žq5£

Cobalah online!


3žs tidak berfungsi karena suatu alasan ...


@ Zacharý, apakah saya melewatkan sesuatu? Mengapa xD khusus itu?
Magic Octopus Mm

Ada di nama pengguna saya, dan dapatkah Anda menambahkan penjelasan?
Zacharý

@ Zacharý HA! Otak saya sedang melewati semua lelucon lucu yang mungkin terkait PPCG, muncul kosong. Saya overthink omong kosong.
Magic Octopus Mm

@ Zacharý juga, menambahkan.
Magic Octopus Mm

Jika MY memiliki IO implisit, tidak akan ada cara untuk mengalahkan E3., aku marah pada diriku sendiri sekarang: p.
Zacharý

2

ForceLang , 269 byte

set S 0x5F258E476FC1B3B5571012206C637089460E41E814CB071E61431B5F0671F551D18D2C5D2D3A2565E408C6DE8D753F595B6E9979C3866D1C9965008DCFB02E3BD11D21DFFAF17978F05C8BBACF55A5ED5E90B1D8CAD8736AA4B728EB342B453F86353DB371D322B6A98613BC5CCB00AC2.mult 1e-270
io.write S.toString 268

Tautkan ke bahasa di github setidaknya.
Jonathan Allan

2

MATL , 9 8 byte

-1X;V9:)

Cobalah online!

Penjelasan:

-1      % number literal
X;      % inverse cosine (radians), giving pi
V       % convert to string
9       % specify precision
:)      % keep first 9 characters - 8 digits of precision

Disimpan satu byte berkat Luis Mendo!


1

Jelly , 6 byte

-ÆAær5

Cobalah online!

Menggunakan pendekatan yang berbeda dari jawaban Jelly lainnya.

Bagaimana?

-ÆAadalah cosinus terbalik dari -1(yang pi), ær5mengambil bagian yang diperlukan. Ini berhasil sehingga pembulatan setara dengan pemotongan dalam kasus ini



1

Perl 5, 40 byte

}{$\=$\/~(2*$_)*~$_+2for-130..-2

Membutuhkan opsi baris perintah -pMbignum, dihitung sebagai 8.

Penggunaan sampel:

$ perl -pMbignum test.pl < /dev/null
3.141592653589793238462643383279502884197

Saya minta maaf karena tidak ada tautan TIO, sepertinya tidak mendukung bignum(atau brace pembuka yang tak tertandingi ...).


1

MY , 7 byte

’2ō"8↑↵

Cobalah online!

Bagaimana?

  • , kurangi bagian atas tumpukan ( 0muncul jika kosong, buat tumpukan [-1]). (Simbol yang sama seperti Jelly)
  • 2, dorong 2.
  • ō, karena bagian atas tumpukan adalah dua, buang 2, pop n, lalu tekan acos(n)(dalam radian, ini memberi pi, simbol ini odengan tanda negatif di atasnya. o(untuk trigonometri normal) berasal dari APL).
  • ", pop elemen atas tumpukan dan dorong sebagai string.
  • 8, dorong 8.
  • , pop alalu b, dorongb[:a] (Ini adalah simbol lain yang diambil dari APL).
  • , keluaran dengan baris baru (OUTPUT <- STACK).

Kemudian tambahkan output implisit: P
MD XF

Saya tetap setia pada sifat MY, saya mungkin membuat versi yang disempurnakan dengan sintaksis yang sebenarnya, dan pastinya dengan keluaran implisit
Zacharý

1

RPL (HP48), 86,5 byte, 87 digit [Apakah ini masuk hitungan?]

« GROB 8 43
14159265358979323846264338327950288419716939937510582097494459230781640628620899862803
→STR 9 OVER SIZE SUB 2 "." REPL »

GROB adalah kata kunci gambar. 2 angka yang mengikuti adalah lebar dan tinggi. Digit heksadesimal yang mengikuti adalah bitmap. Itu 1 byte penyimpanan untuk setiap 2 digit plus metadata gambar.

Program kosong « »membutuhkan 10 byte. Perintah membutuhkan 2,5 byte. Float membutuhkan 10,5 byte, tetapi jika itu sama dengan integer satu digit, itu bisa memakan 2,5 byte.

HP48 menyimpan 4 daripada 8 bit di setiap lokasi memori, sehingga satu byte menempati 2 lokasi berturut-turut (low endian). Seringkali potongan 20-bit digunakan, dan mereka mengambil 2,5 byte (bukan 3).





0

Excel VBA, 16 Bytes

Fungsi jendela langsung VBE anonim yang tidak mengambil input dan output ke salah satu STDOUT Excel VBA

Setiap baris mewakili fungsi terpisah yang mengembalikan Pi dengan panjang 16

?Mid(4*Atn(1),1)
?Str([Acos(-1)])
Debug.?4*Atn(1);
MsgBox[Acos(-1)]
[A1]="=ACOS(-1)"



0

TI-BASIC, 7 byte

round(4tan⁻¹(1),6

round(2sin⁻¹(1),6

round(cos⁻¹(-1),6

Tiga pernyataan ini akan dicetak 3.141593.


Catatan: TI-BASIC adalah bahasa tokenized Jumlah karakter tidak sama dengan jumlah byte.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.