Pientä vinkkiä kaipaisin...
PHP Haaste 18
Sanassa PAKKAUS on kaksi A:ta, kaksi K:ta, yksi P, yksi S ja yksi U. Tehtävänä on ilmoittaa kaikki sanassa olevat kirjaimet ja niiden esiintymismäärät. Kirjaimet täytyy luetella aakkosjärjestyksessä. Voit olettaa, että sana muodostuu kirjaimista A–Z ja siinä on korkeintaan 100 kirjainta.
En hae valmista ratkaisua, mutta jos vähän vinkkiä, millä hakusanalla lähtisi etsimään, ei polla säteile sitten yhtään.
Saisin kyllä tehtyä, jos käyttäsin mysql kannan kautta, mutta varmaan helpompikin konsti olemassa.
PHP-haasteen tehtäviin ei tarvita mitään hakusanoja ja etsimistä. Missään niistä ei tarvita tiettyä funktiota, vaan kaikki voi tehdä perusrakenteilla (if, for, while, muuttujat, taulukot). Tähän nimenomaiseen tehtävään tulee heti mieleen yksi ratkaisu kahdella sisäkkäisellä for-silmukalla ja yksi ratkaisu taulukolla ja kahdella for-silmukalla. (Lisäksi on vastaavat ratkaisut, joissa toisen silmukan tilalla on sopiva PHP:n funktio, mutta minusta on aika surkeaa, jos ei osaa toteuttaa samaa koodia ilman valmista funktiota.)
Mieti, miten itse laskisit sanasta kirjaimet paperilla.
Koska kyse on php-haasteesta eikä algoritmihaasteesta, niin on aika surkeaa, jossei tunne php:n primitiivejä vaan joutuu emuloimaan kaikkea silmukoilla ja manuaalisella purkalla.
Karvisen ei kannattaisi ajatella ongelmaa liian monimutkaisesti. Kaikessa yksinkertaisuudessaan vain lasket kirjainten esiintymismäärät. Tässä ongelmassa ei ole välivaiheita, joten minkä tahansa vastaavan esimerkin löydätkin netistä googlettamalla, niin se on sataprosenttinen ratkaisu tähänkin tapaukseen.
Ensimmäinen vaihe voisi olla koodi, joka käy läpi silmukalla kirjaimet A–Z. Tämän jälkeen riittää joka kirjaimen kohdalla laskea, kuinka monta kertaa se esiintyy sanassa.
The Alchemist kirjoitti:
Koska kyse on php-haasteesta eikä algoritmihaasteesta, niin on aika surkeaa, jossei tunne php:n primitiivejä vaan joutuu emuloimaan kaikkea silmukoilla ja manuaalisella purkalla.
PHP-haasteen voi kyllä toteuttaa millä vaan kielellä. Minusta kumpikin on surkeaa: Jos ei osaa toteuttaa ilman funktiota ja jos ei osaa käyttää valmiita funktioita.
Aihe on jo aika vanha, joten et voi enää vastata siihen.