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í
×
dnes 14:44 | Komunita

Dalších sedm produktů od společnosti ThinkPenguin získalo certifikaci RYF (Respects Your Freedom, Respektuje vaši svobodu) udělovanou Nadací pro svobodný software (FSF). Poprvé získal certifikaci USB mikrofon, konkrétně TPE-USBMIC. Certifikace RYF byla představena v říjnu 2012.

Ladislav Hagara | Komentářů: 0
dnes 13:33 | Komunita

Na Humble Bundle lze získat počítačovou hru Tacoma (YouTube, Wikipedie) běžící také v Linuxu zdarma. Speciální akce končí v neděli v 18:00.

Ladislav Hagara | Komentářů: 0
dnes 11:11 | Zajímavý projekt

Na Kickstarteru byla spuštěna kampaň na podporu zařízení NexDock 2. Jedná se o přenosnou dokovací stanici aneb notebook bez procesoru a paměti. Stačí připojit podporovaný telefon s Androidem nebo Raspberry Pi.

Ladislav Hagara | Komentářů: 0
dnes 09:55 | Zajímavý článek

Před týdnem byly vydány nové verze 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1 a 6.0.0.beta3 frameworku pro vývoj webových aplikací Ruby on Rails (Wikipedie). Opraveny byly 3 bezpečnostní chyby: CVE-2019-5418, CVE-2019-5419 a CVE-2019-5420. Analýza CVE-2019-5418 (zobrazit si lze libovolný soubor na serveru, například /etc/passwd) na blogu Chybeta.

Ladislav Hagara | Komentářů: 1
včera 23:33 | Zajímavý projekt

Na Humble Bundle byla spuštěna akce Humble Book Bundle: Web Programming by O'Reilly. Za 1 dolar a více lze koupit 5 elektronických knih, za 8 dolarů a více lze koupit 11 elektronických knih a za 15 dolarů a více lze koupit 17 elektronických knih věnovaných webovému programování od nakladatelství O'Reilly Media. Část ceny lze určit charitě.

Ladislav Hagara | Komentářů: 0
včera 23:00 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 162. brněnský sraz, který proběhne v pátek 22. března od 18:00 v restauraci Slatinský šenk na adrese Zlínská 12.

Ladislav Hagara | Komentářů: 0
včera 16:22 | Nová verze

Jonathan Thomas oznámil vydání nové verze 2.4.4 video editoru OpenShot (Wikipedie). Přehled novinek na YouTube. Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.

Ladislav Hagara | Komentářů: 0
včera 15:22 | Zajímavý článek

Mozilla.cz informuje, že Firefox bude mít nového správce hesel Lockbox. Lockbox bude integrován s Firefox Monitorem – službou pro varování při únicích dat.

Ladislav Hagara | Komentářů: 0
včera 11:33 | Nová verze

Webový prohlížeč Falkon založený na QtWebEngine (Blink) byl vydán ve verzi 3.1. Podle seznamu změn zlepšuje integraci v rámci KDE, opravuje několik chyb a stabilizuje podporu rozšíření v Python a přidává podporu QML.

Fluttershy, yay! | Komentářů: 2
včera 11:22 | Komunita

Česká Wikipedie je dnes vypnuta. Na protest proti evropské reformě autorského práva.

Ladislav Hagara | Komentářů: 15
Kolik balíčků (v tisících) máte nainstalovaných na svém systému?
 (4%)
 (13%)
 (33%)
 (30%)
 (19%)
 (3%)
 (2%)
 (1%)
 (3%)
Celkem 228 hlasů
 Komentářů: 22, poslední dnes 12:39
Rozcestník

Binární strom (Go)

11.1. 00:37 | Přečteno: 1780× | Linux | poslední úprava: 11.1. 00:32

Zobrazení výšky:


a
 \
  b
   \
    c
     \
      d
       \
        e
         \
          f
           \
            g
a b c d e f g


      d
     / \
    c   e
   /     \
  b       f
 /         \
a           g
d c e b f a g


    d
   / \
  b   f
 / \ / \
a  c e  g
d b f a g c e


Program načte slova se souboru a vypíše je srovnané, včetně jejich četnosti.
package main

import (
    "bufio"
    "fmt"
    "os"
    str "strings"
)

type tree struct {
    word        string
    count       int
    left, right *tree
}

func main() {
    if len(os.Args) < 2 {
        fmt.Println("Missing file argument!")
        os.Exit(1)
    }
    f, err := os.Open(os.Args[1])
    if err != nil {
        fmt.Fprintf(os.Stderr, "err v%\n", err) 
        os.Exit(1)
    }
    line := bufio.NewScanner(f)    
    
    var root *tree
    for line.Scan() {
        words := str.Fields(line.Text())
        for _, w := range words {
            root = add(root, w) 
        }
    }    
    print(root)    
}

func add(t *tree, w string) *tree {
    if t == nil {        
        return &tree{word: w, count: 1}
    }
    if w == t.word {
        t.count++
    } else if w < t.word {        
        t.left = add(t.left, w)    
    } else {        
        t.right = add(t.right, w) 
    }
    return t
}

func print(t *tree) {
    if t != nil {
        print(t.left)
        fmt.Printf("%-20s%d\n", t.word, t.count)
        print(t.right)
    }
}
Funkce Fields rozdělí řádek podle bílých znaků a vrátí jednotlivá slova jako slice řetězců. Funkce print vypisuje slova v abecedním pořadí - prochází stromem in-order.

Takže kdyby soubor obsahoval tento text
A pointer is a variable that
contains the address of a variable.
výpis by vypadal takto:
A                   1
a                   2
address             1
contains            1
is                  1
of                  1
pointer             1
that                1
the                 1
variable            1
variable.           1
       

Hodnocení: 20 %

        špatnédobré        

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

Komentáře

Vložit další komentář

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