Plusmiinus jonojen lukumäärä

Anonyymi

Kuinka monta n:n pituista jonoa plus ykkösistä ja miinus ykkösistä voidaan muodostaa siten että jonon alkupään summa pysyy aina epänegatiivisena SEKÄ jonossa ei ole neljää -1:tä peräkkäin?

Esim.
- -- --- -
on tällainen mutta
- --
ei ole, sillä alkupään - -- summa menee negatiiviseksi.
Myöskään
- ----
ei kelpaa, sillä siinä on neljä -:ta peräkkäin.

9

66

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Mikä ihmeen n?

      • Anonyymi

        Luonnollinen luku n on jonon pituus.
        Esim. tapauksessa n=3 sallitut jonot ovat


        -
        -

        Näitä on kolme kappaletta eli vastaus n:n arvolle 3 on 3. Tässä kysytään yleiselle n:n arvolle kaavaa/jotain tapaa laskea tuo arvo.


    • Anonyymi

      Oletetaan merkkijonojen olevan binäärilukuja. Nolla vastaa miinus-merkkiä ja ykkönen plus-merkkiä. Esim n:n arvolla 6 saadaan 20 merkkijonoa:

      101010
      101011
      101100
      101101
      101110
      101111
      110010
      110011
      110100
      110101
      110110
      110111
      111000
      111001
      111010
      111011
      111100
      111101
      111110
      111111

      Ja muilla n:n arvoilla:
      n c
      1: 1
      2: 2
      3: 3
      4: 6
      5: 10
      6: 20
      7: 35
      8: 69
      9: 124
      10: 243
      11: 444
      12: 867
      13: 1602
      14: 3120
      15: 5811
      16: 11296
      17: 21163
      18: 41081
      19: 77312
      20: 149913
      21: 283123
      22: 548524
      23: 1038854
      24: 2011296
      25: 3817941
      26: 7387651
      27: 14050106
      28: 27174054
      29: 51762136
      30: 100073139
      31 190876629
      32 368905094


      Tarkkaa lukumäärää ei voi esittää yksinkertaisen kaavan muodossa. Kaksi epämatemaattista keksittyä ehtoa. Toinen toistaan parempia ja nopeampia tapoja löytyy rajattomasti. Isoilla n:n arvoilla tehtävä muuttuu käytännössä mahdottomaksi laskea.

      • Anonyymi

        Kokeilin eri vaihtoehtoja.

        Tarkasteltavia lukuja ei kannata missään vaiheessa muuttaa merkkijonoiksi (tulostusta lukuun ottamatta). Luvun bittien tarkastelut voidaan suorittaa siirrettävällä (jako kahdella) maskibitillä paljon nopeammin ja helpommin. On tietysti ihan sama miten tekee, jos n on pieni (alle 30).

        Jos tallettaa listaan kaikki aikaisemmat (n-1) luvut ja yrittää katsoa, voiko niihin lisätä (oikealle) yhden bitin lisää, niin muisti loppuu varmasti.


      • Anonyymi
        Anonyymi kirjoitti:

        Kokeilin eri vaihtoehtoja.

        Tarkasteltavia lukuja ei kannata missään vaiheessa muuttaa merkkijonoiksi (tulostusta lukuun ottamatta). Luvun bittien tarkastelut voidaan suorittaa siirrettävällä (jako kahdella) maskibitillä paljon nopeammin ja helpommin. On tietysti ihan sama miten tekee, jos n on pieni (alle 30).

        Jos tallettaa listaan kaikki aikaisemmat (n-1) luvut ja yrittää katsoa, voiko niihin lisätä (oikealle) yhden bitin lisää, niin muisti loppuu varmasti.

        Minä saan rekursiivisella ohjelmalla n=100:aan asti laskettua vielä aika hujauksessa.

        32 : 368905094
        33 : 704436028
        34 : 1361071685
        35 : 2601536541
        36 : 5025323325
        37 : 9613417317
        38 : 18566096001
        39 : 35542816776
        40 : 68630167965
        41 : 131469237249
        ...
        99 : 4249273324587584375262781614
        100 : 8192353731897060343551592766

        Kokeilepas laittaa "putkiehtoon" nelosen tilalle 3, niin löytyy OEIkSesta: http://oeis.org/A191519 . Ajattelin voisiko neloselle keksiä myös generoivan funktion, joka kolmoselle on 2/(1-2*x-x^2 sqrt(1-2*x^2-3*x^4)). Kakkosellahan tulee Fibonacci luvut.


      • Anonyymi
        Anonyymi kirjoitti:

        Minä saan rekursiivisella ohjelmalla n=100:aan asti laskettua vielä aika hujauksessa.

        32 : 368905094
        33 : 704436028
        34 : 1361071685
        35 : 2601536541
        36 : 5025323325
        37 : 9613417317
        38 : 18566096001
        39 : 35542816776
        40 : 68630167965
        41 : 131469237249
        ...
        99 : 4249273324587584375262781614
        100 : 8192353731897060343551592766

        Kokeilepas laittaa "putkiehtoon" nelosen tilalle 3, niin löytyy OEIkSesta: http://oeis.org/A191519 . Ajattelin voisiko neloselle keksiä myös generoivan funktion, joka kolmoselle on 2/(1-2*x-x^2 sqrt(1-2*x^2-3*x^4)). Kakkosellahan tulee Fibonacci luvut.

        Masentavaa! Olin juuri kirjoittamassa miten pääsin pienellä tyhmällä rekursiivisella ohjelmalla alle tunnissa n=39 asti. Samat lukumäärät tuohon asti. Aika lähes tuplantuu joka kerta n:n kasvaessa 1:llä. Kasvatin lukumäärää aina yhdellä kerrallaan, joten aikaa kuluu tietysti valtavasti.

        Sinulla on jotain älykkyyttä mukana ohjelmassasi. Pystyt jotenkin kasvattattaamaan lukumäärälaskuria isoilla kerrannaisilla ja niiden kerrannaisilla. Ja aina oikein. Löytyy varmasti jotain jaksollisuutta.


      • Anonyymi
        Anonyymi kirjoitti:

        Masentavaa! Olin juuri kirjoittamassa miten pääsin pienellä tyhmällä rekursiivisella ohjelmalla alle tunnissa n=39 asti. Samat lukumäärät tuohon asti. Aika lähes tuplantuu joka kerta n:n kasvaessa 1:llä. Kasvatin lukumäärää aina yhdellä kerrallaan, joten aikaa kuluu tietysti valtavasti.

        Sinulla on jotain älykkyyttä mukana ohjelmassasi. Pystyt jotenkin kasvattattaamaan lukumäärälaskuria isoilla kerrannaisilla ja niiden kerrannaisilla. Ja aina oikein. Löytyy varmasti jotain jaksollisuutta.

        Tässä koodini (Pythonia): https://pastebin.com/ZuKzuAkb

        Ideana on se, että rekursioon otetaan parametreiksi

        j = jonon pituus,
        a = miinusputken pituus, väliltä 0,...,3
        b = alkupään summan pituus (väliltä 0,..,n).

        Katsotaan mistä kaikista tiloista (j-1, *, *) tilaan (j,a,b) voidaan päätyä. Jos a>0, niin on voitu tulla (j-1, a-1, b 1):stä lisäämällä jonon perään -1. Jos taas a=0 ja b>0, niin sitten on tultu lisäämällä 1 ja tila, josta on tultu voi olla (j-1, k, b-1) mille tahansa k:n arvolle 0,1,2, tai 3.
        Tulosta varten summataan kaikkien mahdollisten tilojen yli.

        Tämä on ehkä helpompi ajatella "eteenpäin" eli lähdetään tyhjästä jonosta kasvattamaan sitä. Sitähän voi ajatella solmusta (0,0) lähtevien n-kävelyden määränä suunnatulla verkolla, jossa solmuina on kaikki parit (a,b), a=0,1,2,3, b=(0,1,...,n) ja kaari solmusta (a,b)

        1. solmuun (a 1, b-1), jos a<3 ja b>0 (vastaa miinusmerkin lisäämistä jonon perään)
        2. solmuun (0, b 1) (vastaa plusmerkin lisäämistä jonon perään).

        Kysytty lukumäärä saadaan verkon vierekkäismatriisin n:n potenssin ensimmäisen rivin summana (olettaen että solmu (0,0) indeksoidaan ensimmäiseksi).


    • Anonyymi

      Kaikkea oppii, kun vanhaksi elää, sanotaan.
      Lukiossa 55 vuotta sitten ei kukaan tiennyt mitään epänegatiivisista luvuista.

      • Anonyymi

        Niin se on ehkä vähän kankealta tuntuva termi, mutta jos sanotaan positiivinen, niin nolla ei ole mukana. Sitten taas "positiivinen tai nolla" alkaa olemaan liian pitkä.


    Ketjusta on poistettu 1 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Aivosyöpää sairastava Olga Temonen TV:ssä - Viimeinen Perjantai-keskusteluohjelma ulos

      Näyttelijä-yrittäjä Olga Temonen sairastaa neljännen asteen glioomaa eli aivosyöpää, jota ei ole mahdollista leikata. Hä
      Maailman menoa
      77
      2727
    2. Pelotelkaa niin paljon kuin sielu sietää.

      Mutta ei mene perille asti. Miksi Venäjä hyökkäisi Suomeen? No, tottahan se tietenkin on jos Suomi joka ei ole edes soda
      Maailman menoa
      281
      1559
    3. Mikä saa ihmisen tekemään tällaista?

      Onko se huomatuksi tulemisen tarve tosiaan niin iso tarve, että nuoruuttaan ja tietämättömyyttään pilataan loppuelämä?
      Sinkut
      246
      1497
    4. Minkä merkkisellä

      Autolla kaivattusi ajaa? Mies jota kaipaan ajaa Mersulla.
      Ikävä
      87
      1351
    5. IL - VARUSMIEHIÄ lähetetään jatkossa NATO-tehtäviin ulkomaille!

      Suomen puolustuksen uudet linjaukset: Varusmiehiä suunnitellaan Nato-tehtäviin Puolustusministeri Antti Häkkänen esittel
      Maailman menoa
      399
      1321
    6. Nyt kun Pride on ohi 3.0

      Edelliset kaksi ketjua tuli täyteen. Pidetään siis edelleen tämä asia esillä. Raamattu opettaa johdonmukaisesti, että
      Luterilaisuus
      394
      1260
    7. Esko Eerikäinen tatuoi kasvoihinsa rakkaan nimen - Kärkäs kommentti "Ritvasta" lävähti somessa

      Ohhoh! Esko Eerikäinen on ottanut uuden tatuoinnin. Kyseessä ei ole mikä tahansa kuva minne tahansa, vaan Eerikäisen tat
      Suomalaiset julkkikset
      38
      1007
    8. Kiitos nainen

      Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik
      Tunteet
      2
      929
    9. Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?

      Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun
      Maailman menoa
      321
      832
    10. Miksi Purra-graffiti ei nyt olekkaan naisvihaa?

      "Pohtikaapa reaktiota, jos vastaava graffiti olisi tehty Sanna Marinista", kysyy Tere Sammallahti. Helsingin Suvilahden
      Maailman menoa
      254
      822
    Aihe