Mitenkä annetun merkkijono kaikki permutaatiot generoidaan? Haluaisin tallettaa muuttujiin kaikki kymmennumeroiset luvut, joissa eka numero ei ole nolla. Ilmeisesti merkkijonotaulukkoja käytetään, mutta miten kyseisen merkkijonon voi siten muuttaa 10-numeroiseksi intiksi tai longiksi?
Tai siis oikeastaa tarvitsen luupin, jossa muuttujaan tallennetaan kerralla yksi luku, mutta luuppi käy läpi kaikki permutaatiot. Näin muistia ei kulu tarpeettomasti.
Pikkuapua
2
303
Vastaukset
- Yksinkertaista
Yksinkertaista ja tee homma ensin 2-numeroisena (ja ehkä myös 3-numeroisena), niin sen jälkeen 10-juttu pitäisi onnistua helposti.
- Delete program ? (Y)
Permutaatiossa halutaan järjestää kaikki joukon alkiot.
Jos sinulla on merkkijonossa esim "abc", siitä on mahdollista muodostaa seuraavat permutaatiot :
abc, acb, bac, bca, cab, cba
Jos tosiaan haluat tehdä funktion, joka palauttaisi kaikki permutaatiot vaikka esim. luvusta "1234567890", niin sinulla edessä pienoinen ongelma muistin suhteen. Jos kyse on tosiaan pelkistä luvuista voit vähentää muistin kulutusta tallentamalla kunkin permutaation tulokset suoraan long muuttujiin. Silti noita muuttujia tulee aika paljon .
Helpointa kai laskea ensin kokonaisalkiomäärä eli k! (10! = 3628800) ja sitten varata ensin niille kaikille riittävän suuri taulukko (3628800 x 4tavua = 14515200 = 14,5Mt). Riippuen missä koneessa työskentelet, saatat joutua paloittelemaan taulukon pienempiin osiin. Yleisesti ottaen kaikilla uudemmilla 32-bittisillä koneilla tuo pitäisi olla vielä suhteellisen helppoa. Jos haluat haastetta, tee sama 8-bittisellä koneella. ;)
Vaihtoehtoisesti voit tallentaa permutaatiot linkitettyyn listaan tai sitten molempien (taulukko/lista) tapojen yhdistelmään. Miten vaan tiedot tuntuisivat paremmin saatavilla niiden jatkokäsittelyä silmällä pitäen.
Luodessasi eri permutaatiota suosittelen karsimaan 0-alkuiset pois jo luontivaiheessa, koska siten säästyy muistia. Tällöin tarvittavan muistin määrä on vain k!-(k-1)!.
Ei se tuon kummempi pitäisi olla, jos ymmärsin kysymyksen oikein.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Ensitreffit Jenni laukoo viinilasin ääressä suorat sanat Jyrkin aikeista: "Mä sanoin, että älä"
Voi ei… Mitä luulet: kestääkö Jennin ja Jyrkin avioliitto vai päättyykö eroon? Lue lisää: https://www.suomi24.fi/viihde212606- 1482244
Ymmärrän paremmin kuin koskaan
Roikut kädessäni ja vedät puoleesi. Näen kuitenkin tämän kaiken lävitse ja kaikkien takia minun on tehtävä tämä. Päästän292242Hullu liikenteessä?
Mikä hullu pyörii kylillä jos jahti päällä? Näitä tosin kyllä riittää tällä kylällä.522139Niina Lahtinen uudessa elämäntilanteessa - Kotiolot ovat muuttuneet merkittävästi: "Nyt on...!"
Niina, tanssejasi on riemukasta seurata, iso kiitos! Lue Niinan haastattelu: https://www.suomi24.fi/viihde/niina-lahti211742Kun Venäjä on tasannut tilit Ukrainan kanssa, onko Suomi seuraava?
Mitä mieltä olette, onko Suomi seuraava, jonka kanssa Venäjä tasaa tilit? Ja voisiko sitä mitenkään estää? Esimerkiks3881617Ano Turtiainen saa syytteet kansankiihoituksesta
Syytteitä on kolme ja niissä on kyse kirjoituksista, jotka hän on kansanedustaja-aikanaan julkaissut Twitter-tilillään961556- 2881436
Varokaa! Lunta voi sataa kohta!
Vakava säävaroitus Lumisadevaroitus Satakunta, Uusimaa, Etelä-Karjala, Keski-Suomi, Etelä-Savo, Etelä-Pohjanmaa, Pohjanm131389- 1321389