Autor Téma: Kolapsovanie zoznamu čísiel (integer)  (Přečteno 134 krát)

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 184
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Kolapsovanie zoznamu čísiel (integer)
« kdy: 29-07-2020, 15:56:50 »
Neriešili ste niekto niečo také, že zo zoznamu čísiel (integer):
1, 2, 3, 5, 7, 8, 11, 13, 14, 15, 16, 17

získať výstup (typ string):
"1-3, 5, 7-8, 11, 13-17"

vstupný zoznam čísiel viem "dodať" aj ako jeden reťazec (s oddelovačom napr ","), alebo ako StringList, alebo ako pole string/integer, alebo ako list string/integer, ...

nepodarilo sa mi vygugliť nič podobné...

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1027
  • Karma: 47
    • Verze Delphi: 10.3
Re:Kolapsovanie zoznamu čísiel (integer)
« Odpověď #1 kdy: 29-07-2020, 16:39:29 »
To přeci není tak těžké napsat - je potřeba si pamatovat pracovní počátek intervalu, pracovní konec intervalu a s každým dalším číslem se podíváš, zda to navazuje na konec intervalu - pokud ano, posuneš pracovní konec intervalu, pokud ne, předchozí interval zapíšeš a inicializuješ nový tím aktuálním číslem.

Jestliže těch čísel bude opravdu hodně, řešilo by se, jak to udělat efektivně s ohledem na práci se stringy.

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1002
  • Karma: 28
    • Verze Delphi: XE8, Seattle
Re:Kolapsovanie zoznamu čísiel (integer)
« Odpověď #2 kdy: 29-07-2020, 17:24:02 »
Tady je knihovna, která obsahuje i funkce pro práci s intervaly:

http://micrel.cz/delphi/download/jbstr.zip

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 184
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Kolapsovanie zoznamu čísiel (integer)
« Odpověď #3 kdy: 29-07-2020, 17:28:16 »
Viem, ze to nie je tazke nakodovat, ale ak to uz niekto riesil, usetrilo by mi to cas…

Dik, za tie zdrojaky, mrknem to.