Wikipedia: Paradoks Dikotomi Zeno
Sejumlah besar matematikawan berjalan ke bar. Yang pertama memesan bir. Yang kedua memesan setengah bir. Yang ketiga memesan seperempat bir. Bartender menghentikan mereka, menuangkan dua gelas bir dan berkata, "Kalian semua orang idiot."
Cetak seri berikut selama program berjalan, dengan penyebut masing-masing item dikalikan dua setiap kali:
1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ...
Saat n
mendekati tak terbatas, jumlah dari sekuens ini mendekati 2
.
Aturan
Tidak, Anda tidak boleh mencetak 2
.
Anda mungkin tidak mencetak 1/1
sebagai item pertama.
Anda dapat menghapus spasi 1+1/2+...
atau menambah spasi 1 + 1 / 2 + ...
sesuai kebutuhan.
Anda dapat menggunakan baris baru alih-alih spasi sebagai pembatas karena permintaan populer.
Anda dapat menambahkan .
plus sejumlah konstan0
s ke penyebut jika perlu.
"Tak terhingga" berarti tidak ada penundaan yang tidak perlu, dan selama mungkin dibatasi oleh spesifikasi sistem (variabel) saat ini, tetapi tidak dibatasi oleh bahasa Anda saat ini.
Celah standar berlaku.
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
sumber
+1/
s hanya akan membentuk garis diagonal. Namun, panjang penyebut berubah secara linier (hingga pembulatan): jumlah digit2^n
adalah sekitarn log(2)/log(10)
. Perubahan linear itu diterjemahkan menjadi perubahan linear dalam posisi relatif masing+1/
- masing sehubungan dengan yang sebelumnya, yang sama dengan perubahan kuadrat di posisi absolut .Jawaban:
05AB1E ,
109 byteDisimpan 1 byte berkat Erik the Outgolfer
Cobalah online!
Penjelasan
sumber
[No?…+1/?
«
alih-alihJ
tetapi ini juga berfungsi.Python 2 , 30 byte
Terima kasih kepada Erik the Outgolfer
Cobalah online!
sumber
Jelly , 12 byte
Cobalah online!
sumber
Pyth , 10 byte
Cobalah online!
sumber
APL (Dyalog Unicode) , 15 byte
Lebih menyenangkan jika
⎕FR
( F loating-titik R epresentation) adalah1287
(128 bit desimal) dan⎕PP
( P etak P recision) adalah 34.Cobalah online!
{
...}1
terapkan fungsi berikut pada angka 1:⎕←⍵'+1/'
cetak argumen dan stringnya⊃
pilih yang pertama (yaitu argumen)2×
gandakan itu∇
ekor rekursi pada itu (dioptimalkan, sehingga dapat diulang tanpa batas)sumber
C (gcc) , 60 byte
Naik batas 64bit yang tidak ditandatangani.
Cobalah online!
Yang ini berlangsung selamanya; (Ini sekecil itu akan mendapatkan)
C (tcc) ,
312264255251233231208204195190188170 byteCobalah online!
Ini versi yang tidak terlalu golf;
sumber
Bash , 33 byte
Cobalah online!
Ubah
print
untukprintf
danecho
untukprintf
menghindari baris barusumber
printf 1
juga menghindari baris baru, bukan?+1/inf
dari istilah 1024 dan seterusnya. :-(dc,
1918 bytePenjelasan
Kami mendorong
1
dan[rdp+[+1/]Prdx]
ke tumpukan. Kami kemudian menduplikasi dan mengeksekusi[rdp+[+1/]Prdx]
. Hal pertama yang dilakukan adalah memutar stack (r
) sehingga nilainya berada di atas.dp+
mencetak nilai dan menambahkan sendiri (untuk dikalikan dengan 2).[+1/]P
mencetak invarian+1/
, lalu kami memutar argumen sehingga definisi makro yang disimpan ada di atas, duplikat dan mulai lagi.Catatan
GNU
dc
biasanya akan membungkus 70 kolom. Untuk menimpanya dan mendapatkan garis yang tak terbatas, tambahkanDC_LINE_LENGTH=0
ke variabel lingkungan Anda.Output (sebagian)
...
...
...
sumber
dp
alih-alihddn
untuk menyimpan bytedn
menghindari memperkenalkan baris baru, tetapi tidak mempertimbangkanp
(dengan biaya output yang lebih buruk). Sebenarnya, pada refleksi, tidak jelek, setelah semua.GolfScript , 19 byte
Cobalah online!
sumber
CJam , 14 byte
Cobalah online!
sumber
> <> , 14 byte
Cobalah online!
sumber
Pyth, 10 byte
Z
dimulai sebagai nol.~hyZ
post-assign nilai2*Z+1
keZ
. Dengan demikian,Z
menjadi0, 1, 3, 7, 15, ...
iterasi yang berurutan.h
lalu cetak nilai satu lebih besar.#
menjalankan infinite loop, dan"+1/
mendapatkan pemformatan yang benar.sumber
JavaScript (ES6) ,
3634 byteCobalah online!
Terinspirasi oleh jawaban Jake Taylor .
Perhatikan bahwa ini dibatasi oleh bahasa karena
a
merupakan variabel titik-mengambang, bukan bilangan bulat.-2 byte terima kasih kepada @Stefnotch .
sumber
for(a=.5;;)console.log`${a*=2}+1/`
Padahal, solusi Anda dibatasi oleh bahasa, karena a adalah float, bukan bilangan bulat besar. (Tantangannya mengatakan bahwa itu tidak boleh dibatasi oleh bahasa, tetapi lebih oleh spesifikasi sistem.)for(a=1;;a*=2)console.log(a+"+1/")
Ruby ,
2725 byteCobalah online!
sumber
Java,
107102 bytez=null
ada untuk mempersingkato=java.math.BigInteger.ONE
menjadiz=null,o=z.ONE
, menghemat 12 byte.z.ONE
tidak akan melemparNullPointerException
karena kita mengakses anggota statis dan bukan anggota instance.Menggunakan
int
kode lebih pendek, tetapi gagal untuk mematuhi setelah 32 iterasi.Menghemat
n.compareTo(o)>0
berubah menjadin.max(o)==o
, berkat ide yang diberikan oleh @Shufflepantssumber
int
dan semua tipe primitif lainnya terbatas pada tingkat bahasa. Juga,BigInteger
dokter secara eksplisit mengatakan bahwa batas adalah opsional, bukan wajib (dan bahwa implementasi JVM default menggunakan batas itu).Vim,
22, 21 byte / penekanan tombolSaat menguji ini, Anda mungkin mengalami masalah dengan nilai register saat ini. Untuk memperbaiki ini, jalankan
sebelum menjalankan ini, atau dengan meluncurkan vim dengan
sumber
R,
3534 byteSpasi agak tidak benar tapi saya mengerti tidak apa-apa.
sumber
repeat
sebagai gantiwhile(T)
:cat(i<-1);repeat cat("+1/",i<-i*2)
kurang dari 1 byte.Befunge 93: 14 bytes
sumber
Powershell, 34 byte
Cobalah online!
sumber
Aceto , 20 byte
Mencetak urutan tanpa spasi. Saat dijalankan, Anda tidak akan melihat apa-apa untuk sementara waktu, karena buffering, jalankan dengan
-F
untuk segera melihat semuanya.sumber
Pergi ,
102100 byteGo bisa hampir sama buruknya dengan Jawa, tampaknya.
Cobalah online! ( Akan menjadi ide yang baik untuk menghindari menjalankan semua ini secara lokal .: P)
sumber
QBIC , 18 byte
Mencetak setiap istilah pada baris baru.
Penjelasan:
Kita dapat menyimpan byte dengan format output yang lebih liberal:
sumber
Mathematica, 25 byte
sumber
+
dan juga angka?C #, ̶6̶8̶ 154 byte
Ini adalah versi yang tidak dibatasi oleh int
sumber
int.MaxValue
BigInteger b=1;
dan memperpendek penggandaan menjadib*=2;
JavaScript (ES6),
454342 byteDisimpan 2 byte, terima kasih @DanielM! Disimpan 1 byte, terima kasih @ eush77 untuk menunjukkannya.
= console.log; a = 1; (1); untuk (;;) _ (+1/${a*=2}
)= console.log; (a = 1); untuk (;;) _ (+1/${a*=2}
)Go pertama saya di Codegolf, go easy!
sumber
a=1
bisa masuk bagian pertama dari untuk,for(a=1;;)
menghemat byte dalam koma ekstra._(a=1)
, bekerjalah dengan saran DanielM juga+1/
, bukan sebagian kecil.PHP, 32 Bytes
Versi Online
-6 Bytes jika nilai suka
9.2233720368548E+18
diizinkanCobalah online!
sumber
AWK ,
3732 byteCobalah online!
Bisa menghapus
BEGIN
dan menyimpan 5 byte jika input diizinkan. Menggunakan eksponen byte-bijaksana pasti lebih murah daripada perkalian. :)Semoga 2 ^ 1023 cukup dekat hingga tak terbatas (di komputer kerja saya). Sayangnya tautan TIO terpotong lebih awal dari itu (sekitar 921). Tapi 17726622920963562283492833353875882150307419319860869157979152909707315649514250439943889552308992750523075148942386782770807567185698815677056677116184170553481231217950104164393978236130449019315710017470734562946173533283208371259654747728689409291887821024109648618981425152 tampaknya cukup dekat hingga tak terbatas. :)
sumber
Haskell
-6662605149 karakterIni mencetak string yang dibangun dengan mencetak representasi string dari kekuatan dua mulai dari 1, dipisahkan oleh string
" + 1/"
.Kode itu sendiri 49 byte, impor dan baris baru dorong hingga 66
Edit: (62)
Mencukur 4 byte dengan memotong impor dan mendefinisikan interkalasi dengan nama yang jauh lebih pendek
Sunting 2: (60)
Mencukur 2 karakter lagi dengan menyadari bahwa saya tidak perlu menggunakan konvensi daftar (x: xs):
Sunting 3: (51)
Menerapkan kembali definisi f dan peta sebagai badan lipatan untuk menyimpan 9 karakter lainnya
Sunting 4: (49)
Seperti yang ditunjukkan oleh Laokoni, saya dapat menghapus spasi untuk mengurangi 2 byte lebih dari total:
sumber
Braingolf ,
4137 byteDisimpan 4 byte karena saya menyadari saya tidak perlu spasi, selalu membaca spec anak-anak
Cobalah online!
Mungkin bisa bermain golf lebih baik, tetapi berhasil.
sumber
Fourier, 20 byte
Cobalah online!
Saya pikir ini hanya dapat berfungsi pada Coba secara Online karena perbedaan dalam cara Python dan Javascript menangani jumlah besar.
Penjelasan Psuedocode:
sumber
Print i
ke awalWhile
loop?i
.