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 17:22 | Pozvánky

V sobotu 23. února se uskuteční 6. ročník WordCampu – největší konferenci o WordPressu v ČR. Ke konferenci probíhá i soutěž typu CTF (Capture The Flag) o volné vstupenky, kde si lze zkusit zneužít běžné bezpečnostní chyby.

smíťa | Komentářů: 0
dnes 17:11 | Pozvánky

Letošní ročník konference Prague PostgreSQL Developer Day se bude konat 13. a 14. února v prostorách FIT ČVUT. Program konference najdete na stránkách konference, stejně jako registrační formulář.

TomasVondra | Komentářů: 0
dnes 16:55 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě v nástroji pro správu databází v jednom PHP souboru Adminer. Chyba je už půl roku opravena. Stačí Adminer aktualizovat.

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

Byla vydána nová stabilní verze 2.7 svobodné decentralizované mikroblogovací platformy a sociální sítě podobné Twitteru Mastodon (Wikipedie). Detailní přehled novinek na GitHubu.

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

Byla vydána nová vývojová verze datového formátu a souvisejících nástrojů Relational pipes. Verze v0.9 obsahuje vstupní moduly pro fstab, CSV, XML a příkazový řádek; výstupní moduly pro CSV, XML, ODS (ODF), GUI (Qt), hodnoty oddělené nulovým bajtem a tabulkový výstup do konzole. Relační data lze upravovat relačními příkazy grep, cut a sed.

xkucf03 | Komentářů: 59
19.1. 18:33 | Zajímavý software

Podman dospěl do verze 1.0.0. Jedná se o nástroj umožňující vytvářet a provozovat kontejnery, aniž by uživatel potřeboval práva roota.

Ladislav Hagara | Komentářů: 1
18.1. 16:44 | Zajímavý software

Na Kickstarteru lze podpořit vývoj svobodného softwarového nástroje Akira, jenž by měl umožnit designérům designování aplikací v Linuxu. Mělo by se jednat o alternativu k proprietárním nástrojům Sketch, Figma nebo Adobe XD.

Ladislav Hagara | Komentářů: 0
18.1. 12:11 | Zajímavý článek

V Edici CZ.NIC vyšla kniha CyberSecurity věnovaná problematice kybernetické bezpečnosti, a to především jejím základním principům, které by měl respektovat každý, kdo využívá informační a komunikační technologie. Kniha je ke stažení zcela zdarma pod licenci Creative Commons (CC BY-ND 3.0 CZ) (pdf, epub, mobi).

Ladislav Hagara | Komentářů: 0
18.1. 02:00 | Nová verze

Byla vydána nová stabilní verze 0.92.4 a první alfa verze verze 1.0 svobodného multiplatformního vektorového grafického editoru Inkscape. Přehled novinek v poznámkách k vydání (0.92.4 a 1.0alpha0). Obě verze jsou k dispozici také jako balíčky ve formátu AppImage. Stačí je stáhnout, nastavit právo ke spuštění a spustit.

Ladislav Hagara | Komentářů: 6
17.1. 21:22 | Nová verze

Byla vydána verze 1.32 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

Ladislav Hagara | Komentářů: 0
Používáte USB Type-C?
 (20%)
 (16%)
 (11%)
 (12%)
 (37%)
 (4%)
 (43%)
Celkem 438 hlasů
 Komentářů: 0
Rozcestník

Binární strom (Go)

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