Miksi putkapostin ratkaisuyritys tuottaa väärän tuloksen?

Anonyymi

3

354

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Sulla kun on tuo testi

      s[pos-i] == s[pos i]

      niin sehän testaa että pos:ista eteen- ja taaksepäin on samoja merkkejä eli noin löytyisi (parittoman pituisia) palindromi-pötköjä.
      Pitää testata, että vierkkäiset merkkijonot i:n matkalta ovat samat eli

      s[pos-i:pos] == s[pos:pos i]

      Sittenhän tulee ongelmaksi se, että luuppia ei voi katkaista, jos eroava indeksi löytyy, koska se ei tarkoita, että suuremmalla i:n arvolla ei voisi löytyä toistojaksoa.
      Nuo korjaukset kun tekee (ja tallenna bestPos, se taisi sinulta unohtua, eikä mjonoa tarvitse mihinkään) ja output olisi näin

      print(str(tapaus) " " str(maximi) " " str(bestPos-maximi 1))

      Mutta nyt siis ongelma on että tuo koodi on melkolailla hidas. Itse huijasin ja käytin seuraava Sage-koodia:

      from sage.combinat.words.suffix_trees import DecoratedSuffixTree
      s = 'hfhfggccaggccagccafff'
      start, run2 = max((x[1], x) for x in DecoratedSuffixTree(Word(s)).square_vocabulary())[1]
      print ("{} {}".format(run2/2, start 1))

    • Tänne oli tullut viesti, mutta AI ilmeisesti poistanut (ihan asiallinen mitä alkua inboxistani näin). Kannattaa laittaa koodit linkin taakse johonkin ulkoiseen juttuun, jos se niiden takia poistelee viestejä.

      Tein nyt Python-version, jossa käytin kirjastoa https://pypi.org/project/suffix-trees/ . (Käytin aluksi https://pypi.org/project/suffix-tree/ :aa, mutta se on erittäin paljon hitaampi.) Ensin muodostetaan suffiksipuu ja siitä käydään sitten kaikki sisäsolmut läpi, joista jokaiselle käydään sen solmun lehtisolmu parit, joiden syvyyksien erotus on solmun syvyys. Koittelin tuohon tehdä erinäisiä parannuksia eritoteen 9 ja 10 tapauksissa taisi auttaa sellainen, että ensin tallennetaan dictiin kaikki lehtisolmut syvyyden mukaan ja sieltä voidaan sitten poimia tarvitun syvyinen pari kun yksi lehti on kiinnitetty, tarkastetaan vain onko se oikeassa haarassa. Joissain tapauksissa tuo taitaa vaan tulla liian hitaaksi (jos tutkitun syvyisiä lehtiä on paljon).

      Tässä koodini https://repl.it/@minkkilaukku2/Mannynpera2#main.py . Ei toimi Python 3:lla, koska siellä _SNodella ei ole __dict__ -attributtia mutta Python 2:ssa on, mitä hittoa?!?? Ahaa: https://stackoverflow.com/questions/41658015/object-has-no-attribute-dict-in-python3
      Loppujen lopuksi sain tavalla tai toisella tuolla koodilla kaikki tapaukset järjellisessä ajassa ratkaistua.

      Noh,

      Putkapostin kommenteissa ollut seuraava idea näyttää toimivan paljon nopeammin:
      https://repl.it/@minkkilaukku2/Mannynpera1#main.py

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

    Luetuimmat keskustelut

    1. Trump muka öljyn takia Venezuelaan? Pelkää mustamaalausta

      Kertokaapa mistä tuollainen uutisankka on saanut alkunsta? Näyttäkääpä ne alkuperäiset lähteet, minä en löytänyt mitään
      Maailman menoa
      191
      17956
    2. Kun Arman Alizad puolusti hiihtäjä Vilma Nissilää sanomalla

      "älä välitä sekopäistä Vilma", ja kun siitä kerrottiin täällä, niin sekopäinen mukasuvaitsevainen teki siitä valituksen
      Maailman menoa
      90
      3805
    3. Lataus pakkaskelissä

      En olisi koskaan ostanut sähköautoa jos olisin tajunnut että ne eivät lataa pakkasissa suurteholatauksella vaan istut tu
      Hybridi- ja sähköautot
      33
      1934
    4. Martinalta vahva viesti

      "Suuret unelmat venyttävät sinua, pelottavat vähän ja vievät mukavuusalueen ulkopuolelle. Juuri siellä kasvu tapahtuu. J
      Kotimaiset julkkisjuorut
      280
      1530
    5. Miksei Trump ole kiinnostunut Suomen valloittamisesta?

      Täällähän on enemmän turvetta kuin Norjalla öljyä. Eikö Ttump ole turvenuija?
      Maailman menoa
      67
      1519
    6. Akateemikko Martti Koskenniemi vertaa Trumpia Putiniin

      "-Suomalaisena on syytä olla huolissaan siitä, että Yhdysvallat näin vahvistaa 1800-luvun alkupuolella julistamansa etup
      Maailman menoa
      162
      1431
    7. Jos mies olet oikeasti...?

      Kiinnostunut... Pyydä mut kunnolla treffeille ja laita itsesi likoon. En voi antaa sydäntä jos sinä olet epävarma ja eh
      Ikävä
      115
      1324
    8. Esko Eerikäinen paljastaa järkyttävän muiston lapsuudesta - Isä löytyi alastomana slummista

      Esko Eerikäisen tausta on monikulttuurinen, hän muutti vain 10-vuotiaana yksin kotoaan Kolumbiasta isovanhempiensa luo S
      Suomalaiset julkkikset
      14
      1304
    9. Temutatko ?

      Ostatko kiinalaisista verkkokaupoista halpaa tavaraa tai vaatteita ja miksi? Siksi että on kiva ostaa kun halvalla saa?
      60 plus
      108
      1112
    10. Pitäisikö meidän

      Sitten nähdä ilman että siitä tehdään ongelmaa?
      Ikävä
      81
      1111
    Aihe