Portál AbcLinuxu, 9. května 2025 18:56

Dotaz: Zjištění posloupnosti

25.5.2010 23:42 Alf
Zjištění posloupnosti
Přečteno: 294×
Odpovědět | Admin
Zdravím,

přemýšlím nad tím, jak zjistit posloupnost v řadě čísel. Mám např. čísla 0,2,4,6,8,11,25 - tedy 0 až 8 je posloupnost.

Máte nějaké nápady, jak to zjistit v php? Předem díky za jakékoliv nápady.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.5.2010 00:39 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: Zjištění posloupnosti
Odpovědět | | Sbalit | Link | Blokovat | Admin
To budeš muset přesněji definovat, co si představuješ pod pojmem "posloupnost". Standardně je to totiž zcela libovolné zobrazení z množiny přirozených čísel do množiny reálných (komplexních) čísel.

Hledáš aritmetickou podposloupnost? Geometrickou? Oscilující? Možností a jejich kombinací je mnoho.
26.5.2010 03:10 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Zjištění posloupnosti
Asi by bylo praktičtější, kdyby někteří tazatelé místo nepříliš povedených pokusů o převyprávění rovnou dávali odkazy na zadání těch zápočtových (nebo dokonce soutěžních) úloh…
26.5.2010 01:12 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Zjištění posloupnosti
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na základě výše uvedeného příkladu, přikládám návrh možného řešení. Sice se nejedná přímo o jazyk php (python), ale to v tomto případě určitě nevadí.
num = [0,1,2,-2,4,6,8,10,11,25,-4,-6]
#num = [3,2,30,11,4,90,5,-3,7]
#num = [0,10,3,7,1,14]
num.sort()
print 'serazeno vzestupne:', num

seqstop = 1
seqstart = 0
diff = num[1] - num[0]
for i in range(1, len(num)):
    if i+2 > len(num): break
    diff2 = num[i+1] - num[i]
    if diff == diff2:
        seqstop += 1
    else:
        # posunutim konce sekvence, je detekovana sekvence na zacatku pole
        # detekuji vyskyt max jedne sekvence v poli
        if seqstop != 1: break
        seqstart += 1
    diff = diff2

print 'zacatek sekvence: index %d ; konec sekvence: index %d' % (seqstart, seqstart+seqstop)
print 'odstup prvku sekvence:', diff
pozn.: sekvence je vždy nalezena a to sekvence posledních dvou čísel
26.5.2010 02:01 Miklik | skóre: 27 | Krnov
Rozbalit Rozbalit vše Re: Zjištění posloupnosti
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud jde o jednoduchou ciselnou posloupnost, tak bych proste porovnaval cisla vedle sebe a pokud 2-0=4-2=6-4, tak je to posloupnost. Zalezi taky jak ma byt dlouha.
Netvrdím to, ale možná je to pravda.
26.5.2010 16:05 Alf
Rozbalit Rozbalit vše Re: Zjištění posloupnosti
Odpovědět | | Sbalit | Link | Blokovat | Admin
Omlouvám se :), jedná se o aritmetickou posloupnost.

ad. Michal Kubeček Spíše je namístě oznámit, že se nejedná o žádnou soutěž ani zápočtovou úlohu. Existují i případy, kde je to potřeba ;)

ad. honza-S Děkuji, prozkoumám. Python také ovládám, tudíž to není problém.

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.