LOTTO, monellako merkillä onnistuu tuottaa

lottorivi ?

Siis kyllä, merkkien määrästä on kyse, tee millä tahansa kielellä. Katsotaan kuinka vähän merkkejä tarvitaan lottorivin näytölle tulostukseen. Veikkaan että 150 - 200 merkkiä tarvitaan, rivinvaihdot ja ei näkyvät merkit jätetään laskuista pois.

Mukavinta niitä olisi katsella kuvakaappauksina https://imgur.com/ sivuilla, koska täällä ne pätkät särkyvät, ja kuvina taas ovat hankalampi suoraan kopioida toiselta. Tuonne kun ei tarvitse tiliä tehdä, ja kuvatkin on huippulaatua.

ja sitten, ei näitä (7 merkin juttuja) 1 2 3 4 5 6 7 joka sinällään on lottorivi, mutta nyt satunnaislukugeneraattorin tuottamia tuloksia haetaan, joten unohda cat a jolla tulostasi a -tiedoston sisältämät lottonumerot.
28253
Äänestä

Muut lukivat myös

Vastaukset 28

Vanhimmat

Tässä vanha python-versioni:

https://pastebin.com/mYJPGfwk

Tuossa näyttää olevan merkkejä ilman välilyöntejä 559. Saishan tuosta viilattua ainakin kommentit pois.

Äänestä
  • Lyhennettävissä varmaankin, mutta tähän astisista paras.

    Rivejä 22
    Sanoja 63
    Merkkejä 659

    Äänestä

  • lyhyestä-virsi-kaunis kirjoitti:

    Lyhennettävissä varmaankin, mutta tähän astisista paras.

    Rivejä 22
    Sanoja 63
    Merkkejä 659

    Lyhentelin hieman. Nyt ei tulosta kuin arvonnan lopputuloksen. Ilman välilyöntejä 126 merkkiä. Jos ei tarvitse olla järjestyksessä, niin lyhenee vielä 8 merkkiä lisää, kun poistaa rivin a.sort().

    https://pastebin.com/WDiq96Wq

    Äänestä

  • Minulla jäi siihen virhe, joka mahdollisti lottonumerona myös nolla (0), joten korjasin, ja korjaus toi 2 merkkiä lisää: https://pastebin.com/rktRY1FG

    Äänestä

  • lyhyestä-virsi-kaunis kirjoitti:

    Minulla jäi siihen virhe, joka mahdollisti lottonumerona myös nolla (0), joten korjasin, ja korjaus toi 2 merkkiä lisää: https://pastebin.com/rktRY1FG

    Muutin arvontasilmukan forista whileksi ja sijoitin satunnaisluvun suoraan pop-funktioon. Näyttäisi 103 merkkiä tulevan yhteensä.

    https://pastebin.com/whKj5KMP

    Äänestä

  • lottopallokala kirjoitti:

    Muutin arvontasilmukan forista whileksi ja sijoitin satunnaisluvun suoraan pop-funktioon. Näyttäisi 103 merkkiä tulevan yhteensä.

    https://pastebin.com/whKj5KMP

    No voihan rähmä, pistin105, ja kun tulin tänne kertoakseni sen, niin täällä oli jo 103. No ei auta, pitää vielä koittaa nipistää edes yksi merkki.

    Äänestä

  • lottopallokala kirjoitti:

    Muutin arvontasilmukan forista whileksi ja sijoitin satunnaisluvun suoraan pop-funktioon. Näyttäisi 103 merkkiä tulevan yhteensä.

    https://pastebin.com/whKj5KMP

    Nyt on varmaan python imetty kuiviin, jokaista pilkkuakin olen tujottanut vartin, ja miettinyt voiko sen kirjoittaa lyhyemin. 101 tämä viimmeinen: https://pastebin.com/jDd5MMQf

    Lyheni 559 ——> 101, alkukin oli jo huippu hyvä, nyt joutuu jo muita kieliä tarkistamaan, eikös vaan.

    Äänestä

  • lyhyestä-virsi-kaunis kirjoitti:

    Nyt on varmaan python imetty kuiviin, jokaista pilkkuakin olen tujottanut vartin, ja miettinyt voiko sen kirjoittaa lyhyemin. 101 tämä viimmeinen: https://pastebin.com/jDd5MMQf

    Lyheni 559 ——> 101, alkukin oli jo huippu hyvä, nyt joutuu jo muita kieliä tarkistamaan, eikös vaan.

    Hyvin lyhennetty, en aluksi huomannut edes mitään eroa.

    Sain kuitenkin pudotettua 69:ään. Vaihdoin hieman lähestymistapaa. Eli se 40:n joukko sekoitetaan shufflella, ja siitä vaan tulostetaan 7 ensimmäistä.

    https://pastebin.com/wsTHi3Lv

    Aloin opettelemaan Javaa. Ryhdyin kokeilemaan tässä opettelun alkuvaiheessa myös loton arpomista. Törmäsin Javassa listoja sekoittavaan shuffleen. Vastaava shuffle näkyy löytyvän Pythonistakin. Siinä mielessä toisesta kielestä tuli apua tähänkin.

    Äänestä

  • Olisi voinut toki pyyhkiä turhat vielä pois, eli 62 merkkiä on nyt tämä viimeisin versioni.

    https://pastebin.com/Q9zDVMY6

    Sen voi ehkä laittaa jopa tähän jatkeeksi, koska ei tarvitse edes sisennyksiä.

    from random import *
    l = [i for i in range(1,40)]
    shuffle(l);
    print(l[:7])

    Äänestä

  • lottopallokala kirjoitti:

    Olisi voinut toki pyyhkiä turhat vielä pois, eli 62 merkkiä on nyt tämä viimeisin versioni.

    https://pastebin.com/Q9zDVMY6

    Sen voi ehkä laittaa jopa tähän jatkeeksi, koska ei tarvitse edes sisennyksiä.

    from random import *
    l = [i for i in range(1,40)]
    shuffle(l);
    print(l[:7])

    Puolipiste unohtui, Python ei ole Java.

    Lukitsen vastaukseni nyt merkkimäärään 61.

    from random import *
    l = [i for i in range(1,40)]
    shuffle(l)
    print(l[:7])

    Äänestä

  • lottopallokala kirjoitti:

    Puolipiste unohtui, Python ei ole Java.

    Lukitsen vastaukseni nyt merkkimäärään 61.

    from random import *
    l = [i for i in range(1,40)]
    shuffle(l)
    print(l[:7])

    Tässä ei auta enään kielen vaihtokaan, nyt se jo tuntuu ihan iholla ettei tuo tuosta enään lyhene.
    shuffle joka sekoittaa talukun sisällön, ja kun siitä sitten tulostetaan 7 ensimäistä, poistaa random komennon tarpeen. Vitun hyvä ellei vieläkin parempi.

    Voi jumaksuta, olipa hyvä että avasin ketjun, tässä on monelle pojalle mallia.

    Äänestä

  • lottopallokala kirjoitti:

    Puolipiste unohtui, Python ei ole Java.

    Lukitsen vastaukseni nyt merkkimäärään 61.

    from random import *
    l = [i for i in range(1,40)]
    shuffle(l)
    print(l[:7])

    Suomi24:sen helmiä, ehdottomasti.

    Äänestä

