Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Najkraći C program za računajje broja pi

[es] :: Art of Programming :: Najkraći C program za računajje broja pi
(TOP topic)

[ Pregleda: 6613 | Odgovora: 14 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 2048
*.dial.InfoSky.Net



Profil

icon Najkraći C program za računajje broja pi20.04.2004. u 23:43

Čisto da se zna.


Na adresi http://numbers.computation.fre...ts/TinyPrograms/tinycodes.html nalaze se najkraći poznati programi na jeziku C za računanje broja pi na veliki broj decimalnih mesta. Takođe, traže da im se obrati svako ko ima kraći kod. Njihov najkraći kod glasi

Code:

long k=4e3,p,a[337],q,t=1e3;
main(j){for(;a[j=q=0]+=2,--k;)
for(p=1+2*k;j<337;q=a[j]*k+q%p*t,a[j++]=q/p)
k!=j>2?:printf("%.3d",a[j-2]%t+q/p/t);}


i ja sam uspeo da ga skratim za jedan znak zamenjujući izraz k!=j>2 izrazom j>2<k koji je sa njim ekvivalentan pod uslovom da k nije manje od 1, a taj uslov je u ovom programu uvek ispunjen, jer se vrednost promenljive k smanjuje od 4000 do 0 za po jedan pri čemu program završava rad kada k postane 0, tako da se izraz k!=j>2 izračunava samo kada je k>=1. No, bez obzira na sve to, kao i na činjenicu da oba koda proizvode isti rezultat (programi su testirani), i pored toga što sam im poslao poboljšani kod, oni se i dalje prave ludi! Tek toliko da se zna.
Nedeljko Stefanovic
20.04.2004. u 23:43 

blaza

Član broj: 961
Poruke: 735
*.vdial.verat.net



Profil

icon Re: Najkraći C program za računajje broja pi10.07.2004. u 10:43
Nedeljko, prevideo si da se
Code:
for(;a[j=q=0]+=2,--k;)
moze zameniti sa
Code:
for(;--k;a[j=q=0]=2)
cime se program skracuje za dodatna dva karaktera. Verujem da postoje i dodatna poboljsanja.
If you want to argue with me, learn to google faster.
10.07.2004. u 10:43 

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


Profil

icon Re: Najkraći C program za računajje broja pi13.07.2004. u 01:42
nešto slično na http://www1.physik.tu-muenchen...tpack/html/Mathematics/Pi.html

Code:
/* Calculation of pi to 16276 decimal digits */
/* Size of program: 143 characters */
/* After Dik T. Winter, CWI Amsterdam */
int a=1e4,b,c=56980,d,e,f[56980],g,h,i;
main(){for(;b=c,c-=14;i=printf("%04d",e+d/a),e=d%a)
while(g=--b*2)d=h*b+a*(i?f[b]:a/5),h=d/--g,f[b]=d%g;}


i još kraći za e:

Code:
/*paasivir@jyu.fi*/int a[3302],b=3301,*c=a,d,e,f;main(){for(e=b;--e;*c++=1);*c
=2;for(d=2001;d--;printf("%05d",f))for(c=a,e=b;e;f/=e--){f+=*c*1e5;*c++=f%e;}}

13.07.2004. u 01:42 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 2048
*.dial.InfoSky.Net



Profil

icon Re: Najkraći C program za računajje broja pi17.08.2004. u 16:27
Inače nisam napisao da programi koje sam priložio imaju jednu sitnu anomaliju koja se može pojaviti kod serija od šest i više uzastopnih devetki, ali koja se ne ispoljava među prvih hiljadu decimala. Blažina, kao i moja korekcija nemaju nikakvog uticaja na to. Sve verzije tog koda imaju isti nedostatak. Inače, analizom programa se može utvrditi da je zasnovan na Ojlerovoj transformaciji Lajbnicovig reda (razvoja za arctg u tački 1).
Nedeljko Stefanovic
17.08.2004. u 16:27 

byTer

Član broj: 10936
Poruke: 1221
*.info-net.co.yu

ICQ: 47761626


Profil

icon Re: Najkraći C program za računajje broja pi18.08.2004. u 12:48
nije li najkrace 22/7 ?
18.08.2004. u 12:48 

chupcko
Beograd

Član broj: 5560
Poruke: 1067
*.mobtel.co.yu

Sajt: www.google.com


Profil

icon Re: Najkraći C program za računajje broja pi18.08.2004. u 13:37
Puf, eto sale...

greska je samo oko 0.04 % dovoljno za recimo stari egipat, ali ne i za savremeno doba :).

CHUPCKO
18.08.2004. u 13:37 

blaza

Član broj: 961
Poruke: 735
*.vdial.verat.net



Profil

icon Re: Najkraći C program za računajje broja pi18.08.2004. u 14:35
Jedan od kracih progama za izracunavanje broja Pi moze se naci u attachment-u (kompajlirana vezija i sors kod). Program je pisan u x86 asembleru, i izracunava 9300+ tacnih decimala broja Pi. Duzina kompajliranog programa (DOS .COM fajl) iznosi 110 bajtova.
If you want to argue with me, learn to google faster.
Prikačeni fajlovi
18.08.2004. u 14:35 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 2048
*.dial.InfoSky.Net



