[vastaus aiempaan viestiin]
Kirjoittaja: | Kimmo Vehkalahti |
---|---|
Sähköposti: | - |
Päiväys: | 24.3.2012 10:09 |
(muka) "kieron" muunnosongelman jatkokertomuksen päätösosa: Olin tyytyväinen saatuani homman hoidettua ilman ylimääräisiä muuttujia, mutta Reijolla ja Petrillä oli vielä takataskussa täydennyksiä ja yksinkertaistuksia, joista taas sain itse lisää vinkkejä. Siis pari iteraariota lisää: Ensin Petrin kommentti: "Joo tuo suoraviivaisti hommaa selkeästi, eipä tullut siinä ajateltua VARin logiikkaa ihan loppuun saakka :) Itselläni tuo juokseva numerointi on usein tehty esim. HETUn kaltaisesta muuttujasta (silloin tarvittaneen if(str(HETU)<>str(HETU[-1])).... -lauseketta?)." Sitten Reijon toteamus ja yksinkertaistus: "Tuo näytti ihan peruskauralta rekisteriaineistojen käsittelykentistäni. Tässä vielä yksinkertaistettu versio, jossa ei turhaan tarvita SERiä lainkaan:" *DATA YRITYS4 z+1,z+18,z,z-1 * *VAR y=1 TO YRITYS4 / IND=ORDER,1 *VAR y=if(x>10)then(y[-1]+1)else(y[-1]) TO YRITYS4 / IND=ORDER,2,999 * *11 1 1 zx y z *2 1 *3 1 *1 1 *4 1 *6 1 *6 1 *9 1 *11 2 *8 2 *1 2 *3 2 *5 2 *5 2 *2 2 *13 3 *2 3 *2 3 *3 3 *....................................................... Lopulta huomasinkin, että homma hoituu yhdellä komennolla: *DATA YRITYS5 w+1,w+18,w,w-1 * *VAR y=if(ORDER=1)then(1)else(if(x>10)then(y[-1]+1)else(y[-1])) TO YRITYS5 * *11 1 1 wx y z *2 1 *3 1 *1 1 *4 1 *6 1 *6 1 *9 1 *11 2 *8 2 *1 2 *3 2 *5 2 *5 2 *2 2 *13 3 *2 3 *2 3 *3 3 *....................................................... En suoralta kädeltä osannut kirjoittaa komentoa noin, mutta jälkeenpäin se näyttää tietenkin helpolta ja suoraviivaiselta tavalta ilmaista tämä muunnos. Olen Survoa käyttänyt aika kauan (yli 20 vuotta), joten luulisi tällaisten tehtävien jo pikkuhiljaa sujuvan... :) Eipä silti, aina oppii lisää, ja varsinkin, kun näkee, mitä ja miten muut tekevät näitä hommia. Petrin lopputoteamus tähän oli: "Tuo yo. lienee olennaisesti sama logiikka kuin mitä eilen saatiin, paitsi että menee nyt yhdellä rivillä (ilman alustuksia). Muutoskohdan tunnistamisessa if(x>10) tilalla mulla on yleisimmin if(x<>x[-1]) tyyppinen vertailu." Tästä keskustelu jatkui uusille urille, mutta niitä voisimme nyt sitten käydä täällä Survo-palstalla. Kuten tämä tarinakin osoittaa, kokenutkin käyttäjä oppii aina uusia temppuja Survolla/Musteella työskennellessään. - Kimmo
Vastaukset: |
---|
Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!