abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 15:22 | IT novinky

    Eric Lengyel dobrovolně uvolnil jako volné dílo svůj patentovaný algoritmus Slug. Algoritmus vykresluje text a vektorovou grafiku na GPU přímo z dat Bézierových křivek, aniž by využíval texturové mapy obsahující jakékoli předem vypočítané nebo uložené obrázky a počítá přesné pokrytí pro ostré a škálovatelné zobrazení písma, referenční ukázka implementace v HLSL shaderech je na GitHubu. Slug je volným dílem od 17. března letošního

    … více »
    NUKE GAZA! 🎆 | Komentářů: 0
    včera 15:11 | Zajímavý projekt

    Sashiko (GitHub) je open source automatizovaný systém pro revizi kódu linuxového jádra. Monitoruje veřejné mailing listy a hodnotí navrhované změny pomocí umělé inteligence. Výpočetní zdroje a LLM tokeny poskytuje Google.

    Ladislav Hagara | Komentářů: 5
    včera 04:44 | Zajímavý software

    Cambalache, tj. RAD (rapid application development) nástroj pro GTK 4 a GTK 3, dospěl po pěti letech vývoje do verze 1.0. Instalovat jej lze i z Flathubu.

    Ladislav Hagara | Komentářů: 0
    20.3. 14:55 | Nová verze

    KiCad (Wikipedie), sada svobodných softwarových nástrojů pro počítačový návrh elektronických zařízení (EDA), byl vydán v nové major verzi 10.0.0 (𝕏). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    20.3. 13:22 | IT novinky

    Letošní Turingovou cenu (2025 ACM A.M. Turing Award, Nobelova cena informatiky) získali Charles H. Bennett a Gilles Brassard za základní přínosy do oboru kvantové informatiky, které převrátily pojetí bezpečné neprolomitelné komunikace a výpočetní techniky. Jejich protokol BB84 z roku 1984 umožnil fyzikálně zaručený bezpečný přenos šifrovacích klíčů, zatímco jejich práce o kvantové teleportaci položila teoretické základy pro budoucí kvantový internet. Jejich práce spojila fyziku s informatikou a ovlivnila celou generaci vědců.

    Ladislav Hagara | Komentářů: 7
    20.3. 04:44 | Zajímavý článek

    Firefox 149 dostupný od 24. března přinese bezplatnou vestavěnou VPN s 50 GB přenesených dat měsíčně (s CZ a SK se zatím nepočítá) a zobrazení dvou webových stránek vedle sebe v jednom panelu (split view). Firefox Labs 149 umožní přidat poznámky k panelům (tab notes, videoukázka).

    Ladislav Hagara | Komentářů: 2
    20.3. 00:33 | Nová verze

    Byla vydána nová stabilní verze 7.9 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 146. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    20.3. 00:11 | Zajímavý software

    Dle plánu byla vydána Opera GX pro Linux. Ke stažení je .deb i .rpm. V plánu je flatpak. Opera GX je webový prohlížeč zaměřený na hráče počítačových her.

    Ladislav Hagara | Komentářů: 7
    19.3. 19:22 | Nová verze

    GNUnet (Wikipedie) byl vydán v nové major verzi 0.27.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.

    Ladislav Hagara | Komentářů: 0
    19.3. 04:00 | Bezpečnostní upozornění

    Byly publikovány informace (technické detaily) o bezpečnostním problému Snapu. Jedná se o CVE-2026-3888. Neprivilegovaný lokální uživatel může s využitím snap-confine a systemd-tmpfiles získat práva roota.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1126 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Trocha rekurze nemůže škodit

    10.11.2008 21:52 | Přečteno: 1821× | 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: 71 | 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: 71 | 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: 71 | 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.