Kaikki lottorivi-vaihtoehdot mahtui muistaakseni noin 128 megaan muistia. 1990-luvulla se teki vaikeeta, mutta oli se jännä miettiä että siellä se 128 megan möykyssä on 1 kpl oikea rivi, bitcoin-louhimaan vain siitä möykystä ulos se oikea rivi.

Äänestä
  • Louhit oikean rivin ja sitten arvonta huomaa sen ja muuttaa rivin. huomaa kyllä ilman matematiikkaakin että tulokset eivät ole "arvontoja".

    Äänestä

Yhdellä rivillähän tuo toteutetaan ubuntusa. wintowsissa ilmeisesti vaatii useamman rivin...

Äänestä
  • Kerro miten !

    Äänestä

  • trollerson kirjoitti:

    Kerro miten !

    Esimerkiksi C-kielellä voi kirjoittaa kaiken yhdelle riville. Aloittaja tiedusteli pienintä mahdollista merkkimäärää. No ei sekään ole tosielämän koodaamisessa välttämättä se järkevin tavoite. Aivan hyvin ohjelmointikieleen olisi voitu sisällyttää lotto-luokka, jota hyödyntämällä saisi tuloksen yhdellä funktiolla.

    Optimointi on yleisellä tasolla tietysti järkevää. Se ei ole vaan ainoastaan merkkien kyttäämistä, vaan enemmänkin parempien algoritmien kehittelyä. Ohjelmointikielen valintakin vaikuttaa. Tulkattava kieli on aina tulkattavaa.

    Äänestä

Linux bash-skriptinä (kopioi rivi päätteeseen)
shuf -i 1-40 -n 7
Jos haluaa tuloksen sortattuna yhdelle riville
shuf -i 1-40 -n 7 | sort -n | xargs echo

