Kirjoittaja |
Viesti |
JPQ
| Keskiviikkona, 5. marraskuuta, 2008 - klo 3.46: | | miten kodaisin ohjelman joka eli tekisi kuvioita tapaan ####-#-#-#####-#### #-#-####-#-#-#####- ####-####-####-#### #-#-####-#-######## ####-#-#-####-#-#-# #-#-#########-##### ####-#-#-#-####-#-# eli risuaitojen pitää olla mainitulla tavalla yhdessä ja sitten vähintään neljä risuaikaa vakaan tai pystyyn ja niille olisi hyvä että ideassa saada antaa maksimipituuskin vaikkapa seitsemän... ja enintään kolme - merkkiä perätysten per pysty ja/tai pysty suunta. ja myös säätö miten paljon saa syntyä noita isoja alueita jossa paljon # merkkejä. noh kuvion teon säännöt samat kuin ristikkolehden kryptojen/sanapalapelien pohjassa joihin tämä oikeastaan liittyy. ps. ei ole koulun harjoitustyö en edes ole koulussa koskaan ohjelmoinnut tai tottapuhuen no olen kyllä (jopa kahdessa tosin toisessa en näyttäny taitojani) mutta vapaaehtoisesti et esitellen taitojani. myös aktiivisesta koodalusta muutenkin aikaa et en ole koskaan ollut oman algoritmin tekijänä hyvä. tai no pari kivaa kaavaa keksinyt (löysin lapsena kait ympyrän itse sinillä ja cosinilla) mutta sitten kun on kyse ongelmasta jota ratkotaan kaavalla se onkin se jota en osaa.
|
Jupp3
| Keskiviikkona, 5. marraskuuta, 2008 - klo 20.33: | | Tähän tyyliin? #include stdio.h int main(void) { printf("####-#-#-#####-####\n"); printf("#-#-####-#-#-#####-\n"); printf("####-####-####-####\n"); printf("#-#-####-#-########\n"); printf("####-#-#-####-#-#-#\n"); printf("#-#-#########-#####\n"); printf("####-#-#-#-####-#-#\n"); return 0; }
|
JPQ
| Keskiviikkona, 5. marraskuuta, 2008 - klo 23.48: | | Jupp3: eipäs vitsailla. yhden huvittavan idean kkesin kyllä jo. tosin se ei ole hyvä idea.
|
Frn
| Torstaina, 6. marraskuuta, 2008 - klo 21.09: | | @JPQ: Itse asiassa tuo Jup3n ratkaisu tuli mullekin ekana mieleen. Suoraan sanottuna en tajunnut selityksestäsi muuta kuin sen, että merkkejä pitäisi tulostaa. Jos purkaisit tarkat muodostus-säännöt kohta kohdalta mahdollisimman yksinkertaisesti ja yksiselitteisesti, niin olisi itselläsikin helpompi pala kehittää se algoritmi.
|
Jarmo Piippo
| Torstaina, 6. marraskuuta, 2008 - klo 22.36: | | JPQ: Hae jostain käsiisi wanhan Bomber-peli-idean jokin lähdekoodi ja lunttaa siitä. Siinähän tehtiin pelikentän alalaitaan satunnaisen korkuisia ja -näköisiä kerrostaloja merkkejä tulostamalla, ja ne piti sitten pelissä saada tuhottua maan tasalle ylälaidassa sivuttain lentävällä, kierros kierrokselta alemmas laskeutuvalla lentokoneella, jottei se törmäisi taloihin, vaan pystyisi laskeutumaan tyhjennetylle alueelle. (Itse toteutin tuon pelin aikoinaan VAX-keskuskoneelle, VT-220-päätteeltä toimivaksi, mutta lähdekoodia ei ole sähköisessä muodossa enää tallessa. :-)
|
JPQ
| Perjantaina, 7. marraskuuta, 2008 - klo 1.18: | | toki tiedän miten bomberissa talot tehdään se ei tässä auta. ja sanotaan jos käsissänne sanaristikkolehti tai lehti jossa muuten julkaistu krypto niin näette miten ne sanojen muodot niissä menee. ps. yritän parempaa selitystä.
|
Tohtori AivoTurmio
| Lauantaina, 8. marraskuuta, 2008 - klo 7.59: | | no siis lähinnä tulee mieleen joku until loop ja random tyyppinen ratkaisu. Eli esim. (ei aito ohjelmointi kieli) koko=RND(4) + 3 until (mytemp eq x) do mytemp=mytemp+1 hashmaara=RND(3) + 4 until (mytemp2 eq hashmaara) do mytemp2=mytemp2+1 print "#" loop mytemp2=0 print "-" loop end
|
Tohtori AivoTurmio
| Lauantaina, 8. marraskuuta, 2008 - klo 8.02: | | oho, siis "mytemp eq x" pitäisi tietenkin olla "mytemp eq KOKO"
|
Tohtori AivoTurmio
| Lauantaina, 8. marraskuuta, 2008 - klo 8.17: | | ja sitten tietysti tuo säätö osuus niin siihen tehdään alkuun jotain tyyliin: max3columns=7 max4columns=5 max5columns=3 kokonaismaaracolumseja=max3colums+max4columns+max5columns ja sitten kun rnd tehdään niin siinähän voidaan mennä vaikka gosubilla tekemään se eli gosub hashmaara ja itse gosub pätkä sitten: if(kokonaismaarakolumnseja eq 0) then mystatus=1 else mystatus=0 ja kokonaismaaracolumseja=kokonaismaaracolumseja-1 until (mystatus eq 1) do hashmaara=RND(3)+4 switch(hashmaara) hashmaara eq 3: if (max3columns eq 0) then ei mitään else status=1 ja max3columns=max3columns-1 hashmaara eq 4: if (max4columns eq 0) then ei mitään else status=1 ja max4columns=max4columns-1 hashmaara eq 5: if (max5columns eq 0) then ei mitään else status=1 ja max5columns=max5columns-1 loop return
|
Tohtori AivoTurmio
| Lauantaina, 8. marraskuuta, 2008 - klo 17.57: | | itseasiassa kun haluat noita sekä pysty että vaakasuoraan niin tuli parempi vaihtoetho tässä mielen. Eli ensiks isamat että määritellään ne määrät. Eli max3columns=1 max4..=2 ...=3 ... Tämän jälkeen sitten määritellään alueen koko, esim KOKO=7x7 (käytännössä siis tehdään kaksi ulotteinen taulukko) tämän jälkeen sitten käydään taas until loopeilla lävitse nämä kaikki comnsit eriksensä. Eli vaikka seuraavasti mytemp=4 (olettaen että etri maxcolumnseja on 4) counter=0 until (counter eq mytemp) do mytemp=mytemp+1 counter2=0 until(counter2 eq max(mytemp+3)columns) max(mytemp+3)columns muuttuu siis ensimmäisellä kierroksella esim max4columnsiksi, seuraavalla kierroksella max5columnsiksi jne.) nämä vain jotta käy läpi kaikki mutta sitten itse muodostus: do counter2=counter2+1 x=mytemp+3 (saadaan siis columnsin pituus) rnd(1) jos on 0 niin vaaka, jos 1 niin pysty tämän jälkeen sitten rnd(koko-x) tämä -x jotta saadaan aikaisin mahdollinen paikka missä kyseinen columsivoi olla. siis esim. jos koko on 7 ja colums koko on 7, niin columsin on pakko alkaa kohdasta 0, jotta 7 "#" mahtuu siihen, muutoin loppuu rivi kesken. sen jälkeen tämä toinen rnd(koko) voi olla missä kohtaa kokoa tahansa, koska sillä ei ole rajoitusta. Siis esim jos tuele pysty, niin enisksi katsotaan mistä kohtaa pystyä alkaa, esim kohdasta 1, sitten vain katsotaan mikä vaakarivi, esim 5, niin silloin aloituskohta on (5,1) Tässä tosin tuli viel äsellainen ajatusvirhe itselläni että tässä täytyy vielä tarkistaa ettei esim 4 hashia osu 7 sisälle (jolloin se ei näkyisi ollenkaan) ja lsiäksi se että noita paikkoja täytyy varata siten että samalle vaaka kohdalle ei voi tulla enää toista ennenkuin se tietty "-" väli on siinä. siis esim jos KOKO on 10x10., niin jos 3 hashia tulee kohtaan 2,1 vaakaan, niin silloin 3,1 4,1 5,1 ja 6,1 (-) ovat kaikki varattuja, ja aikaisin kohta on 7,1 johon voi tulla, ja lsiäksi 0,1 ja 1,1 ei hash jono mahdu, paitsi jos on 1 hashin kokoinen. Mutta niitä en tähän jaksa pohtia, jätän tämän tähän ja pohdi sinä tuo loppuun jos tarvetta on ja kiinnostuista riittää.
|
|