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 14:00 | Zajímavý projekt

Vítězným projektem letošního ročníku soutěže určené vývojářům open source hardwaru Hackaday Prize se stal modulární senzorový systém FieldKit.

Ladislav Hagara | Komentářů: 4
16.11. 15:44 | Nová verze

Byl vydán Debian 10.2, tj. druhá opravná verze Debianu 10 s kódovým názvem Buster. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 10 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

Ladislav Hagara | Komentářů: 1
15.11. 13:22 | Zajímavý článek

Na stránkách spolku OpenAlt vyšel Rozhovor s Jaroslavem Tulachem o GraalVM – o kompilátoru umožňujícím v jednom programu kombinovat různé jazyky (Java, JavaScript, Ruby, R, C, C++, Fortran, Rust aj.), překládat do nativních binárek nebo si snadno vytvořit vlastní jazyk a použít při tom stávající ekosystém (debugger, profiler, IDE atd.).

xkucf03 | Komentářů: 0
15.11. 11:55 | Komunita

Bylo spuštěno předobjednávání linuxových chytrých telefonů PINEPHONE v limitované edici BraveHeart. Cena telefonu je 149 dolarů. Cena dopravy do Česka je 15 dolarů. Telefony by mely být odesílány na přelomu prosince a ledna.

Ladislav Hagara | Komentářů: 25
15.11. 02:22 | Pozvánky

Fedora 31 Release Party, tj. oslava nedávného vydání Fedory 31, se uskuteční ve středu 20. listopadu v Brně. Program přednášek bude upřesněn.

Ladislav Hagara | Komentářů: 2
15.11. 01:11 | Nová verze

Příspěvek na blogu webové aplikace pro spolupráci na zdrojových kódech pomocí gitu Gitea (Wikipedie) představuje novinky a ukazuje náhledy nové major verze 1.10.0 této v programovacím jazyce Go naprogramované aplikace. Nově jsou například vedle sebe zobrazovány původní a nové verze obrázků.

Ladislav Hagara | Komentářů: 0
14.11. 22:33 | IT novinky

Společnost Docker stojící za stejnojmennou kontejnerovou technologií čelila vážným finančním problémům. Stávající investoři do ní ale vložili dalších 35 milionů dolarů a společnost Mirantis odkoupila Docker Enterprise.

Ladislav Hagara | Komentářů: 0
14.11. 16:11 | IT novinky

Od 24. listopadu bude možné předobjednat přenosný počítač Pocket Popcorn Computer (Pocket P.C.) s 1.2 GHz Quad-Core ARM Cortex-A53 CPU, 2GB DDR3 RAM, 32GB eMMC Memory, 4.95" Full HD IPS LCD a 3200 mAh Removable Battery. Počítač by měl být odesílán v květnu 2020. Předinstalován by měl být Debian 10.

Ladislav Hagara | Komentářů: 113
14.11. 11:11 | Komunita

Canonical věnoval nadaci UBports další telefony a tablety pro podporu vývoje Ubuntu Touch, tj. Ubuntu pro telefony a tablety. Vybraní vývojáři Ubuntu Touch je mohou získat zdarma.

Ladislav Hagara | Komentářů: 24
14.11. 09:33 | Zajímavý projekt

Společnost GitHub v rámci svého GitHub Archive Programu vytvoří několik off-line záloh open source softwaru nacházejícího se na GitHubu pro budoucí generace. První taková záloha všech aktivních repozitářů proběhne 2. února 2020 ve spolupráci se společností Pigl na jejich piqlFilmy a uložena bude v Arktickém světovém archivu. Případné obnovení ze zálohy by mělo být možné i za 1 000 let.

Ladislav Hagara | Komentářů: 7
Jaké hodinky nosíte (nejčastěji)?
 (25%)
 (6%)
 (16%)
 (54%)
Celkem 224 hlasů
 Komentářů: 16, poslední dnes 10:42
Rozcestník

Binární strom (Go)

11.1. 00:37 | Přečteno: 1826× | 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.