Äänestä
  • 1 2 3 8 15 31 39
    Nyt sitten miljoonat voittavat... tai sitten ei...

    Äänestä

  • Mutta onko tuo ohjelmointia onkin sitten toinen kysymys ;-)

    Windowsin Powershellillä vastaava tehdään jotenkin näin:

    ((1..40)|Sort-Object {Get-Random})[1..7]

    ja suuruusjärjestyksessä:

    ((1..40)|Sort-Object {Get-Random})[1..7] | Sort-Object

    En tiedä onko optimaalisin tapa, mutta tulipahan kokeiltua.. pidempi on joka tapauksessa mitä tuon Linuxin suffelikomennon avulla.

    Äänestä

  • Sinä saatanan korealainen, pidät meitä pilkkanasi :((
    Nyt tuli Guinnessin ennätystenkirja mieleen, jostakin syystä :))

    Että sitten näin paljon lyheni: 559 ——> 13 merkkiin. Nyt en sano enään että ei lyhene, jos sanon niin heti joku Bosnia-Hertsegovinan kansalainen tulee ja supistaa 7 merkiin.

    Äänestä

  • Sori, ei pahalla, mutta "zkrtzkrt" toi korean mieleen.

    Äänestä

  • lyhyestä-virsi-kaunis kirjoitti:

    Sinä saatanan korealainen, pidät meitä pilkkanasi :((
    Nyt tuli Guinnessin ennätystenkirja mieleen, jostakin syystä :))

    Että sitten näin paljon lyheni: 559 ——> 13 merkkiin. Nyt en sano enään että ei lyhene, jos sanon niin heti joku Bosnia-Hertsegovinan kansalainen tulee ja supistaa 7 merkiin.

    Jos tuon shuf-komennon muuttaisi renamella vaikka pelkäksi ässäksi, niin lähtisi vielä 3 merkkiä poijes ;-)

    Mutta saahan tämän kyllä supistettua yhteenkin merkkiinkin... jos tälle linjalle lähdetään :-D Tekee vaan komennon joka oksentaa pihalle 7 lukua väliltä 1-40... ja komennon nimi on sitten vaikka "s".

    Äänestä

  • Optimoia kirjoitti:

    Jos tuon shuf-komennon muuttaisi renamella vaikka pelkäksi ässäksi, niin lähtisi vielä 3 merkkiä poijes ;-)

    Mutta saahan tämän kyllä supistettua yhteenkin merkkiinkin... jos tälle linjalle lähdetään :-D Tekee vaan komennon joka oksentaa pihalle 7 lukua väliltä 1-40... ja komennon nimi on sitten vaikka "s".

    Kyllähän remane ja aliakset kelpaa, mutta silloinhan se on osa suoritusta, ja siihenkin kuluu merkkejä.

    Äänestä

  • lyhyestä-virsi-kaunis kirjoitti:

    Kyllähän remane ja aliakset kelpaa, mutta silloinhan se on osa suoritusta, ja siihenkin kuluu merkkejä.

    Pitäiskös tässä laskea kaikki toimenpiteet? Bash taitaa aueta Ctrl Alt T:llä. Kolme näppäintä kuluu siihenkin.

    Äänestä

  • merkki.merkistä kirjoitti:

    Pitäiskös tässä laskea kaikki toimenpiteet? Bash taitaa aueta Ctrl Alt T:llä. Kolme näppäintä kuluu siihenkin.

    Eihän nyt näppäilyjä lasketa, vaan merkkejä jotka näkyvät.

    Äänestä

VoimaEssolla yhdelle riville.

(((1..40)|Sort-Object {Get-Random})[1..7] | Sort-Object) -join " "

Äänestä
  • VoimaEssolla (PowerShell) näyttää myös onnistuvan.

    Äänestä

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

Kommentoi aloitusta


lyhyestä-virsi-kaunis kirjoitti:

lottorivi ?

Siis kyllä, merkkien määrästä on kyse, tee millä tahansa kielellä. Katsotaan kuinka vähän merkkejä tarvitaan lottorivin näytölle tulostukseen. Veikkaan että 150 - 200 merkkiä tarvitaan, rivinvaihdot ja ei näkyvät merkit jätetään laskuista pois.

Mukavinta niitä olisi katsella kuvakaappauksina https://imgur.com/ sivuilla, koska täällä ne pätkät särkyvät, ja kuvina taas ovat hankalampi suoraan kopioida toiselta. Tuonne kun ei tarvitse tiliä tehdä, ja kuvatkin on huippulaatua.

ja sitten, ei näitä (7 merkin juttuja) 1 2 3 4 5 6 7 joka sinällään on lottorivi, mutta nyt satunnaislukugeneraattorin tuottamia tuloksia haetaan, joten unohda cat a jolla tulostasi a -tiedoston sisältämät lottonumerot.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu