Tässä on uusi putkapostitehtävä:
https://www.ohjelmointiputka.net/postit/tehtava.
Ratkaisua voi koettaa etsiä sekä kynällä ja paperilla että tietokoneella.
Lisäisitkö Antti vielä sen eri-sanan, jonka ehdotin sähköpostitse myöhemmin? Vaikka en sanonut selvästi tekstissäni, oletukseni oli, että samaa väriä ei saa olla kuin kerran yhdessä kolmikossa.
Eikös se tulisi selvemmin ilmi, jos sanoisi "Jokaiselle joukkueelle määrätään kolme eri väriä - -"?
Tietysti jos muutit tehtävää, en protestoi. Mallivastaukseni ei vain silloin päde 100 % ^_^
Nyt lisäsin tehtävänantoon tuon unohtamani selvennyksen. Tarkistusohjelman onneksi ymmärsin koodata alusta alkaen niin, että se vaatii jokaiselle joukkueelle kolme eri väriä.
Tack & OK. Minä en sano enempää, paitsi sen, että kaikki oleellinen tietämäni tehtävästä on myös Antin tiedossa.
Tekstieditoriin taulukkoa, ei kai sitä nyt parempaakaan tekemistä tähän aikaan.
Olipas hyvä tehtävä!
"Mallivastaukseni ei vain silloin päde 100 % ^_^"
Onhan 20 joukkuetta maksimi?
Ohjelmani löytää ensimmäisen sekunnin aikana 20p joukkueen(joskus saattaa mennä pidempäänkin). Tämän jälkeen niitä löytyy noin vajaa 20 ratkaisua sekunnissa :)
Voisi koittaa harjoituksena ratkaista tuon Haskell:ta käyttäen. Oppisi sitäkin sitten paremmin. Oman viidessä minuutissa kehittelemäni ratkaisumenetelmä voisi jopa toimiakin. Katsotaan, jos tästä saisi ratkaisun aikaiseksikin, kun edellisestä se jäi hieman (mutta ei paljoa) kesken.
Seriffi kirjoitti:
Onhan 20 joukkuetta maksimi?
12*11/2 = 66 eri väriparia. 3 väriparia joukkuetta kohdin. Todennäköisesti maksimi on siis 22 joukkuetta :) Tämä on tosin vain teoreettinen maksimi, mutta tehtävän luonteen perusteella se vaikuttaa mahdolliselta.
Arght, sittenhän sitä joutuu palata suunnittelupöydän ääreen. 20 joukkueen ratkaisuja on kertynyt tähän mennessä 33701 kpl.
Minusta on tavallaan kurjaa, kun paljastetaan mahdollisesti se suurin mahdollinen joukkueiden määrä. Mukavampi ratkoa, kun ei tiedä mihin tulokseen pitäisi päästä vaan joutuisi itse miettimään, onko se nyt se optimaalisin tulos vai voiko vielä mahdollisesti parantaa. Jos sen paljastaa, niin sitten poistuu tuo pohdinta oman ratkaisun "pätevyydestä", jos tietää jo että saamaansa tulosta ei voi enää parantaa.
FooBat kirjoitti:
12*11/2 = 66 eri väriparia. 3 väriparia joukkuetta kohdin. Todennäköisesti maksimi on siis 22 joukkuetta :) Tämä on tosin vain teoreettinen maksimi, mutta tehtävän luonteen perusteella se vaikuttaa mahdolliselta.
Rot13 -sotkettuja spoilereita:
Wbf nfvnn ghgxvfgryrr uvrzna yvfää, wn invxxncn zrexxnn 12k12 zngevvfvva inenghg iäevcnevg, ibv fhugrryyvfra äxxvä wbugnn lyäenwna xnxfvxlzzragä. Gäzä lyäenwn frhenn fvvgä, rggä luqra wbhxxhrra yvfääzvara zrexxnn 6 cnevn qvntbannyva hyxbchbyryyr, wn fvvgä, rggä cnevyyvfhhfflvfgä wbxnvfryyr innxnevivyyr ghyrr qvntbannyvehhqha yvfäxfv iävfgäzäggä lxfv gluwä ehhgh. (xnxfvgbvfgn*xnxfvgbvfgn-xnxfvgbvfgn-xnxfvgbvfgn)/xhhfv = xnxfvxlzzragä.
Seriffi kirjoitti:
Onhan 20 joukkuetta maksimi?
Minulla ei ole mitään lisättävää VilleP:n salattuun tekstiin. Hyvin samalla tavalla itsekin ajattelin. Ei nyt sanota suoraan tarkkaa tietoa kuitenkaan, että myös uusi yrittäjä saa itse pohtia, jos haluaa.
Onko tossa rot13 vaihdettu jokainen kirjain 13 edempänä olevvaan kirjaimeen?
(Halusin vaan tietää)
vehkis91 kirjoitti:
Onko tossa rot13 vaihdettu jokainen kirjain 13 edempänä olevvaan kirjaimeen?
ok
Jaahas, tämä olikin hankalampi mitä äkkiseltään luulin. Sainkin vasta 15 tulosta omalla yksinkertaisella algoritmillani. Tuosta ilmeisesti on vielä varaa parantaa. Pitänee tarttua kynään ja paperiin ja miettiä matematiikkaa enemmän tuon takana.
Hyvinkin yksinkertaisella koodinpätkällä pääsin tulokseen 19, pitää katsoa jos jaksaisi vielä miettiä parempaa tapaa, että pääsisi edes siihen 20:een.
Ei se 20 mitään järkyttävää oivallusta vaadi myöskään.
Metabolix kirjoitti:
Ei se 20 mitään järkyttävää oivallusta vaadi myöskään.
EPÄMÄÄRÄINEN SPOILAUS:
Pääsin siihen niinkin hienosti, että ensin tein kaikki mahdolliset kolmen värin yhdistelmät ja sitten sieltä poimin randomijärjestyksessä semmoisia, joilla ei ollut jo poimittujen kanssa kuin korkeintaan yksi yhteinen väri, niin kauan kuin yhdistelmiä piisasi. Sitä sitten ajoin niin monta kertaa, että pääsin 20:een :)
19 paras mihin päässy kun randomilla annan koneen arpoa minuutin verran. Numerojärjestyksessä kun kokeilee niin antaa vain 17.
User137 kirjoitti:
19 paras mihin päässy kun randomilla annan koneen arpoa minuutin verran. Numerojärjestyksessä kun kokeilee niin antaa vain 17.
Ainakin itse sain 19 numerojärjestyksessä poimimalla...
Tulihan se sieltä. Löysin useita 19 joukkueen liigoja ilman koodia pienellä päättelemisellä, mutta alkoi vaikuttaa siltä, että 20 vaatisi joko todella paljon kokeilemista tai enemmän miettimistä. Toteutin nyt Haskellilla yksinkertaisen syvyyshaun, ja pienellä optimoinnilla 20 löytyi parissa minuutissa.
Noniin 20.. pieni bugi oli koodissa tietysti :P Ja niitä ratkaisuja on enemmän kuin 1.
Melko helpolla sitten löytyikin tuo 20. Algoritminkään ei tarvinnut olla kovin monimutkainen. Ensin tosiaan koitin Haskellilla ja sain vain sen 15, mutta vaihdoin sitten lähestymistapaa ja C:llä kirjoitin, niin sain sen 20 joukkuetta. Tuonkin ratkaisun löytämiseen menee omalla algoritmilla ihan muutama sekunti.
Nyt vain seuraavaa putkapostia odottelen...
20 löytyy todistettavasti myös ihmisaivojen ihmeellisillä kyvyillä kynää ja paperia käyttäen. Kokenut ohjelmoija saanee homman nopeammin tehtyä yksinkertaisella algoritmilla, mutta se ei tosiaan ole aivan välttämätön tähän tehtävään.
Onhan vastauksen löytäminen aina pelkkää kynää ja paperia käyttäen totta kai hienompaa ja antaa enemmän tyydytystä ainakin itselle. En olekaan täysin tyytyväinen tapaani ratkaista tuota, sillä ratkaisu perustuu vain erilaisten vaihtoehtojen läpikäymiseen elikkä kyse on lopulta vain laskentatehosta. Elegantimpi ratkaisukin ohjelmallisesti on varmasti olemassa, aika ei vain tunnu riittävän sen etsimiseen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.