Profil

icon Re: Najkraći C program za računajje broja pi18.08.2004. u 17:36
Da, samo to nije C program. To rešenje spada u kategoriju asemblerskih rešenja i u njoj je izuzetno optimalno. Svuda gde se prilažu takvi programi, oni se razvrstavaju u zasebne kategorije prema jezicima u kojima su pisani.
Nedeljko Stefanovic
18.08.2004. u 17:36 

blaza

Član broj: 961
Poruke: 735
*.yu1.net.



Profil

icon Re: Najkraći C program za računajje broja pi26.12.2004. u 18:14
What's the big deal?
Dik T. Winter se nije narocito potrudio da skrati kod.
Skratio sam njegov program za 9 znakova (143 -> 134).
Code:
int a=1e4,c=56980,d,e,f[56980],g,h;
main(b){for(;b=c-=14;printf("%04d",e+d/a))for(e=d%a;g=2*--b;h=d/--g,f[b]=d%g)d=h*b+a*(e?f[b]:2e3);}

If you want to argue with me, learn to google faster.
26.12.2004. u 18:14 

sallle
Sasa Ninkovic
Beograd

Član broj: 146
Poruke: 249
*.etf.bg.ac.yu.

ICQ: 20785904


Profil

icon Re: Najkraći C program za računajje broja pi04.01.2005. u 02:54
printf nije sluzbena rec...
04.01.2005. u 02:54 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 2048
*.dial.InfoSky.Net.



Profil

icon Re: Najkraći C program za računajje broja pi04.01.2005. u 12:18
A ko je tvrdio da je službena? Dobro de, svuda fali jedno #include <stdio.h>
Nedeljko Stefanovic
04.01.2005. u 12:18 

sallle
Sasa Ninkovic
Beograd

Član broj: 146
Poruke: 249
*.rcub.bg.ac.yu.

ICQ: 20785904


Profil

icon Re: Najkraći C program za računajje broja pi05.01.2005. u 03:06
onda treba optimizovati i taj heder, i izbaciti nepotrebne stvari...
05.01.2005. u 03:06 

s1cK
Bosko Stupar
BeotelNet ISP
Beograd

Član broj: 43061
Poruke: 55
*.adsl.beotel.net.



Profil

icon Re: Najkraći C program za računajje broja pi24.10.2007. u 21:30
Citat:
sallle: onda treba optimizovati i taj heder, i izbaciti nepotrebne stvari...

u prevodu , minimalizam C-a ;)
<kow> "There are 10 types of people in the world... those who understand binary and those who don't."
<SpaceRain> That's only 2 types of people, kow.
<SpaceRain> STUPID
www.bash.org
24.10.2007. u 21:30 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 8754
212.200.70.*

Sajt: www.diskusije.net


Profil

icon Re: Najkraći C program za računajje broja pi24.10.2007. u 21:48
Citat:
blaza: What's the big deal?
Dik T. Winter se nije narocito potrudio da skrati kod.
Skratio sam njegov program za 9 znakova (143 -> 134).
Code:
int a=1e4,c=56980,d,e,f[56980],g,h;
main(b){for(;b=c-=14;printf("d",e+d/a))for(e=d%a;g=2*--b;h=d/--g,f[b]=d%g)d=h*b+a*(e?f[b]:2e3);}


Hm, ako se ne varam, na poslednjoj liniji nije potrebno ; na kraju, ako vec ide }. Eto jos jednog znaka ;]
24.10.2007. u 21:48 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2768
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Najkraći C program za računajje broja pi24.10.2007. u 22:01
Citat:

Hm, ako se ne varam, na poslednjoj liniji nije potrebno ; na kraju, ako vec ide }

Mora ;) Pomesao si sa Pascal-om, gde nesto slicno moze...
C/C++ su rigorozni po tom pitanju.
Čak mora i iza prazne "default:" konstrukcije unutar switch, neposredno pre }.

Dalje, u izrazima:
if ( nesto )
x=1;
else
x=2;
... opet mora ; cak i iza x=1, za razliku od Pascala.

EDIT / Off Topic

Jedino se ; ne stavlja iz kraja bloka } sem u posebnim slucajevima (koji doduse i nisu tako retki) kada sintaksa konstrukcije nalaze. Na primer:
class NekaKlasa {};
Ovde treba ; jer moze da postoji i izraz:
class NekaKlasa {} Objekat;
... kojim se odmah kreira i objekat.

To je inace jedna od gresaka koju pocetnici tesko uspevaju da lociraju i otklone, jer se greska obicno prijavi u DRUGOM izvornom fajlu projekta, zbog strukture C/C++ programa (zaglavlje/izvorni kod):

--- fajl.H ---
class Klasa {}
--- fajl.CPP ---
#include "fajl.H"
int i=10;

... gore u H nedostaje ; iza } a greska se obicno javi u CPP fajlu :)



[Ovu poruku je menjao X Files dana 24.10.2007. u 23:26 GMT+1]
FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
24.10.2007. u 22:01 

[es] :: Art of Programming :: Najkraći C program za računajje broja pi
(TOP topic)

[ Pregleda: 6613 | Odgovora: 14 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.