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

Anonyymi

3

498

    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. On tiedossa, että venäjämieliset diggaavat diktatuurista venäjää

      jossa ei esim. ole sanan- ja lehdistönvapautta. Mutta keitä nämä venäjän palvojat sitten ovat, ei heitä toki paljon ole
      Maailman menoa
      19
      2156
    2. Vihreiden, SDP:n ja Vasemmistoliiton kannattajista selvästi alle puolet on miehiä

      ja silti joku punafeministi valitti kokoomuksen naiskannattajien puutteesta, vaikka siellä on enemmän naisia kuin punavi
      Maailman menoa
      39
      2045
    3. Belfastissa käynnissä kunnon persuilu

      Joku random mamu tekee rikoksen, niin sikäläiset naamiopersut kostavat tuhoamalla kantaävestön omaisuutta. Liekö siellä
      Maailman menoa
      22
      1930
    4. Persujen kannatusromahdus tekee kesästä 2026 nautinnollisen

      Satoi tai paistoi, niin Suomen kansalaisella on kuluvana kesänä syytä hymyyn. Niin upealta tuntuu persujen kannatusroma
      Maailman menoa
      46
      1357
    5. Mitä kirjainta haluaisit

      Ra kastella mahdottomasti?
      Ikävä
      73
      1297
    6. Onko kaivattusi rohkeampi kuin sinä?

      Vai oletko sinä rohkeampia? Mikä on rohkea teko, minkä sinä tai kaivattusi on tehnyt? Mitä siitä seurasi?
      Ikävä
      46
      863
    7. Kaunein nimi

      Mikä on mielestäsi kaunein miehen ja naisen nimi? Haluaisitko itse olla joku toisen niminen?
      Ikävä
      56
      782
    8. Farmi-Amski ja Jucci Hellström - Sydämiä satelee - Onko tässä jotain enemmän?

      Amskidamski Anne-Mari Tarkkio ja Jucci Hellström olivat samaan aikaan Farmi Suomi -realityssä. Nyt somessa on nähty mat
      Kotimaiset julkkisjuorut
      8
      721
    9. Arvaa sattuuko se

      Että teen töitä siihen että unohdan sinut. Mitä muutakaan voin
      Ikävä
      52
      703
    10. Rakastan sinua hiljaisuudessa

      Rakastan sinua hiljaisuudessa. Olisit minun tai et, olen odottanut sinua vuosisatojen ajan. Ilman sinua sydämeni on yksi
      Rakkaus ja rakastaminen
      32
      688
    Aihe