Uusi putkaposti on Otto Ebelingin käsialaa:
https://www.ohjelmointiputka.net/postit/tehtava.
Käsittääkseni tähän on valmis algoritmi, jolla pääsee 1023 kytkimen kääntöön.. .. no pääsimpä kerrankin ekaksi :D eikä tarvinnut edes kaivaa sitä valmista algoa.
Sinänsähän tuossa tehtävänannossa kun sanotaan, että homma "alkaa jännityksellisissä tunnelmissa huoneen ollessa pimeänä", niin eihän tuolla ole mitään merkitystä. Eli mikä tahansa toimiva vastaus toimii sellaisenaan mille tahansa alkutilanteelle.
Meni aikaa hukkaan, kun tuli Pythonilla tuli jokin typerä koodausvirhe (jälkiviisaus: näköjään 2** puuttui). Tein sitten Perlillä, pituutta tuli huimat viisi lyhykäistä riviä (sis. sulkeva aaltosulku). Fääaaöyyvfrg ynhfrxxrrg bing xägrivä.(rot13)
Vanhat lukiomatematiikan menetelmät (tällä kertaa vaqhxgvb(rot13)) ovat usein avuksi. :)
Grez kirjoitti:
Sinänsähän tuossa tehtävänannossa kun sanotaan, että homma "alkaa jännityksellisissä tunnelmissa huoneen ollessa pimeänä", niin eihän tuolla ole mitään merkitystä.
Ei toki tehtävän kannalta, mutta esimerkkitapaus on helpompi antaa.
Metabolix kirjoitti:
Fääaaöyyvfrg ynhfrxxrrg bing xägrivä.
Miten ihmeessä noista tässä tapauksessa oli hyötyä?
;_; ra bfnn yhxvbzngrzngvvxxnn(rot13)
Grez kirjoitti:
Metabolix kirjoitti:
Fääaaöyyvfrg ynhfrxxrrg bing xägrivä.
Miten ihmeessä noista tässä tapauksessa oli hyötyä?
Tässä on ratkaisuni, tunnistanet yleisesti käytetyn koodauksen.
IyEvdXNyL2Jpbi9wZXJsCiRfID0gIiI7 CmZvciAoJGkgPSAxMDsgJGkgPiAwOyAt LSRpKSB7CglzL158KD88PVxuKS8kaVxu L2c7Cn0KcHJpbnQgJF87Cg==
Lukusarjan saa tulostettua yllättävän yksinkertaisesti rekursiolla. Toteutus mahtuu helposti yhdelle <80-merkkiselle riville sopivalla kielellä.
No joo, tarkoitin lähinnä, että miten niistä oli hyötyä.. Helpommallahan tuosta olisit IMO selvinnyt ilman niitä..
Ja en kyllä ymmärrä tuota rekursiotakaan. PHP:llä 52 tavua ilman rekursiota. Tai 46, jos ei välitä mahdollisesta warningista.
Oma ideani:
bWFpbiA9IGYgMTAKCmYgMSA9IHByaW50IDEKZiBuID0gZiAobi0xKSA+PiBwcmludCBuID4+IGYg KG4tMSkK
Pituus 49 merkkiä jos poistaa turhat välit. Sen voi tietysti toteuttaa silmukallakin, mutta rekursio on minusta selkeämpi.
Metabolix kirjoitti:
Tässä on ratkaisuni, tunnistanet yleisesti käytetyn koodauksen.
Ra!(rot13)
Saanen kysyä että mitä tämä on?
Keskustelua..?
Jostain syystä tuosta tuli mieleen eräs internet-meemi.
Jokotai kirjoitti:
Ra!(rot13)
Onfr<xhhfarywä>(rot13)
Grez kirjoitti:
Keskustelua..?
Mitä nämä asdf1234grlojkt... jutut ovat? jos täällä ei olisi moderaattoreita, kuvittelisin vandalismiksi.
No voisit kysyä yksiselitteisemmin. Ne on rot13-koodattuja tekstejä..
Täällä on muodostunut käytännöksi että jos laitetaan ratkaisuja tehtäviin, niin ei laiteta niitä selväkielisinä, jotta ei vahingossa anna ratkaisua sellaiselle, joka haluaa vielä itse yrittää ratkaisua.
Veikkaisin rot13:taa joko kieleksi tai sitten valheeksi. Varmaan kieli. LOL
funktio: Näppärää, en ajatellut tehtävää tuolta kannalta.
Jokotai: Et ole myöskään ratkaissut tehtävää, joten sinun ei kuulukaan päästä lukemaan ratkaisuja. ;) Mutta kyseessä on joka tapauksessa Base64-enkoodaus (purettavissa täällä).
Horny The Horrible: Tehtävän ratkaisseet ovat perinteisesti keskusteelleet ratkaisuistaan rot13-koodatuilla viesteillä (kirjaimet a-m vaihdetaan kirjaimiin n-z ja päinvastoin), jotta jokainen saisi itse keksiä ratkaisun eikä vahingossa voisi lukea muiden ratkaisuja. Koska rot13 ei salaa erikoismerkkejä, se ei sovellu kovin hyvin ohjelmakoodin lähettämiseen, joten käytin toista yleistä enkoodausta, jonka moni tunnistaa ja osaa purkaa. (On joka tapauksessa tyhmää kopioida toisen ratkaisu; sillä vain todistaa olevansa liian huono ratkaisemaan tehtävää itse.)
Nyt ymmärrän. ;D
Lisää aiheesta (alkuperäinen tehtävä) täällä:
uggc://ra.jvxvcrqvn.bet/jvxv/Tenl_pbqr
Pitäisi tehdä putkaan "vastaus"-kooditagi, jonka sisällön saa näkyviin vaan halutessaan. >:D
Ei vastauksia tarvitsisi julkisesti jakaa ollenkaan. Mielummin private keskustelu niille jotka ovat ratkaisseet pulman haetulla vastauksella.
Milo kirjoitti:
Ei vastauksia tarvitsisi julkisesti jakaa ollenkaan. Mielummin private keskustelu niille jotka ovat ratkaisseet pulman haetulla vastauksella.
Tuo olisi tosiaan parempi ratkaisu...
TWludXN0YSBlaSBrYW5uYXR0YWlzaSBqYWthYSB2YXN0YXVrc2lhIHTk5Gxs5Cwga3VrYSB2YWFu
IHZvaSBzZWx2aXR05OQga29vZGluIGphIHNhYWRhIHTkeWRldCBwaXN0ZWV0IHRlaHTkduTkbiA9
KQ==(Base-64)
Perinteisesti ei näissä keskusteluissa ole vilauteltu koodeja vaan ideoita :O
Tässä on vielä yksi idea: inyzvva infgnhxfra ibv xvewbvggnn grxfgvrqvgbevyyn nvanxva xhhqryynxlzzraryyäarywäyyä aäccävzracnvanyyhxfryyn (fvf. pbageby inyvaabvffn wn xbcvbvaarvffn). Onnistuuko joku vielä optimoimaan tätä (yleispätevästi, ei millään yksittäisellä välineellä)?
Varmaan joku emacs- tai vi-guru tms. hoittaa homman aika pienellä.
Miten olisi oma keskustelu johon pääsisivät vain vastauksen tehtävään antaneet?
Mitä vikaa rot13-keskustelussa on? Tuskin sitä kukaan onnistuu vahingossa lukemaan, ja toisten ratkaisuja kopioimalla ei saavuta yhtään mitään. Valikoituja paloja lukemalla voi myös oppia paljon ja keksiä jonain päivänä itsekin ratkaisun. Esimerkiksi ensimmäisessä viestissäni on vinkki, joka ei paljasta ratkaisua mutta voi johtaa oikeille jäljille.
Ongelmana erillisessä keskustelussa on, että kaikkiin tehtäviin ei tunneta parasta ratkaisua. Kenellä olisi oikeus keskustella? Suljetaanko aiemmat keskustelijat pois, jos joku lähettääkin tehtävään vielä paremman ratkaisun? Kaikkia vastauksen lähettäneitä ei varmasti voi päästää mukaan, koska useimpiin tehtäviin on jokin triviaali ratkaisu, jolla saa nimensä listalle, vaikkei pisteitä paljon tulisikaan.
Ainakin itse saan lisämotivaatiota Putkapostien ratkaisemiseen vertaamalla omaa tasoani muihin pistelistan avulla. Jos valmiita ratkaisukoodeja esitetään julkisesti, ilmaisia pisteitä on tarjolla kaikille halukkaille ja tulostaulu menettää merkitystään.
Aika monta vanhaa tehtävää olen ratkaissut viime kuukausina, kun olen pyrkinyt parantamaan sijoitustani. Terävin huippu tuntuu olevan taitojeni ulottumattomissa, joten hatunnosto paremmille :)
Olen samaa mieltä siitä, että valmiita ratkaisuja ei yleensä kannata postata keskusteluun. Tässä se ei kuitenkaan minusta haittaa, koska kyseessä on todella tunnettu ongelma johon löytyy netistä paljon tietoa ja ihan valmiita ratkaisujakin, jos joku välttämättä haluaa "huijata".
Tästä voisi tehdä vaikeutetun alitehtävän, jossa Uolevin pitäisi saada kytkimet kulumaan mahdollisimman tasaisesti. Eli siinä täytyisi saada homma 1023 vaihdolla tehtyä, mutta pisteet tulisi sen mukaan, mikä on eniten "kuluneen" kytkimen kytkentämäärä. Näissä tyypillisissä vastauksissahan se on huonoin mahdollinen eli 512, ja ainakaan 103 parempaa ei voi saada. En tiedä onko 103:kaan käytännössä mahdollinen.
Ihan äkkisesti tulee mieleen helppojakin keinoja joilla luvun saisi alle 200:n.
Metabolix kirjoitti:
Mitä vikaa rot13-keskustelussa on? Tuskin sitä kukaan onnistuu vahingossa lukemaan, ja toisten ratkaisuja kopioimalla ei saavuta yhtään mitään.
Ei toki vahingossa, mutta jos on kiinnostunut yleisistä mielipiteistä eikä ratkaisuista, on turhien rot13 viestien selailu rasittavaa. Heittelin vaan ajatuksia. Kivahyvä näinkin.
Grez kirjoitti:
Tästä voisi tehdä vaikeutetun alitehtävän, jossa Uolevin pitäisi saada kytkimet kulumaan mahdollisimman tasaisesti.
Hyvä tehtävä. Kun funktion ratkaisuun liittää yksinkertaisen ahneen tarkituksen, yhtä kytkintä käytetään enintään 127 kertaa. Parempi ratkaisu vaatisi enemmän ajattelua. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.