abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    dnes 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    dnes 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 10
    včera 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Nová verze

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 748 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Trocha rekurze nemůže škodit

    10.11.2008 21:52 | Přečteno: 1745× | Ostatní | poslední úprava: 10.11.2008 21:54

    Jen tak, před nedávnem, z dlouhé chvíle vzniklo toliko kódu…

    #include "iostream"
    using namespace std;
    
    class CsSuccesor
    {
    public:
    	CsSuccesor();
    	CsSuccesor(CsSuccesor &that);
    	~CsSuccesor();
    	CsSuccesor& Succesor(CsSuccesor &that);
    	friend ostream& operator <<(ostream &stream, CsSuccesor succesor);
    	CsSuccesor& operator =(CsSuccesor &that);
    	CsSuccesor& operator +(CsSuccesor &that);
    	CsSuccesor& operator -(CsSuccesor &that);
    	unsigned long long int ToInteger();
    
    private:
    	CsSuccesor *m_pSucc;
    };
    
    CsSuccesor::CsSuccesor()
    {
    	m_pSucc = NULL;
    }
    
    CsSuccesor::CsSuccesor(CsSuccesor &that)
    {
    	m_pSucc = NULL;
    
    	if (that.m_pSucc != NULL)
    	{
    		m_pSucc = new CsSuccesor(*(that.m_pSucc));
    	}
    }
    
    CsSuccesor::~CsSuccesor()
    {
    	if (m_pSucc != NULL)
    	{
    		delete m_pSucc;
    		m_pSucc = NULL;
    	}
    }
    
    CsSuccesor& CsSuccesor::Succesor(CsSuccesor &that)
    {
    	m_pSucc = new CsSuccesor();
    	if (that.m_pSucc != NULL)
    	{
    		m_pSucc->Succesor(*(that.m_pSucc));
    	}
    	return *this;
    }
    
    ostream& operator <<(ostream &stream, CsSuccesor succesor)
    {
    	if (succesor.m_pSucc)
    	{
    		stream << "Succ(" << *(succesor.m_pSucc) << ")";
    	}
    	else
    	{
    		stream << "Zero";
    	}
    	return stream;
    }
    
    CsSuccesor& CsSuccesor::operator =(CsSuccesor &that)
    {
    	if (this != &that)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete m_pSucc;
    			m_pSucc = NULL;
    		}
    		if (that.m_pSucc)
    		{
    			m_pSucc = new CsSuccesor(*that.m_pSucc);
    		}
    	}
    	return *this;
    }
    
    CsSuccesor& CsSuccesor::operator +(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor();
    	if (m_pSucc != NULL)
    	{
    		out->m_pSucc = new CsSuccesor(*m_pSucc + that);
    	}
    	else
    	{
    		if (that.m_pSucc != NULL)
    		{
    			out = new CsSuccesor(that);
    		}
    	}
    	return *out;
    }
    
    CsSuccesor& CsSuccesor::operator -(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor(*this);
    	if (that.m_pSucc != NULL)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete out;
    			out = new CsSuccesor(*m_pSucc - *that.m_pSucc);
    		}
    	}
    	return *out;
    }
    
    unsigned long long int CsSuccesor::ToInteger()
    {
    	return (m_pSucc != NULL ? m_pSucc->ToInteger() + 1 : 0);
    }
    
    int main()
    {
    	CsSuccesor succ1;
    	cout << succ1 << '\n' << succ1.ToInteger() << '\n';
    	CsSuccesor succ2(succ1);
    	cout << succ2 << '\n' << succ2.ToInteger() << '\n';
    	CsSuccesor succ3(succ1.Succesor(succ2));
    	cout << succ3 << '\n' << succ3.ToInteger() << '\n';
    	CsSuccesor succ4 = succ3;
    	cout << succ4 << '\n' << succ4.ToInteger() << '\n';
    	CsSuccesor succ5 = succ3 + succ4;
    	cout << succ5 << '\n' << succ5.ToInteger() << '\n';
    	CsSuccesor succ6 = succ5 - succ3;
    	cout << succ6 << '\n' << succ6.ToInteger() << '\n';
    
    	return 0;
    }
    
    

    …netvrdím, že ve všech rysech je to dokonalé, ale zábavné a hravé.

           

    Hodnocení: 25 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    10.11.2008 22:02 dum8d0g
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    to se tak strasne bojis komentaru? to ti proboha udelali.. ;-)
    10.11.2008 22:03 dum8d0g
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    *co
    vogo avatar 10.11.2008 22:07 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    tohle je tzv. „no comment code“ :)

    u vážně míněného kódu komentáře píšu
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    Heron avatar 10.11.2008 22:22 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tak tady jsou tak krátké metody (což je jedině dobře), že jejich fce je tak plně popsána jejich jménem (tak to má být).

    Pravda, mohlo být popsáno API, ale jako kód pro radost se mi to na první pohled líbí (chyby jsem nehledal).
    11.11.2008 10:14 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Proč? Navzdory neskutečně ukecanému a silně uhozenému programovacímu jazyku je to docela čitelné. BTW takhle se obvykle v teorii čísel formálně definují přirozená čísla- je to prostě nejjednodušší.
    Táto, ty de byl? V práci, já debil.
    vogo avatar 11.11.2008 16:39 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Přesně o to jde, je to rekurzívní datový typ celé číslo. Zřejmě kolega :).
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    11.11.2008 21:05 Ignor
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    V teorii čísel asi ne, tam to je spíš nanic.

    Jestli jsem to dobře pochopil (za což fakt neručím), tak to připomíná ňákou takovouhle konstrukci třeba

    0 = {}; S(n) = {n}

    než tu běžnou z teorie množin

    0 = {}; S(n) = n u {n}
    11.11.2008 21:07 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Už nevim, kdo to řekl, ale:

    "Real Programmers don't use comments. If it was hard to write, it should be hard to read."
    11.11.2008 22:41 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    To už by to mohlo vypadat rovnou takhle:

    void do(int A[], int s) { int i, j, k, l; k = size / 2; while (k > 0) { for (i = k; i < s; i++) { j = i; l = A[i]; while ((j >= k) && (A[j-k] > l)) { A[j] = A[j - k]; j = j - k; } A[j] = l; } if (k == 2) k = 1; else k = (int) (k / 2.2); } }

    Eliminace poznámek a (tím blbým způsobem jsou i vhodné názvy proměnných formou poznámek a přesto znám programátory, kteří používají jména jako: xx, yy, xxx, yyy, xxxx, yyyy) substituce názvů proměnných jejich stručnějším ekvivalentem, zde imho naprosto znečitelnila tento (jinak profláklý) kus kódu.

    Ono to zcela jistě bylo myšleno jako ironie, ale někdo by se té citace mohl chytnout.

    (Přebráno s mírnou úpravou z wikipedie.)
    11.11.2008 22:47 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Omlouvám se, nějak jsem při náhledu ignoroval špatný tag:
    void do(int A[], int s) 
    { 
      int i, j, k, l; 
      k = size / 2; 
    
      while (k > 0) 
      { 
        for (i = k; i < s; i++) 
        { 
          j = i; 
          l = A[i]; 
          
          while ((j >= k) && (A[j-k] > l)) 
          { 
            A[j] = A[j - k]; 
            j = j - k; 
          } 
        
          A[j] = l; 
        } 
    
        if (k == 2) k = 1; else k = (int) (k / 2.2); 
      } 
    } 
    
    11.11.2008 22:57 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Já myslel, že to byl záměr… :-)
    11.11.2008 23:09 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Myslím, že odsazují i ti největší barbaři (kromě soutěží v zatemňování kódu). :-)
    11.11.2008 23:17 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    A také kromě těch, kdo se s programovacím jazykem utkávají jen proto, že kvůli zápočtu/zkoušce musejí. Viděl jsem i jedince, kteří sice odsazovali (nejspíš proto, že jim řekli, že se to má), ale víceméně nahodile, bez vazby na strukturu zdrojáku.
    11.11.2008 23:09 xavier | skóre: 10 | blog: borkovo
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nebo tak.
    hikikomori82 avatar 10.11.2008 23:43 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    A teraz verzia pre bash, asi 100x jednoduchsia
    #!/bin/bash
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    11.11.2008 07:41 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    nevidim rekurziu :-)
    hikikomori82 avatar 11.11.2008 08:17 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Naco, na vypis piatich textov potrebujete rekurziu a 100 riadkov kodu?
    11.11.2008 13:19 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Třeba na to, aby titulek dával smysl. :-)
    11.11.2008 00:48 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    CsSuccesor& CsSuccesor::operator -(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor(*this);
    	if (that.m_pSucc != NULL)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete out;
    			out = new CsSuccesor(*m_pSucc - *that.m_pSucc);
    		}
    	}
    	return *out;
    }
    
    tak se mi udelalo nevolno a ted jdu uz radsi spat... jen tak na okraj - pan je Javista ??? :-)
    vogo avatar 11.11.2008 06:40 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    bývalý…

    mínus jsem chtěl předělat, ale pak jsem na to zapomněl :)
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    11.11.2008 07:12 JS
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Chtel jsem vas upozornit na zajimavy clanek:

    Trocha rekurze nemůže škodit
    11.11.2008 08:27 skonciljsem | skóre: 20
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tenhle je taky prima.
    11.11.2008 08:45 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Ja som niekde videl odkaz na dobry odkaz.
    mkoubik avatar 11.11.2008 13:52 mkoubik | skóre: 5 | blog: lorem_ipsum | Praha 8 - Bohnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tenhle je lepší.
    Václav 11.11.2008 09:18 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Dík, mrknu se.
    Cross my heart and hope to fly, stick a cupcake in my eye!
    11.11.2008 10:48 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    super, ale chybi ti tam podminka na ukonceni rekruze... :-D
    11.11.2008 13:04 JS
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nechybi, ta je tam implicitni - po urcite dobe bude prislusny proces automaticky ukoncen operacnim systemem. ;-)
    11.11.2008 15:25 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nechybi, ta je tam implicitni - po urcite dobe bude prislusny proces automaticky ukoncen operacnim systemem. ;-)
    Alebo ujom z elektrarni :-D Elektrikari su naj hackeri :-D Vypnu a je to...
    11.11.2008 21:10 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Naprosto nejlepší vysvětlení rekurze je tady.
    Michal Fecko avatar 11.11.2008 21:42 Michal Fecko | skóre: 31 | blog: Poznámkový blog
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Pamatam sa ako na strednej nas informatikarka ucila triedenie s pouzitim rekurzie a vzdy to komentovala takto: "Vnarame sa, vnarame sa, vnarame sa, HOP a už sa vynárame, a znova sa vynárame ... " :-D
    12.11.2008 21:18 rtfm
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    lisp? haskell? -> pleasure
    vogo avatar 13.11.2008 18:53 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    haskel
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.