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.
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.
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.
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
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
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.
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.
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])
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.
Suomi24:sen helmiä, ehdottomasti.
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.
Louhit oikean rivin ja sitten arvonta huomaa sen ja muuttaa rivin. huomaa kyllä ilman matematiikkaakin että tulokset eivät ole "arvontoja".
Yhdellä rivillähän tuo toteutetaan ubuntusa. wintowsissa ilmeisesti vaatii useamman rivin...
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.
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
1 2 3 8 15 31 39
Nyt sitten miljoonat voittavat... tai sitten ei...
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.
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.
Sori, ei pahalla, mutta "zkrtzkrt" toi korean mieleen.
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ä.
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.
VoimaEssolla yhdelle riville.
(((1..40)|Sort-Object {Get-Random})[1..7] | Sort-Object) -join " "
VoimaEssolla (PowerShell) näyttää myös onnistuvan.