Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointiputka: Putkaposti 47: Lukulauseke

Sivun loppuun

Antti Laaksonen [17.04.2011 13:40:09]

#

Uusi putkaposti on ilmestynyt:

https://www.ohjelmointiputka.net/postit/tehtava.php?tunnus=lula

Edellinen putkaposti osoittautui varsin helpoksi, minkä vuoksi uusi tehtävä tuli näin nopeasti.

Antti Laaksonen [17.04.2011 15:08:17]

#

Huom! Tarkistajan toiminta on tällä hetkellä virheellinen! Korjaus on tulossa mahdollisimman pian, sitä ennen lauseketta toki voi jo miettiä.

Chiman [17.04.2011 15:11:05]

#

Ideana lienee kuitenkin se, että vastauksen pitää hyväksyä kaikki välillä olevat luvut ja hylätä kaikki muut merkkijonot?

Antti Laaksonen [17.04.2011 15:12:10]

#

Kyllä, tämä on ideana.

Grez [17.04.2011 15:19:05]

#

Itse en kyllä tykkää näistä tämän tyyppisistä tehtävistä yhtään, kun tässä vaan tavallaan tehdään vaikealla tavalla jotain hyödytöntä. Eli taidanpa jättää tekemättä ellei sitten tule jotain hetkeä ettei ole mitään tekemistä :D

Antti Laaksonen [17.04.2011 15:26:34]

#

Nyt tarkistajan pitäisi toimia, ja ensimmäinen vastauskin ilmestyi listalle.

Grez kirjoitti:

Itse en kyllä tykkää näistä tämän tyyppisistä tehtävistä yhtään, kun tässä vaan tavallaan tehdään vaikealla tavalla jotain hyödytöntä.

Tämä on toisaalta aika monen Putkapostin tehtävän "ongelma". Säännöllisissä lausekkeissa on minusta hauskuutena, että tarkkaa alarajaa lyhimmän lausekkeen pituudelle on yleensä hankalaa määrittää.

Grez [17.04.2011 15:34:18]

#

No siis tarkoitin sitä, että yleensä putkaposteissa haetaan kuitenkin ratkaisua johonkin ongelmaan, joka voisi oikeasti olla olemassa vaikka onkin kuvitteellinen. Ja yleensä on hyödyksi jos pystyy keksimään mahdollisimman tehokkaan ratkaisun.

Mielestäni jos pitäisi validoida käsin kirjoitetut luvut, niin SL ei olisi mielestäni oikein missään mielessä tehokkain tapa tehdä sitä.

Mutta joo, varmasti kiva tehtävä kaikille jotka tykkää puuhastella säännöllisten lausekkeiden kanssa. Tarkoitus ei ollut sanoa että tehtävä olisi jotenkin huono vaan ihan vaan että itse en tykkää.

Hennkka [17.04.2011 18:36:41]

#

Mielestäni tarkistusohjelma voisi tarkistaa tyhjän merkkijonon ja muut "yleiset" virheet ennen muita varsinaisten lukujen tarkistusta, koska ainakin minulla se miettii melkein minuutin ennen kuin sanoo "Lauseke hyväksyy tyhjän merkkijonon, vaikka sen pitäisi hylätä se".

-tossu- [17.04.2011 18:47:54]

#

Hennkka kirjoitti:

Mielestäni tarkistusohjelma voisi tarkistaa tyhjän merkkijonon ja muut "yleiset" virheet ennen muita varsinaisten lukujen tarkistusta, koska ainakin minulla se miettii melkein minuutin ennen kuin sanoo "Lauseke hyväksyy tyhjän merkkijonon, vaikka sen pitäisi hylätä se".

Olen melko varma, ettei tarkastaja kokeile kaikkia numeroita erikseen, koska ei SL-haasteenkaan tarkastaja tee niin.
Todennäköisesti tässä putkapostissa on käytössä sama tarkastaja kuin SL-haasteessa.

Metabolix [17.04.2011 19:48:58]

#

Olen kyllä ihan samaa mieltä tuosta tarkistuksesta. Parikymmentä huolella valittua testitapausta riittäisi luultavasti useimpien virheiden karsintaan.

Antti Laaksonen [17.04.2011 20:06:57]

#

Tarkistaja toimii tosiaan tällä hetkellä niin, että se tekee ensin lausekkeelle monimutkaisen käsittelyn, jonka jälkeen se pystyy tarkistamaan luotettavasti, onko lausekkeen toiminta oikea vai ei.

Kieltämättä voisi olla hyvä idea kokeilla aluksi pienellä joukolla lukusanoja, hyväksyykö lauseke ne. Paljon vaikeampaa on yrittää etsiä ylimääräisiä merkkijonoja, joita lausekkeen ei kuuluisi hyväksyä. Tyhjää merkkijonoa lukuun ottamatta ylimääräiset merkkijonot lienevät tapauskohtaisia.

tkok [18.04.2011 01:24:54]

#

pitäisikö tälläisen

(|yksi|kaksi|kolme|neljä|viisi|kuusi|seitsemän|kahdeksa|yhdeksän)

toimia, niin että hyväksyy tyhjän tai yksi tai kaksi tai niin edelleen? lähinnä siis tuo ekan |-merkkin toiminta.

Antti Laaksonen [18.04.2011 01:29:40]

#

Kyllä, tuo siis vastaa seuraavaa lauseketta:

(yksi|kaksi|kolme|neljä|viisi|kuusi|seitsemän|kahdeksa|yhdeksän)?

Chiman [18.04.2011 13:42:16]

#

Täydellisesti toimivan ratkaisun puristaminen alle tuhanteen merkkiin vaikuttaa haastavalta, koska mikään yksittäinen osa (tuhannet, sadat, kympit, ykköset) ei ole pakollinen, mutta kaikki eivät voi puuttua. Tämä nähdäkseni haittaa tehokkaasti toisteisuuden hyödyntämistä.

Esim. tällainen ei tule kyseeseen:

((kaksi|kolme|...)(tuhatta|sataa|kymmentä|toista))+

Muuten jokin kaksitoistaneljäkymmentä menisi läpi.

teksturi [14.01.2013 02:36:35]

#

Toimiikohan tarkastaja ihan oikein kun aina kun on lähes oikea ratkaisu niin jää raksuttamaan niin pitkäksi aikaa kunnes tulee "tarkastus kestää liian kauan". Näin kävi myös tilanteessa missä oli ehkä oikea ratkaisu, mutta merkki määrä ylitti 1000.

Metabolix [14.01.2013 16:42:24]

#

Tarkastaja toimii ihan oikein, mutta lausekkeiden tarkistaminen on hidasta (ainakin nykyisellä algoritmilla). Kuitenkin oikea ja tarpeeksi lyhyt lauseke menee yleensä läpi alle 10 sekunnissa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta