Dalam sesedikit mungkin byte, tugas Anda adalah menulis sebuah program yang menghasilkan:
3.14
Dalam perayaan hari Pi yang terlambat tentu saja! :)
Aturan
Anda tetap bisa melakukannya, tetapi ada beberapa batasan.
- Anda tidak boleh menggunakan operasi aritmatika di mana pun dalam program Anda. Ini termasuk
+
,-
,*
,/
,%
,^
(eksponensial), dll ... ini juga termasuk incrementing (biasanya++
), decrementing (--
), operasi bitwise , dan dibangun dalam fungsi yang dapat digunakan sebagai pengganti sepertisum()
,prod()
,mod()
,double()
,pow()
,sqrt()
,inc()
,,dec()
dll ... (kebijaksanaan penulis) - Digit
3
,,1
dan4
mungkin tidak muncul di mana pun dalam kode Anda. - Anda mungkin tidak menggunakan ditentukan sebelumnya variabel / konstanta yang bahasa Anda mungkin memiliki sebagai pengganti
3
,1
dan4
. (Kebijaksanaan penulis) - Anda juga mungkin tidak menggunakan fungsi trigonometri seperti
sin()
,cos()
,tan()
,arcsin()
,arccos()
,arctan()
,sinh()
,cosh()
,tanh()
, dll ... (kebijaksanaan Penulis) - Anda tidak boleh menggunakan nilai Pi (atau
3.14
) bawaan atau yang sudah ditentukan sebelumnya . Tidak ada permintaan web . - Program Anda tidak dapat meminta input apa pun (selain menjalankannya).
3.14
adalah satu - satunya hal yang dapat Anda hasilkan, itu tidak dapat menjadi bagian dari keluaran yang lebih panjang / lebih besar ..
Pemenang
Jawaban dengan jumlah byte paling sedikit pada tanggal 18 April menang. Semoga berhasil!
Menantikan jawaban cerdas dari pikiran pintar! Malbolge siapa pun? : P
^
adalah operator eksponensial, bukan operator XOR bitwise.Jawaban:
CJam -
86CJam adalah bahasa baru yang saya kembangkan, mirip dengan GolfScript - http://sf.net/p/cjam .
Berikut penjelasannya:
S
adalah variabel yang diinisialisasi ke spasi ("")`
menghasilkan representasi string dari nilai terakhir - yang persis" "
(3 karakter),
menghitung panjang string (3)'.
adalah karakter titikE
adalah variabel yang diinisialisasi ke 14; 3, 1 dan 4 tidak diperbolehkan tetapi tidak mengatakan apa-apa tentang 14 :)Penghargaan untuk gagang pintu untuk ide backtick
sumber
E
.PHP - 22 byte
Hari Pi di tahun 1998 benar-benar keren!
sumber
n.j
adalah formatnya, dan8899e5
merupakan stempel waktu Unix tanggal 14 Maret 1998.,8899e5
. Itu akan benar setahun sekali.<?=date('w.W',78e5);
1 April 1970 adalah hari Rabu di minggu 14.C, 39
Mengasumsikan mesin ini adalah little-endian dan menggunakan standar titik-mengambang IEEE.
Fakta yang menyenangkan adalah bahwa
"P@I@"
sebenarnya tidak terkait denganPI
tetapi setara dengan0x40494050
yang merupakan representasi dari3.144550323486328
http://ideone.com/uXVEtl
sumber
dc ,
119 bytez
Dorong kedalaman tumpukan saat ini (0) ke tumpukanE
Tekan E 16 (== 14 10 )[.]
Dorong senar "."z
Dorong kedalaman tumpukan saat ini (3) ke tumpukann
Pop 3 dan cetak sebagai nomorP
Pop "." dan cetak sebagai charp
Pop 14 dan cetak sebagai nomor dengan baris baruKeluaran:
sumber
dc
adalah bahasa dan juru bahasa, sama seperti semua bahasa lain di sini.dc -e
hanyalah doa dari penerjemah itu. Saya bisa dengan mudah menyimpan program 9-byte dalam file dan jalankandc pi.dc
. Jika byte ini perlu dihitung, maka hal yang sama harus berlaku untuk semua bahasa lain. misalnya termasukpython
dalam semua entri python atauruby golfscript.rb
dalam semua entri skrip golf. Saya percaya konvensi yang disepakati di sini bukan untuk memasukkan ini, kecuali opsi khusus perlu disahkan.JavaScript ( ES5 ) 20 byte
Variasi dari solusi JS m.buettner.
Sunting: JavaScript ( ES5 ) 18 byte
Variasi dari ide ComFreek untuk menggunakan fungsi decode base64.
Sunting: Javascript ( ES5 ) 16 byte
Jika
+
operator unary diizinkan untuk melemparkan string ke nomor, itu dapat dikurangi menjadi:sumber
+
diterima di sini?Haskell, 41 byte
Kapan hari pi di Australia?
Diedit untuk menambahkan: seperti jawaban Haskell lainnya, yang menghasilkan string, demikian juga dengan kutipan. Anda bisa mendapat skor 33, dan benar-benar mematuhi aturan, tapi itu kurang menyenangkan:
sumber
p=[2.9,2.92..]!!([0,6..]!!2)
... dan yang ini..
terlihat salah. Tapi Haskell sangat diketik, dan kenaikan dalam jawaban yang saya berikan adalahChar
tidakNum
dan tidak berhitung - hal yang sebenarnya dilarang. Saya perlufromEnum
untuk mengubah karakter kembali ke angka untuk menggunakannya dengan cara itu. Bagaimanapun, hati nurani saya jelas :)Kode Morse, 33 Bytes
Secara teknis, informasi hanya membutuhkan 21 byte.
sumber
J -
151110 charMembuatnya lebih pendek, menggunakan yang fantastis
i:
.Dijelaskan:
6.28j8
- Bilangan kompleks 6.28 + 8i.i:
- Ini adalah dimana keajaiban terjadi.i:
pada bilangan kompleks A + Bi, B ≠ 0 mengambil B + 1 titik yang berjarak sama dari interval [-A, A].6{
- Ambil elemen pada indeks 6, yang kebetulan adalah 3,14.Sebelumnya, kami memiliki omong kosong berikut:
Dijelaskan oleh ledakan:
sumber
|.'.'2}":22b8d5
, Anda dapat menyimpan 2 karakter dengan memilih nomor yang tidak memerlukan pembalikan:'.'1}":16bbc6
41X3
karena saya hanya diperbolehkan untuk memodifikasi karakter di indeks 0 dan 2.Baris perintah Linux, 35 byte
Yang ini sama sekali tidak menang, tapi ini untuk bersenang-senang:
Output (setelah 2 detik):
sumber
:;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'
. Ini menetapkan TTL ke 1, sehingga gema ICMP keluar dijatuhkan oleh router Anda sebelum pernah mendekati internetping -w2 67502862
. (Ninja edit karena sebelum saya menasihati w1, hampir melanggar aturan.)GolfScript,
181312Versi lama:
Ini sangat artistik, hanya 3 karakter unik! ;)
Bagaimana itu bekerja:
Berikut penjelasan dari versi 12-char (jauh lebih menarik, IMO):
Ia bekerja karena
n`,
ini4
, sejakn`
yaitu'"\n"'
. Logika yang sama untuk'.'`,
. Ini juga swap daripada membuat string baru untuk menyimpan char (terima kasih @algorithmshark).Versi alternatif:
atau
Atau apa pun dalam string itu, sungguh. : P
sumber
'.'.`,\.,n`,
berhasil menyelamatkan char? Menggunakan kembali'.'
dengan menduplikasi dan menukar.Jawaban OP.
Mathematica,
212018Ini terasa murah ...
atau
Menemukan cara membuatnya 18:
Haskell,
494812(48 termasuk karakter baris baru)
Jalankan dengan memanggil
r
fungsi.Dengan menggunakan metode seperti pada Mathematica di atas, Anda dapat mengetik ini ke GHCi:
Jawa,
8786Scala, 27
Diterjemahkan dari Jawa seperti yang disarankan oleh Score_Under . (Saya tidak begitu tahu Scala)
sumber
0xe
itu pintar. Apakah Anda keberatan jika saya meningkatkan jawaban JS saya dengan itu? ;)[-.86:5][5]
untuk 11, tetapi pikir itu tidak masuk hitungan karena rentang hanya matematika.Bash, 50
Pesan bantuan / kesalahan bukan sumber daya eksternal, itu adalah output perintah!
Jika ada yang melanggar aturan, ini dia. Ia menggunakan kebetulan bahwa pesan bantuan diberikan
STDERR
oleh perintah yang tepatpanjangnya 314 karakter (setidaknya pada Ubuntu 13.10 dengan
iputils-121221
). EDIT: Saya menghargai ini jauh lebih portabel daripada yang saya harapkan ...Baris pertama membutuhkan panjang karakter pesan bantuan dan menyimpannya dalam variabel.
Seperti pada jawaban saya yang lain, beberapa baris berikutnya mendapatkan angka 1 dengan mengambil status keluar dari
false
(tidak terlalu portabel tapi ini kode-golf !), Lalu gunakan nilai itu untuk memasukkan titik desimal di baris terakhirKeluaran:
3.14
sumber
info ping6
saya punya iputils-121221chmod
jawaban saya -menggunakan untuk pertanyaan ini di codegolf.stackexchange.com/a/25724/16402ping6|&wc -c|sed 's/./&./'
Bash + TeX 28 byte
Jika Anda telah menginstal TeX:
Nomor versi TeX secara asimtotik mendekati pi ketika perangkat lunak membaik. Jadi, seiring berjalannya waktu, Anda dapat menggunakan implementasi (tidak sesuai) ini untuk mencetak lebih banyak digit!
Ini dicetak 3.1415926 kembali pada tahun 2011; per Januari 2014, itu akan mencetak 3.14159265.
sumber
tex -v|grep -oP '.\..\d'
untuk menyimpan 4 byte. (Regex dicuri dari jawaban DigitalTrauma .) Omong-omong, +1 karena saya hanya memikirkan jawaban yang sama.JavaScript, 20 byte
Gunakan di konsol, sehingga hasilnya langsung dicetak. Kalau tidak,
alert(...)
akan menambah 7 karakter lainnya.Sama seperti jawaban saya yang lain, saya hanya memperhatikan bahwa JS jauh lebih pendek.
Gagasan menggunakan
0xe
untuk 14 diambil dari pengajuan OP dengan izin baik dari OP.sumber
(x='.'+0xE).length+x
Tanggal GNU, 17 byte
Yang ini hanya dijamin bekerja tahun ini, tapi saya tidak melihat batasan dalam aturan tentang ini ;-)
Ini
+
hanya menunjukkan awal dari penentu format untukdate
dan bukan merupakan tambahan aritmatika. Sama dengan-
, menunjukkan tanggal input.Keluaran:
sumber
only guaranteed to work this year
Tidak apa-apa .. :)Bash, 17 byte
Dash, 41 byte
sumber
Bash
2322Shell (tanpa ekspansi sejarah) 20
sumber
seq 2 .06 5|sed -n 20p
juga berfungsi seperti yang diberikan dalam jawaban OP's Mathematica.sed 58!d
sedikit lebih pendek.!d
dengandpkg ...
yang merupakan perintah terakhir yang saya jalankan yang dimulai dengand
. Berfungsi dengan baikksh
tetapizsh
mengatakanzsh: event not found: d
itu pasti mendapatkan sesuatu yang diganti.pi.sh
dan mengeksekusibash pi.sh
, itu akan berfungsi dengan baik.Python, 39 atau 28
47 atau 34(Terima kasih Score_Under karena sudah banyak bermain golf)
+
di sini adalah operator rangkaian string, bukan tambahan.Menyalin
0xe
trik dari OP, inilah 28 karakter dengan bantuan dari @psalVersi lama:
sumber
print"%s.%s"%(len('aaa'),0xe)
pada 29 byte. Anda dapat melakukan hal yang sama dengan yang pertama juga:print"%s.%s%c"%(len('aaa'),len('a'),52)
pada 39 byte.%s
masih membutuhkanstr
. Terima kasih atas tipnya :)print('%s,%s'%(0xE9,0xE))[2:]
print('%X.%s'%(675,0xE))[2:]
GolfScript, 8 byte
Program ini berisi karakter ASCII yang tidak dapat dicetak, sehingga tidak dapat ditempelkan langsung di sini. Sebagai gantinya, tanda tanya dalam kode di atas harus diganti dengan byte
03
dan0E
dalam heksadesimal.Untuk kenyamanan, inilah dump hex dari program yang sebenarnya. Pengguna Unix / Linux dapat menjalankan hex dump ini
xxd -r
untuk merekonstruksi program:Penjelasan:
Lima byte pertama dari program membentuk string literal yang dikutip tunggal, mengkodekan tiga karakter dengan kode ASCII 3, 14 dan 46 (= periode ASCII).
(
memotong karakter pertama dari string dan mendorong kode ASCII (3) pada stack.\
menukar dua item teratas pada stack, menarik string kembali ke atas, dan yang kedua(
memotong karakter lain dari string, sekali lagi mendorong kode ASCII (14) pada stack.Oleh karena itu, pada akhir program, tumpukan (tidak termasuk string input kosong) terlihat seperti ini:
Pada akhir program, perilaku default interpreter GolfScript adalah untuk mengencangkan dan mencetak semua yang ada di stack, menghasilkan output yang diinginkan.
sumber
bash - 39
Kita semua tahu bahwa beberapa digit pertama Pi dapat dihitung dari pernyataan berikut:
Kami hanya membutuhkan 2 tempat desimal, kan?
sumber
Mathematica - 78
sumber
Perl,
1520 bytesumber
tr + Bash, 17 byte
The
-
karakter di sini tidak operator pengurangan aritmatika. Mereka menunjukkan kisaran.Keluaran:
sumber
write()
panggilan atau serupa. Tentunya akan ada beberapa aritmatika di bawah selimut untuk memastikan jumlah byte yang benar ditulis, jika tidak ada tempat lain. Saya pikir inti dari pertanyaan adalah untuk menyembunyikan perhitungan aritmatika / bitwise yang diperlukan.BASH, 57
Ini lebih panjang daripada kebanyakan jawaban, tetapi tidak ada yang buruk dalam mencoba.
memberi
sumber
c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
C, 36
sumber
main(){printf("%d\b.%d",' ',0xe);}
JavaScript - 23 byte
Terima kasih kepada nderscore (lihat komentarnya)!
sumber
4
;)btoa()
berhasil3.14
?atob('Mw')+atob('LjE0')
dan 14 byte "ilegal" versi:atob("My4xNA")
C #
ĺ adalah karakter 314, bukan variabel atau konstanta yang ditentukan sebelumnya. .ToString memformat output menjadi digit, titik, dan kemudian 2 digit lagi.
sumber
GolfScript,
1310Terima kasih kepada Ilmari Karonen untuk versi yang ditingkatkan!
x
dany
merupakan karakter yang tidak dapat dicetak (lihat http://www.asciitable.com/ untuk info lebih lanjut), masingETX
- masing danSO
, yang diterjemahkan menjadi 3 dan 14.Apa yang dilakukan kode ini harus cukup jelas.
Catatan: Aturan berikut
You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)
tidak rusak, karena karakter ASCII bukan variabel, atau konstanta.
sumber
The digits 3, 1, and 4 may not appear anywhere in your code.
,Your program cannot require input of any kind (besides running it).
{}.*.{}.*
, dan di dalam tanda kurung ada 2 karakter yang tidak dapat dicetak, masing-masing ( asciitable.com )ETX
danSO
{xy}.*'.'\
(10 karakter). Milik saya masih lebih pendek. ;-) Tapi +1 untuk mengajari saya tentang{ }.*
(dan{ }.%
), saya harus mengingat trik itu.Baru di situs ini dan belum bisa menulis komentar, jadi saya akan mempostingnya di sini. Hanya ingin tahu tentang solusi Javascript ini:
dan aturan ini:
3.14 adalah satu-satunya hal yang dapat Anda hasilkan, itu tidak dapat menjadi bagian dari keluaran yang lebih panjang / lebih besar ..
Jika saya menjalankan kode ini di konsol browser saya, saya mendapatkan:
atau menggunakan Node di baris perintah:
tetapi jika saya menjalankan kode ini:
Saya mendapat:
Menggunakan Node.js untuk menjalankan file .js, saya dapat menulis:
dan dapatkan:
sumber
console
cenderung membungkus string dalam tanda kutip ketika menampilkannya ... Anda telah menggunakan+
tetapi tidak secara hitung, itu digunakan sebagai konkatator, jadi itu valid ... Juga Anda bisa membuat ini lebih kecil menggunakanalert
daripadaconsole.log
... Tetapi sebaliknya, upaya besar. Kami harap Anda menyukainya di sini ...Mathematica, 56 byte
Tidak banyak bicara. Saya menghasilkan digit sebagai panjang string dan menyatukannya.
sumber