Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointiputka: PHP-haaste alkaa!

Sivun loppuun

Antti Laaksonen [01.09.2009 00:03:13]

#

Ohjelmointiputkassa alkaa tänään PHP-haaste:

https://www.ohjelmointiputka.net/phph/

PHP-haaste sisältää 100 ohjelmointitehtävää, jotka käsittelevät PHP-kielen perusasioita: muuttujia, taulukoita, ehtoja, silmukoita ja funktioita. Ensimmäiset tehtävät ovat helppoja, mutta tehtävien vaikeustaso kasvaa tasaisesti, ja viimeiset tehtävät tarjoavat haastetta taitavallekin ohjelmoijalle.

PHP-haasteen tavoite on kasvattaa suomalaisten nettiohjelmoijien osaamistasoa. PHP-haasteen kaikki tehtävät ratkaissut saa syvällisestä ohjelmointitaidosta kertovan sertifikaatin sekä oikeuden käyttää seuraavaa logoa Internetissä nimensä yhteydessä:

Tervetuloa mukaan PHP-haasteeseen!

Grez [01.09.2009 13:13:53]

#

Olisiko mitään ideoita miten tästä voisi tehdä mielekkäämmän sellaisille joilla PHP on jo kohtuullisesti hanskassa?

Jotenkin ei nappaisi tahkoa noita helppoja paria tuntia että pääsisi sinne loppupään mahdollisesti mielenkiintoisiin ja haastaviin tehtäviin. Katsoin tehtävän 53 (joka on siis numeron mukaan vaikein minkä näkee suorittamatta pienempiä ensin) ja sekin oli mielestäni ihan kohtuuttoman helppo. (varsinkin kun koodin tunkemisessa palvelimelle ja sen linkin työntämisessä tuohon systeemiin menee enemmän aikaa kuin itse koodin kirjoittamisessa, niin se alkaa turhauttaa)

Blaze [01.09.2009 14:31:32]

#

10:18 <+jpa> php-haaste2: koodatkaa php-koodi joka ratkaisee noi tylsät
automaattisesti

Niin, siinä voiski olla jo haastetta :)

Grez [01.09.2009 14:33:26]

#

Niin no voishan tossa olla ideaa, jos tekis jonkun frameworkin, joka kävis hakemassa aina seuraavan tehtävän syöttöparametrit valmiiksi ja sitten ei tarvis kuin täpätä sopiva koodi omalla palvelimella tekstiboksiin ja se postais linkin sinne haasteeseen automaattisesti.

tsuriga [01.09.2009 15:09:09]

#

Tehtävien tekstiboksit vois muistaa URLista domainin sekä ja ehottaa automaagisesti tehtävää vastaavan tiedoston nimeä, 1.php etc, naputteluun menee tosiaan turhaa aikaa.

Läpällähän noita vetää, tässä esim. rot13-muotoinen ratkaisu, jolla meni tehtävä 15. läpi. Samaa luokka melkein joka tehtävään ykkösosiossa tähän mennessä. One-lineria vaan ja rautaa rajalle.

<?php
neenl_jnyx($_ERDHRFG, perngr_shapgvba('$k', 'erghea fge_ercynpr("0", "-1", $k);'));
rpub (vag)($_ERDHRFG['cw'] * 2 + $_ERDHRFG['n'] + $_ERDHRFG['o'] + $_ERDHRFG['p'] > 2);
?>

En kehannu laittaa haasteen kommentteihin, joku vois ottaa erehdyksessä mallia.

EDIT: Härski rot13.

TeNDoLLA [01.09.2009 16:12:41]

#

Miksihän tuo noiden koodien lähetyksen täytyy olla noin hemmetin työlästä. Kokeilin ihan huvikseni tuota ja aattelin, että tiedoston voi uploadata siitä lähetä kentästä. No sain huomata, että tiedosto täytyy ensiksi upata johonkin ja sitten laittaa osoite kyseiseen kenttään ja tähän tyssäs ainakin minun osaltani. Liikaa vaivaa. Miksei tuolla voisi olla vain lootaa mihin copy pastella vois laittaa koodin ja lähettää? Aika varmasti osallistujia olisi huomattavasti suurempi määrä jos tuo lähetys systeemi ei olisi niin "hankala".

Grez [01.09.2009 16:16:57]

#

Kaipa siinä on se, että ei ole jaksettu nähdä vaivaa virittelemään PHP:lle sandboxia.

Metabolix [01.09.2009 16:20:13]

#

tsuriga kirjoitti:

En kehannu laittaa haasteen kommentteihin, joku vois ottaa erehdyksessä mallia.

Parempi se kai olisi sinne laittaa kuin tänne, kun siellähän pääsee kuhunkin keskusteluun vasta, kun on ratkaissut tehtävän.

Grez kirjoitti:

Kaipa siinä on se, että ei ole jaksettu nähdä vaivaa virittelemään PHP:lle sandboxia.

Onko niitä kovinkin helppo viritellä palvelinhotelleihin?

Grez [01.09.2009 16:22:39]

#

Olettaisin, että jos se olisi ollut kovinkin helppoa, niin se vaiva olisi jaksettu nähdä.

Blaze [01.09.2009 16:50:17]

#

TeNDoLLA kirjoitti:

Miksihän tuo noiden koodien lähetyksen täytyy olla noin hemmetin työlästä.

En tiedä muista, mutta minusta tiedostojen editoiminen pääteyhteyden läpi suoraan veppipalvelimen wwwrootin alla oli tosi helppoa ja kätevää.

Chiman [01.09.2009 17:02:54]

#

Jep, sshfs:ää käyttäen kooditiedostoja voi kirjoitella yhtä helposti kuin omalle koneelle. Lisäksi ainakin Firefox osaa ehdottaa aiempien tehtävien osoitteita lähetettävään tekstikenttään, jota ei tarvitse yleensä muokata kuin yhden merkin verran. Mieluummin teen näin hyvällä koodieditorilla kuin koodaan tavalliseen textareaan.

Hyvä haaste ohjelmointia aloitteleville, ja eiköhän noita muutkin jaksa kahlata läpi omaan tahtiinsa.

tsuriga [01.09.2009 17:09:49]

#

Eräs vaihtoehto on lisätä FTP weblokaationa My Network Placeen ja viljellä pikakuvakkeena ympäriinsä, sitä on suht helppo käpristellä. Foxi tosiaan muistaa kunhan itte muistaa pitää ko. option päällä, allekirjoittanut ei muistanut. Jätin omat koodit postaamatta ko ne on ihan kauheata purkkaa lähestulkoon järjestään jok'ikinen. Jääköön se tila niille esimerkillisille esimerkeille.

TeNDoLLA [01.09.2009 17:33:37]

#

Tottahan se on, että ainahan löytyy tapoja, joilla tuosta tän hetkisestäkin toteutuksesta saa "näppärän" kuten editointi suoraan palvelimella tai palvelin tilan mounttaamisen lokaaliksi yms. Aina se on kuitenkin lisä vaivaa varsinkin jos ei normaalisti palvelinpäässä suoraan editoi niitä tiedostoja. Lisäksi jos ei omista tällä hetkellä mitään web hotellia, niin harvempi varmasti jaksaa tuon takia alkaa sitä hankkimaankaan.

Juhko [01.09.2009 22:48:21]

#

Pidän näistä tehtävistä. :) Vaativat samaan aikaan älykkyyttä ja ohjelmointitaitoja. Hyvä Antti!

aaämdee [01.09.2009 23:03:34]

#

Taidan alkaa tehdä näitä sitten kun alkaa koulussa PHP kurssi :) Mielenkiintoiselta vaikuttaa.

TeNDoLLA [01.09.2009 23:27:49]

#

Niin ja ettei nyt ihan paskanmaku jää suuhun mun kommenteista, niin itse haastehan siis on ihan hieno idea.

Antti Laaksonen [01.09.2009 23:54:17]

#

Nykyinen työläs ratkaisun lähetys johtuu tosiaan siitä, että tiedossani ei ole järkevää ja turvallista tapaa suorittaa käyttäjän lähettämää PHP-koodia Ohjelmointiputkan webhotellissa. Olen todella samaa mieltä kanssanne, että ratkaisun lähetys saisi olla kätevämpi.

Tehtäviin on lähetetty suuri määrä ratkaisuja jo ensimmäisen päivän aikana. Kiitos monista hyvistä kommenteista tehtävien keskusteluissa!

Metabolix [02.09.2009 00:06:52]

#

TeNDoLLA kirjoitti:

Lisäksi jos ei omista tällä hetkellä mitään web hotellia, niin harvempi varmasti jaksaa tuon takia alkaa sitä hankkimaankaan.

Tässä on PHP-skripti, joka toimii riittävässä määrin HTTP-palvelimena, jotta sitä voi käyttää PHP-haasteen tehtävien ratkaisemiseen. Ratkaisu pitää kirjoittaa funktion sisään. Koodissa on mukana ensimmäisen haastetehtävän ratkaisu.

<?php
function http_server($callback, $port = 80) {
	$socket = stream_socket_server("tcp://0.0.0.0:$port", $errno, $errstr);
	if (!$socket) {
		die("Portin $port kuuntelu ei onnistu!\n$errno: $errstr\n");
	}
	echo "Odotetaan.\n";
	while ($client = stream_socket_accept($socket)) {
		echo "Yhteys muodostettu.\n";
		echo "Luetaan otsikot.\n";
		while (trim(fgets($client)) != '');

		echo "Luetaan POST-data...\n";
		$str = trim(fgets($client));
		parse_str($str, $_REQUEST);
		echo '$_REQUEST = ', var_export($_REQUEST, true), "\n";

		echo "Ajetaan funktio.\n";
		ob_start();
		$callback();
		$data = ob_get_contents();
		ob_end_clean();
		echo "Tulos:\n";
		echo $data, "\n";

		echo "Vastataan.\n";
		$response = array();
		$response[] = "HTTP/1.1 200 OK";
		$response[] = "Connection: close";
		$response[] = "Content-Type: text/plain";
		$response[] = "";
		$response[] = $data;
		$response = implode("\r\n", $response);
		fwrite($client, $response);

		echo "Katkaistaan yhteys.\n";
		fclose($client);
	}
	echo "Lopetetaan palvelin.\n";
	fclose($socket);
}

// Esimerkki:
// Tämä funktio tulostaa tehtävän ratkaisun:
function ratkaise() {
	echo $_REQUEST['a'] + $_REQUEST['b'];
}
// Odotetaan yhteyttä porttiin 12345.
// Kun yhteys tulee, ajetaan funktio 'ratkaise'.
http_server('ratkaise', 12345);
?>

Skripti ajetaan siis PHP:llä komentoriviltä:
php ratkaisu.php
Palvelimeksi PHP-haasteen ratkaisukenttään pitää kirjoittaa oman koneen julkinen IP-osoite, ja lisäksi tietenkin vaaditaan, ettei välissä ole palomuuria tai reititintä, joka estää yhteyden. Oman osoitteen voi tarkistaa sivulta http://www.whatsmyip.org/. PHP-haasteen ratkaisuosoite voisi siis olla vaikkapa http://94.101.21.225:12345/. Tässä 94.101.21.225 on oma, julkinen IP-osoite, ja 12345 on käytettävä portti. Palvelin suljetaan näppäinyhdistelmällä Ctrl-C tai Ctrl-Z.

peran [02.09.2009 07:23:45]

#

En ymmärrä, millä tavalla tämä on php-specifinen?

Tosin php-servulla olen näitä kylläkin tehnyt.

Antti Laaksonen [02.09.2009 17:43:01]

#

peran kirjoitti:

En ymmärrä, millä tavalla tämä on php-specifinen?

PHP on nettiohjelmoinnin opettelijan luonnollinen valinta. Malliratkaisuissa ja keskusteluissa kielenä on niin ikään PHP. Silti mikään ei estä käyttämästä muita kieliä (kuten QBasicia). Olennaista on "haaste" eikä "PHP": jos PHP-haasteen läpäisee jollain kielellä, sen läpäisee tarvittaessa myös PHP:llä.

tsuriga [02.09.2009 18:23:31]

#

Oliko tossa 30.:ssä jotain virhettä tarkistuksessa vai heittääkö mulla palvelimet eri tuloksia? 5.2.9 palvaimella heitti tarkistaessa viimoseen erroria kun taas 5.2.6 palvelimella toimii nyt neljä tuntia myöhemmin iha hyvin.

Metabolix [02.09.2009 18:41:57]

#

tsuriga kirjoitti:

Oliko tossa 30.:ssä jotain virhettä tarkistuksessa vai heittääkö mulla palvelimet eri tuloksia?

Viimeisessä algoritmi ainakin käy 32-bittisen lukualueen yläpuolella, eli voi olla, että tavallinen int-muuttuja pyörähtää ympäri. Riippuu kai PHP:n asetuksista tai käännöksestä.

Antti Laaksonen [02.09.2009 19:08:57]

#

Muutin nyt tehtävää 30 niin, että n on joka vaiheessa korkeintaan miljardi.

T.M. [02.09.2009 20:25:19]

#

tehtävässä 30 jotain pahasti vialla, nyt ensimmäisen syötteen oikea vastaus on 1, kun viimeksi se oli 3

tesmu [02.09.2009 20:32:15]

#

Mielestäni pitäisi olla mahdollisuus skipata tehtävä ja palata myöhemmin siihen. Eli tehtävät voisi ratkoa siinä järjestyksessä kuin haluaa. Itse ainakin kyllästyn jos olen jumissa jossakin tehtävässä riittävän kauan ja jonkun tauon jälkeen ratkaisen sen helposti, sillävälin voisi ratkoa muita tehtäviä.

Metabolix [02.09.2009 20:39:27]

#

T.M. kirjoitti:

tehtävässä 30 jotain pahasti vialla, nyt ensimmäisen syötteen oikea vastaus on 1, kun viimeksi se oli 3

Kyllä se ihan oikein toimii. Syötteen n=1 ratkaisu on edelleenkin 3.

T.M. [02.09.2009 20:41:31]

#

Metabolix kirjoitti:

Kyllä se ihan oikein toimii.

jep nyt taas toimii :D äsken ei.

Antti Laaksonen [02.09.2009 20:57:42]

#

tesmu kirjoitti:

Mielestäni pitäisi olla mahdollisuus skipata tehtävä ja palata myöhemmin siihen. Eli tehtävät voisi ratkoa siinä järjestyksessä kuin haluaa.

Pakollinen ratkaisujärjestys johtuu siitä, että jos tehtäviä saa jättää väliin, niihin ei helposti palaa koskaan. Usein kuitenkin tehtävät, jotka haluaisi jättää väliin, ovat juuri opettavaisia. Tämä menettely on kieltämättä joskus ärsyttävä, mutta minusta silti kokonaisuutena paras.

T.M.: Jos kohtaat vielä samanlaisia ongelmia, voisitko lähettää minulle sähköpostitse sivulle tark.php tulevan tekstin? Tehtävän 30 ensimmäinen syöte on pysynyt koko ajan ennallaan, joten vian täytyy olla jossain muualla.

Jogge [02.09.2009 23:35:32]

#

Tehtävässä 62 on ilmeisesti mennyt miljoona ja miljardi sekaisin, sillä tehtävän kuvauksessa lukee:

lainaus:

Luku on positiivinen kokonaisluku ja korkeintaan miljoona.

Kuitenkin skriptiä yritetään tarkistaa luvuilla jotka ovat suurimmillaan satoja miljoonia.

Antti Laaksonen [02.09.2009 23:39:41]

#

Korjasin virheen tehtävänannosta: kiitos huomautuksesta.

hernih [02.09.2009 23:47:49]

#

Onkohan tuossa 20. mitenkä elämää suurempi ratkaisu odotettavissa, kun en rekursiolla läpäse 6. testiä(kestää yli 5s).

No kivaa oli tähän asti.

tsuriga [03.09.2009 00:04:10]

#

Tällä hetkellä katkee siirto content-divin alotustagin jälkeen.

Antti Laaksonen [03.09.2009 00:28:24]

#

hernih kirjoitti:

Onkohan tuossa 20. mitenkä elämää suurempi ratkaisu odotettavissa,

Vinkki: miten selvittäisit vastauksen ilman tietokonetta?

tsuriga kirjoitti:

Tällä hetkellä katkee siirto content-divin alotustagin jälkeen.

Oliko tämä ongelma hetkellinen?

Grez [03.09.2009 00:34:29]

#

hernih kirjoitti:

kun en rekursiolla

Mikäs etu tosta rekursiosta on saatavissa?

(tuokin oli vinkki)

tsuriga [03.09.2009 00:52:59]

#

Antti Laaksonen kirjoitti:

tsuriga kirjoitti:

Tällä hetkellä katkee siirto content-divin alotustagin jälkeen.

Oliko tämä ongelma hetkellinen?

Johtu vaan siitä, että istunto oli katkennut. Jännästi kuitenkin näytti vielä "Kirjaudu ulos" -linkin ja tosiaan katkas tuosta heti divin jälkeen.

Chiman [03.09.2009 07:17:38]

#

Muoks: testasin. Kirjautumisen vanhennuttua näkyy vain Kirjaudu ulos ja Tehtävälista -linkit. Jälkimmäisestä ei pääse mihinkään ja ekan painaminen on hieman epäloogista, mutta sillä pääsee kuitenkin haasteen etusivulle kirjautumaan.

tesmu [03.09.2009 08:13:55]

#

Antti Laaksonen kirjoitti:

tesmu kirjoitti:

Mielestäni pitäisi olla mahdollisuus skipata tehtävä ja palata myöhemmin siihen. Eli tehtävät voisi ratkoa siinä järjestyksessä kuin haluaa.

Pakollinen ratkaisujärjestys johtuu siitä, että jos tehtäviä saa jättää väliin, niihin ei helposti palaa koskaan. Usein kuitenkin tehtävät, jotka haluaisi jättää väliin, ovat juuri opettavaisia. Tämä menettely on kieltämättä joskus ärsyttävä, mutta minusta silti kokonaisuutena paras.

Siis tottakai se on opettavaista joo, mutta itse ainakin kyllästyn jos en riittävän ajan päästä saa ratkaistua mutta myöhemmin sitten se tulee ratkaistua. Luonnollisesti jos kaikkia tehtäviä ei ole suoritettu niin sillon ei ole oikeutta tuohon "sertifikaattiin" ja haastetta ei ole suoritettu.

Eli käytännössä jos tätä vertaa esim johonki tenttiin, niin kyllä sinulla on mahdollisuus skipata tehtävä ja palata myöhemmin siihen uudestaan.

Antti Laaksonen [03.09.2009 10:21:23]

#

Nyt järjestelmä toimii järkevämmin, jos istunto on katkennut.

Metabolix [03.09.2009 10:34:42]

#

tesmu kirjoitti:

Mielestäni pitäisi olla mahdollisuus skipata tehtävä ja palata myöhemmin siihen.

Antti Laaksonen kirjoitti:

Pakollinen ratkaisujärjestys johtuu siitä, että jos tehtäviä saa jättää väliin, niihin ei helposti palaa koskaan.

Joissain järjestelmissä voi valita enintään pari tehtävää ohitettaviksi.

henkru kirjoitti:

Onkohan tuossa 20. mitenkä elämää suurempi ratkaisu odotettavissa, kun en rekursiolla läpäse 6. testiä (kestää yli 5s).

Eikö ole aivan yleisesti tunnettu tosiseikka, että Fibonaccin lukuja ei missään tapauksessa kuulu laskea rekursiolla? :) Funktiokutsuja tulee enemmän kuin tuloksen verran, eli kun lasketaan 40. luku (433494437), funktiokutsuja tulee hyvinkin yli miljardi.

Teuro [03.09.2009 11:48:13]

#

Onko tehtävässä 28 4:ä testitapauksessa virhe, koska kolme edellistä testiä menee läpi heittämällä, mutta tuossa tökkää. Mikäli vaihtaa suuntaparametrin V->O, niin sitten tulee testitapauksen mukainen tulos.

Metabolix [03.09.2009 12:01:45]

#

Kyllä se on aivan oikein. Voit vaikka käsin tarkistaa tuloksen.

Teuro [03.09.2009 12:15:17]

#

Käsin sen tarkistinkin, mutta ilmeisesti on vielä jokin virhe jäänyt huomaamatta.

hernih [03.09.2009 16:29:31]

#

Kyllähän tuo hidas näköjään oli, en sen enempää asiaa miettinyt, koska asia tuli aika lailla suoraan takaraivosta.Ne kerrat kun ohjelmoinnissa törmännyt fibonaccin lukuun niin se on ratkaistu rekursiolla.

Ratkaisin kyllä tehtävän..

Jogge [03.09.2009 18:34:34]

#

Taitaa tehtän 63 tarkistuksessa 15. testissä olla jotain kummallista, sillä skriptiä käsketään muuttamaan 12(?)-järjestelmässä oleva luku 11-järjestelmästä 2-järjestelmään.

Syöte:
luku=ABBBBB&jarj1=11&jarj2=2

Ei kai tuon pitäisi olla mitenkään mahdollista?

Metabolix [03.09.2009 18:40:40]

#

Jogge kirjoitti:

Ei kai tuon pitäisi olla mitenkään mahdollista?

Olet aivan oikeassa. Virheellinen syöte on nyt poistettu.

Pekka Karjalainen [03.09.2009 21:19:48]

#

Metabolix kirjoitti:

Eikö ole aivan yleisesti tunnettu tosiseikka, että Fibonaccin lukuja ei missään tapauksessa kuulu laskea rekursiolla?

Kyseessä ei sentään ole yleisesti tunnettu tosiseikka.

Olli [04.09.2009 19:59:31]

#

Jäin kiinni teht. 7. :P Taisi jäädä siihen :D

Teuro [04.09.2009 20:18:27]

#

Tuottaako jokin erityinen asia ongelmia kyseisessä tehtävässä?

<?php
//Ota muuttujaan "luku" arvo $_REQUEST['n'] taulukosta
//Alusta muuttujat "summa1" ja summa2" nollaksi
//aloita silmukka, jota kierretään "luku" kertaa
  //lisää summaan 1 laskurin osoittama luku
  //lisää summaan 2 laskurin neliön osoittama luku
//tulosta summa1 summa2
?>

Olli [05.09.2009 07:56:18]

#

Mistä sen neliön osoittaman luvun saa? :P

Grez [05.09.2009 08:11:50]

#

"Luvun neliö" on luku kertaa luku. Eli sellaisen neliön pinta-ala, jonka sivun pituus on luku. Voidaan merkitä myös luku² eli luku potenssiin kaksi. (esim. luvun 7 neliö on 7*7 eli 49)

(näyttää siltä että esimerkiksi tuon tehtävän tehtävänannon ymmärtäminen vaatii potenssin ymmärtämistä käsitteenä, ja sitähän opetetaan peruskoulun luokilla 6-9. Eli jos on vaikka 5. luokan vasta käynyt, niin tehtävänanto voi mennä pahasti ohi)

Olli [05.09.2009 08:24:33]

#

Tuossa minun silmukkani:

for($i=0;$i<$luku;$i++){
$summa1=$summa+$i;
$summa2=$summa2+$i;
$summa2=$summa2*$summa2;
}

Mitä olen tehnyt väärin? :P

Grez [05.09.2009 08:33:00]

#

No jos ajatellaan mitä pitäisi saada esimerkiksi jos $luku = 3

Summa2 tulokseksi pitäisi saada 1*1 + 2*2 + 3*3 = 1 + 4 + 9 = 14

Sinun silmukkasi laskee seuraavasti:

Alussa $summa2 on jotain. Jos et ole määritellyt mitään, niin PHP kai olettaa 0 ja antaa varoituksen. Oletan, että se on 0.

$i=0
$summa2 = 0 + 0 = 0
$summa2 = 0 * 0 = 0

$i=1
$summa2 = 0 + 1 = 1
$summa2 = 1 * 1 = 1

$i=2
$summa2 = 1 + 2 = 3
$summa2 = 3 * 3 = 9

Poistutaan silmukasta.


Eli lopputulokeksi jää 9, eikä 14 niinkuin piti.


Eli ensinnäkin olisi ehkä selkeämpää aloittaa $i laskeminen 1:stä kuin nollasta ja laskea $luku asti.

Toisekseen sinun pitäisi lisätä summa2:een joka kierroksella $i*$i eikä ottaa sitä itseään mukaan tuohon kertolaskuun.

Olli [05.09.2009 08:47:46]

#

$summa1=0;
$summa2=0;

for($i=1;$i<$luku;$i++){
$summa1=$summa+$i;

$ikertaa=$i*$i;
$summa2=$summa2+$ikertaa;
}

Nyt muutin tuommoseksi, mutta ei toimi edelleenkään :P Mitähän nyt tein väärin...

Grez [05.09.2009 08:51:08]

#

No, ensinnäkin tuo silmukka suoritetaan vain niin kauan kuin $i on pienempi kuin $luku. Eli jos $luku on vaikka 3, niin viimeinen $i, joka tuossa silmukassa käydään läpi on 2.

Tuon kun korjaat, niin mielestäni summa2 menee sitten oikein.

$summa1 taas saa arvoksi $summa + viimeinen $i. Eli siinä pitäisi varmaankin olla $summa1 eikä $summa.

Olli [05.09.2009 08:52:44]

#

Kiitos tosi paljon! Sain toimimaan :) Yritän nyt jatkaa ite eteenpäin :P

edit:

Jaaha nyt pitäisi teht 9 saada ratkaistua :S
Ei yhtään hajuakaan :P Vokaalit mulla on arrayssa, mitään muuta ei valmiina.

Ei kukaan viittis helppiä taas avutonta ? ::D

Teuro [05.09.2009 10:01:12]

#

<?php
//Lue muuttujaan "sana" $_REQUEST['sana'] taulukosta
//Laske muuttujan "sana" pituus
//alusta muuttuja "laskuri" nollaksi
//aloita silmukka, jota kierretään sanan pituuden verran alkaen indeksistä 0
  //lue "sana"sta seuraava merkki
    //jos merkki on vokaali lisää laskuria yhdellä
  // muuten nollaa laskuri
//tulosta laskurin arvo
?>

Metabolix [05.09.2009 11:11:45]

#

Ehkä tuota auttamista pitäisi vähän vähentää. Tehtävät ovat kuitenkin (ainakin noin alkupuolella) niin yksinkertaisia ja koodit niin lyhyitä, että jokaiselle tekisi hyvää itse oppia etsimään virheensä.

Yleisenä neuvona voin sanoa, että kannattaa laittaa kaikki PHP:n virheilmoitukset päälle. Seuraavat rivit koodin alussa auttavat, tai vastaavat asetukset voi kirjoittaa suoraan php.ini-asetustiedostoon:

<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);

(Itse asiassa E_STRICT vaikuttaakin vain asetustiedostossa ollessaan, koska se käsittää virheitä, jotka ilmenevät ennen koodin ajamista.)

Axel_Moon [05.09.2009 11:30:26]

#

Jäin jumiin 4 tehtävään :(. Tällä koodilla saan sen pystyviivan sijasta plus merkin niiden lukujen väliin, mutta miten pystyn tulostamaan vastauksen?

<?php

$muuntaja = explode("|" , $_REQUEST['luvut']);
$plus = implode("+", $muuntaja);

echo ($plus);

?>

Teuro [05.09.2009 11:36:29]

#

Eihän tuossa koodissa ole mitään järkeä. Tarkoitus olisi laskea luvut yhteen, eikä muutella merkkijonon merkkejä. Samaan pääsisit laittamalla koko pötkön

<?php
echo preg_replace("/\\|/", "+", $_REQUEST['luvut']);
?>

Antti Laaksonen [05.09.2009 11:56:51]

#

Kun sinulla on luvut taulukossa, kuinka saisit selville niiden summan?

Grez [05.09.2009 12:59:59]

#

Teuro kirjoitti:

Eihän tuossa koodissa ole mitään järkeä. Tarkoitus olisi laskea luvut yhteen, eikä muutella merkkijonon merkkejä.

Kyllähän tuossa sinänsä on järkeä. Lähestymistapa vaan ei ole sellainen jolla kokenut koodaaja lähtisi tekemään, mutta minusta se on hyvinkin luonteva tapa lähestyä ongelmaa. Senhän saisi tuollakin tavalla jopa laskettua, mutta samalla saisi helposti kohtuullisen järeän tietoturva-aukon jos ei ole varovainen.

Kokenut kooderi tietenkin tietää, että helpompi paloitella se ja laskea summa omalla koodilla, kuin alkaa paikkailemaan aukkoja jos pistäisi php-tulkin suorittamaan laskun.

Metabolix kirjoitti:

Ehkä tuota auttamista pitäisi vähän vähentää. Tehtävät ovat kuitenkin (ainakin noin alkupuolella) niin yksinkertaisia ja koodit niin lyhyitä, että jokaiselle tekisi hyvää itse oppia etsimään virheensä.

Olen kyllä aika pitkälti samaa mieltä. Olisihan se hassua kun olisi "php haaste sertifioitu" vaikka ei osaisi itsenäisesti ratkaista puoliakaan.

Axel_Moon [05.09.2009 13:02:17]

#

Nyt sain tuloksen, mutta se ei laske sen jonon ensimmäistä lukua?? Mikä on pielessä?

<?php

$a = explode("|" , $_REQUEST['luvut'] , 4);
echo $a[1]+$a[2]+$a[3]+$a[4];


?>

tesmu [05.09.2009 13:08:12]

#

Taulukko alkaa aina indeksistä 0 eli $a[0] on ensimmäinen, syytä olisi tehdä algoritmistä myös ns "vakaa", koska nyt jos tulee enemmän syötteitä kun lasket niin algoritmisi ei toimi. eli For-silmukalla käyt läpi kaikki alkiot ja lasket yhteen.

Teuro [05.09.2009 13:20:58]

#

Niin syötteen koosta ei saanut tehdä oletuksia. Ainoastaan summan taataan olevan alle miljoona.

Grez kirjoitti:

Kyllähän tuossa sinänsä on järkeä. Lähestymistapa vaan ei ole sellainen jolla kokenut koodaaja lähtisi tekemään, mutta minusta se on hyvinkin luonteva tapa lähestyä ongelmaa. Senhän saisi tuollakin tavalla jopa laskettua, mutta samalla saisi helposti kohtuullisen järeän tietoturva-aukon jos ei ole varovainen.

Jos tarkoitat eval() funktiota, niin jätin sen tarkoituksella pois tuosta edellisestä juurikin tuosta syystä.

Axel_Moon [05.09.2009 13:21:48]

#

Kiitos hyvistä neuvoista.

Olli [05.09.2009 13:46:01]

#

teht 9

En saanut ratkaistua tällä, yritin seurata Teuron ohjeita mutta jostain syystä ei toimi:

$pituus = strlen($sana);

$laskuri = 0;

for($i=0;$i<$pituus;$i++){
$mrk = substr($sana, $i, 1);
 if(in_array($mrk, $vokaalit)){
 $laskuri = $laskuri + 1;
 } else {
 $laskuri = 0;
 }
}

print $laskuri;

Jätin tarkoituksella osan koodista pois

Antti Laaksonen [05.09.2009 13:47:39]

#

Miksi koodi ei anna aina oikeaa vastausta?

Teuro [05.09.2009 13:53:36]

#

Koodi kaiketi antaa tulokseksi luvun 0, jos viimeinen luku ei ole vokaali? Pitää vielä muistaa säilyttää tuota tulosta jossakin. Esimerkiksi muuttujassa suurin. Eli silmukan lopussa tarkistaa onko saatu laskuri > suurin. Se jäi epähuomiossa tuosta äskeisestä poies.

Olli [05.09.2009 14:08:04]

#

Sain kuntoon, kiitos!

Jogge [06.09.2009 14:09:52]

#

Tehtävän 77 esimerkkisyötteessä näyttäisi olevan hieman vikaa.

$_REQUEST['rivit'] = "SSSSSSS|SA.S...S|S.SS.SBS|S......S|SSSSSSS";

Esimerkkisyötteen ensimmäisellä ja viimeisellä rivilla kuuluisi käsittääkseni olla kahdeksan merkkiä, kuten keskimmäisillä kolmella rivillä on.

MIB [06.09.2009 14:12:47]

#

On jotkut eteviä, kun on tehtävässä 77 jo. Onko joku ratkaissut nämä jo?

Antti Laaksonen [06.09.2009 14:27:37]

#

Jogge kirjoitti:

Tehtävän 77 esimerkkisyötteessä näyttäisi olevan hieman vikaa.

Korjasin virheen, kiitos.

MIB kirjoitti:

Onko joku ratkaissut nämä jo?

Toistaiseksi kukaan ei ole ratkaissut kaikkia tehtäviä.

MIB [06.09.2009 14:34:10]

#

Voitko laittaa jonnekkin näkyville, että kuka on missäkin vaiheessa?

ankzilla [06.09.2009 14:37:33]

#

Kiva että joku jaksoi tämmösenki koodata =D
Tästä tulee vielä vuosien varrella jännää, kun en seiskaa pidemmälle päässyt ;)

Codeclown [06.09.2009 14:48:51]

#

Onko joku tehnyt ton tehtävä #31:n käyttäen regexpiä? Itse teen kyseistä tehtävää, ja haluaisin lyhennettynä pregeillä eikä millään loopeilla.

Ei tarvii koodia antaa, kuhan tietäis onko mahollista? :)

Ja olen samaa mieltä kuin MIB, olisi kiva vähän seurailla. Joku varmaan tehnytkin jo xd


Kiitos tekijöille, todella mahtava koetella taitojaan ;)

MIB [06.09.2009 14:53:23]

#

Codeclown kirjoitti:

Kiitos tekijöille, todella mahtava koetella taitojaan ;)

Joo, harmi että en ole tuosta 10 tehtävästä pidemmälle päässyt. Huomaa, että en ole tuollaisiin asioihin perehtynyt, vaan teen vähän erityylisiä asioita.

Grez [06.09.2009 15:03:12]

#

Sellaisillehan tuo haaste onkin parhaimmillaan, joille tehtävät tuottaa haasteita. Ainakaan ennen 22:tä (en ole sitä vielä katsonut) ei minusta ole yhtään tehtävää, jota ei kuka tahansa vähänkään PHP-koodaamista osaava pystyisi hieman mietittyään toteuttamaan.

Jos PHP:llä haluaa oikeasti koodata eikä nuo tehtävät onnistu, niin sitä suuremmalla syyllä kannattaisi ne yrittää tehdä. Joutuu nimittäin tekemään hirveät määrät turhaa työtä, jos ei pysty tekemään yksinkertaisiakaan silmukoita, taulukkojen käsittelyä yms. mitä noissa nyt on.

Metabolix [06.09.2009 15:52:38]

#

Codeclown kirjoitti:

Onko joku tehnyt ton tehtävä #31:n käyttäen regexpiä?

Tästä on esimerkki malliratkaisussa. Pelkät säännölliset lausekkeet eivät riitä, vaan pitää käyttää /e-valitsinta ja PHP-koodia uuden luvun muodostukseen.

Antti Laaksonen kirjoitti:

Toistaiseksi kukaan ei ole ratkaissut kaikkia tehtäviä.

Paitsi tietenkin jotkut tehtävien ja malliratkaisujen laatijat, jotka eivät saa itse osallistua haasteeseen. :(

Antti Laaksonen [06.09.2009 15:55:46]

#

MIB kirjoitti:

Voitko laittaa jonnekkin näkyville, että kuka on missäkin vaiheessa?

Tällä hetkellä tehtävän 1 on ratkaissut 114 henkilöä, tehtävän 5 on ratkaissut 93 henkilöä, tehtävän 10 on ratkaissut 67 henkilöä, tehtävän 20 on ratkaissut 44 henkilöä ja tehtävän 50 on ratkaissut 6 henkilöä. Ratkaistuja tehtäviä on yhteensä 1945 (jos joku on ratkaissut saman tehtävän monta kertaa, se on laskettu tähän lukuun vain kerran).

Grez [06.09.2009 16:04:33]

#

Ei varmaan olisi paha rasti laittaa (semi)reaaliaikainen taulukko näkymään ratkaisujen tilanteesta... (just a thought)

Antti Laaksonen [06.09.2009 16:26:16]

#

Tarkemmat tilastot tulevat käyttöön, kunhan aineistoa on vähän enemmän.

Codeclown [06.09.2009 16:46:31]

#

Hyvä :) Onnistuhan se regexpillä se #31. En tosin ole nyt tehnyt, leffaa kattomaan ->

Propsit tekijöille, tosiaan koukuttavaa ;D

Grez [06.09.2009 18:31:40]

#

Mielestäni tehtävän 38 tehtävänannossa ei mainita missään, että luvuissa ei saa olla alkunollia.

Metabolix [06.09.2009 19:09:02]

#

Grez kirjoitti:

Mielestäni tehtävän 38 tehtävänannossa ei mainita missään, että luvuissa ei saa olla alkunollia.

No luettelepa sitten luvut yhdestä kymmeneen. Huh, taisi tulla aika monta? ;)

Nyt tehtävässä on maininta asiasta.

Grez [06.09.2009 19:24:22]

#

Hienoa toimintaa. Nyt ei muiden tarvitse arvata miksi 09.09.2000 ei ole ok päivä.

Metabolix kirjoitti:

Grez kirjoitti:

ei mainita missään, että luvuissa ei saa olla alkunollia.

No luettelepa sitten luvut yhdestä kymmeneen. Huh, taisi tulla aika monta? ;)

01, 02, 03, 04, 05, 06, 07, 08, 09, 10

En ymmärrä.

Antti Laaksonen [06.09.2009 21:24:10]

#

Ensimmäinen PHP-haasteen läpäissyt on Jussi Kokkala, joka lähetti hetki sitten toimivan ratkaisun tehtävään 100. Kuluvana vuonna Jussi on saavuttanut paljon muutakin, kuten voittanut Datatähti-kilpailun ja ansainnut Suomelle mitalit kansainvälisistä ohjelmoinnin olympialaisista Ruotsista ja Bulgariasta. Onnittelut Jussille!

Codeclown [06.09.2009 21:30:47]

#

Vau, itse olen tehtävässä #33 xd

Onnea, mutta tässähän ei ole aikarajaa?

Antti Laaksonen [06.09.2009 21:35:02]

#

Ei ole aikarajaa, vaan tehtäviä saa ratkoa omaan tahtiin.

MIB [07.09.2009 08:13:47]

#

Sitähän voi sitten ratkoa sitä mukaan kuin oppii ;) No, se on hyvä asia että ei tarvitse kiirehtiä. Oppii samalla myös uutta, se varmaan on yksi tarkoituksista.

walkout_ [07.09.2009 13:40:39]

#

Axel_Moon kirjoitti:

Jäin jumiin 4 tehtävään :(...

Tämä ainakin toimi.. mut en tiefä onko paras mahdollinen..

Mod. huom: Eiköhän niitä ole tarkoitus ratkoa jokaisen itse.

Grez [07.09.2009 14:03:27]

#

walkout_ kirjoitti:

Tämä ainakin toimi.. mut en tiefä onko paras mahdollinen..

Jos kerran olet tehtävän ratkaissut, niin sieltä malliratkaisuistahan voit katsoa suht optimaalisia ratkaisuja. Ja tosiaan, siihen on varmaan ihan syykin miksi muiden vastaukset näkee vasta, kun on itse ratkaissut tehtävän :D

Codeclown [07.09.2009 14:52:36]

#

Joo, ei vastauksia, itseä varten näitä koetellaan :)

walkout_ [07.09.2009 15:00:52]

#

Sori pieni ajattelemattomuus kun postasin toimvan vastauksen..

Olen nyt tehtävässä 9.. koko ajan menee vaikeammaksi.

MIB [07.09.2009 17:35:47]

#

On tuossa Jussilla ollut kova työ, kun on ratkaissut tuon.. :D Ottaisin mielelläni ne taidot, kun omani loppuivat taikaneliöön.

Tai, jos ymmärtäisin tehtävän, niin voisin osata vääntää koodin. Ala-asteella ei ole vielä ehditty käsittelemään kaikkea. :D

walkout_ [07.09.2009 18:28:47]

#

Pääsin kympiin ja ratkaisin sen.. juu next.
Näyttää vielä perus kauralta mutta aina joka kerta pitää miettiä enemmän.

Codeclown [07.09.2009 20:23:31]

#

Mulla rupee menemään sekasin jo :D 33 ei onnistu :D

Teuro [07.09.2009 20:36:27]

#

Toivottavasti tämä ei ole liian suuri spoileri, mutta eikö nro. 33 ratkaisuksi kelpaa ihan määritelmä tuosta kolmiosta? Itse tein ainakin tuollaisen ratkaisun. Taulukoit siis jo lasketut kolmion rivit ja lopuksi tulostat pyydetyn rivin näkyville.

Grez [07.09.2009 21:51:42]

#

MIB kirjoitti:

On tuossa Jussilla ollut kova työ, kun on ratkaissut tuon.. :D Ottaisin mielelläni ne taidot, kun omani loppuivat taikaneliöön.

Tai, jos ymmärtäisin tehtävän, niin voisin osata vääntää koodin. Ala-asteella ei ole vielä ehditty käsittelemään kaikkea. :D

Mikäs siinä taikaneliön tehtävänannossa oikein mättää? Meinaan siinä ei kyllä ainakaan yhteenlaskua korkeampaa matematiikkaa tarvita. Jos siinä on jokin epäselvä kohta, niin kysy ihmeessä ja selvennetään se.

Olisi kyllä kiva tietää paljonko Jussilla on mennyt aikaa tuohon. Itse approksimoin, että minulta menisi noin 10 tuntia aikaa ratkaista kaikki ja vielä toistaiseksi ei ole sellaista aikaa löytynyt, joten olen vasta alle puolessa välissä. Tietty jos jättäisi golf-kierroksen väliin ja käyttäisi sen ajan haasteeseen :D

yuizy [07.09.2009 22:18:15]

#

Grez kirjoitti:

Olisi kyllä kiva tietää paljonko Jussilla on mennyt aikaa tuohon. Itse approksimoin, että minulta menisi noin 10 tuntia aikaa ratkaista kaikki ja vielä toistaiseksi ei ole sellaista aikaa löytynyt, joten olen vasta alle puolessa välissä. Tietty jos jättäisi golf-kierroksen väliin ja käyttäisi sen ajan haasteeseen :D

Tulihan siinä heitettyä varmaan vajaa parikymmentä tuntia yhteensä elämästä hukkaan haasteen parissa, tosin jaoin sen useaan yöhön. Loppupään tehtävät veivätkin reilusti suurimman osan kokonaisajasta kun osa oli suorastaan hinaavia taulukkosäätöjä ja osassa noissa algojen keskimisissä meni aikaa runsain mitoin - ei kuitenkaan ihan terävimmästä päästä ole nämä hoksottimet. Varmasti viisaammalta algoritmipäältä ja kokeneemmalta php-koodarilta onnistuu tuo 10 tuntiin kiiruhtaminenkin.

temu92 [08.09.2009 02:50:51]

#

Itte jumitin tehtävässä 17 muutama pv sitten kun näitä tein. Varmaan vois taas kattoo sitä uudestaan >.> Joku outo bugi siellä vaikka pitäis toimia iha kunnolla mun koodit :E

MIB [08.09.2009 09:00:10]

#

Grez kirjoitti:

Mikäs siinä taikaneliön tehtävänannossa oikein mättää? Meinaan siinä ei kyllä ainakaan yhteenlaskua korkeampaa matematiikkaa tarvita. Jos siinä on jokin epäselvä kohta, niin kysy ihmeessä ja selvennetään se.

Sain sen toimimaan, eipä siinä enään mitään.

Hienosti on suunniteltu tämä, sen voin sanoa. Joskus olisin itse tarvinnut myös tuollaisen koodin, joka tarkistaa vastauksia tuolla tavalla, mutta empä enään - tosin se olisi kiva tietää miten on tehty ;)

Grez [08.09.2009 14:49:12]

#

Tuli muuten mieleen tässä, että tämänhän voi ajatella sinänsä nettiohjelmointihaasteena. Eli noi tehtäväthän voisi mielestäni ratkoa vaikka C#:lla ja ASP.Netillä jos siltä tuntuu. Vai onko tossa jotain, joka pakottaa juuri PHP:n käyttöön?

Antti Laaksonen [08.09.2009 15:26:20]

#

peran kysyi jo vähän samaa ja vastasin:

Antti Laaksonen kirjoitti:

peran kirjoitti:

En ymmärrä, millä tavalla tämä on php-specifinen?

PHP on nettiohjelmoinnin opettelijan luonnollinen valinta. Malliratkaisuissa ja keskusteluissa kielenä on niin ikään PHP. Silti mikään ei estä käyttämästä muita kieliä (kuten QBasicia). Olennaista on "haaste" eikä "PHP": jos PHP-haasteen läpäisee jollain kielellä, sen läpäisee tarvittaessa myös PHP:llä.

Grez [08.09.2009 15:39:08]

#

Hupsis, anteeksi sokeuteni/huonomuistisuuteni. No, kertaus on opintojen äiti tms :D

Metabolix [08.09.2009 15:41:04]

#

Taidanpa tehdä koko sarjan C:llä. Pitää varmaan ottaa aikaakin. ;)

Antti: Voisiko syötteen loppuun tai vaikka GET-parametriksi lisätä tehtävän numeron? Näin olisi helppo käyttää samaa ratkaisuosoitetta kaikille:

<?php
include(sprintf("ratkaisu_%03d.php", $_REQUEST['tehtava']));

Grez [08.09.2009 15:45:35]

#

Itse ajattelin kans ottaa aikaa viimeisen 60 tekemisestä. Tai ajattelin tehdä tuollaisen vastausframeworkin joka ottais samalla automaattisesti aikaa.

walkout_ [09.09.2009 00:03:20]

#

Jaahas tehtvä 16 ratkomatta.. vaikeeksi menee

Antti Laaksonen [09.09.2009 12:28:04]

#

Metabolix kirjoitti:

Antti: Voisiko syötteen loppuun tai vaikka GET-parametriksi lisätä tehtävän numeron?

Nyt $_REQUEST['id'] sisältää tehtävän numeron.

Chiman [10.09.2009 14:53:32]

#

Voisiko viimeisistä haastesivuille lähetetyistä kommenteista/malliratkaisuista saada jonkinlaisen listauksen linkkeineen? Olisi kiva selata uusimpia kommentteja jo ratkaistuihin tehtäviin, mutta nykyisellään ne joutuu selaamaan kaikki läpi.

Esim.

Taso | Kommentin jätti | Pvm
 5   | Matti           | 10.9.09
 7   | Pekka           | 10.9.09
 2   | Pirjo           | 9.9.09
 5   | Timo            | 7.9.09

Antti Laaksonen [10.09.2009 21:18:09]

#

Uusimmat viestit tehtävien keskusteluissa näkee nyt tästä:

https://www.ohjelmointiputka.net/phph/uudet.php

Chiman [10.09.2009 21:23:36]

#

Hyvä, kiitos.

tesmu [11.09.2009 14:05:49]

#

Grez kirjoitti:

Hienoa toimintaa. Nyt ei muiden tarvitse arvata miksi 09.09.2000 ei ole ok päivä.

Metabolix kirjoitti:

Grez kirjoitti:

ei mainita missään, että luvuissa ei saa olla alkunollia.

No luettelepa sitten luvut yhdestä kymmeneen. Huh, taisi tulla aika monta? ;)

01, 02, 03, 04, 05, 06, 07, 08, 09, 10

En ymmärrä.

Tehtävänannossa kerrottiin muoto missä päivämäärä kirjoitetaan, joka sittemmin selvittää että alkunollia ei tule. :>

Grez [11.09.2009 14:16:59]

#

Niin, sinnehän on nyt lisätty että alkunollia ei saa olla, mutta alunperin siinä luki vain, että esim. kuukauden osalta luku täytyy olla väliltä 1-12. Esimerkiksi luku 03 on tuolta väliltä, vaikka esitystapa sisältääkin etunollan.

Jos minulle annetaan tehtäväksi tehdä ohjelma joka tarkistaa päivämäärän oikeellisuuden, niin normaalisti tekisin siitä sellaisen että se hyväksyy myös etunollat. Etunollien käyttö nimittäin on melkoisen yleistä, täälläkin näissä viesteissä päivämäärissä on etunollat. Ei siinä mitään jos niitä ei haluta, mutta jos se sanotaan suoraan tehtävänannossa niin sitä ei tarvitse arvata.

Metabolix [11.09.2009 14:47:26]

#

Grez kirjoitti:

... väliltä 1-12 ...

... joka sitten luonnollisesti alkaakin 01:stä eikä 1:stä? Lasketko useinkin etunollien kanssa?

Grez [11.09.2009 15:13:16]

#

Minusta on aika turhaa tästä asiasta vääntää. Epäselvyys on jo korjattu.

Mielestäni kuitenkin "Tehtävänä on tarkistaa, onko annettu päivämäärä kelvollinen." ja sitten oli kerrottu joitakin tarkentavia reunaehtoja. Normaalisti tulkitsisin alkunollat sisältävän päiväyksen kelvolliseksi. Se että siellä sanottiin hyväksyttyjä välejä ei mielestäni poissulje etunollien käyttöä.

Tokihan se oli helppo arvata, kun tarkistin sanoo, ettei 09.09.2000 ole kelvollinen päivämäärä.

Antti Laaksonen [11.09.2009 15:35:29]

#

Kannattaa aina ilmoittaa, jos tehtävänanto ei kerro jotain asiaa tarpeeksi selvästi. Jos tehtävänanto hämää yhtäkin henkilöä, se on riittävä syy korjata tehtävänantoa. PHP-haasteessa on kysymys algoritmien suunnittelusta ja ohjelmoinnista eikä epäselvien tehtävänantojen tulkinnasta.

Chiman [11.09.2009 15:55:19]

#

Mainitaanpa sitten tehtävän 80 lukukuutiosta, jonka tehtävänannosta ei voinut päätellä onko kuution koolla jotain ylärajaa.

Metabolix [11.09.2009 16:19:08]

#

Chiman kirjoitti:

Mainitaanpa sitten tehtävän 80 lukukuutiosta, jonka tehtävänannosta ei voinut päätellä onko kuution koolla jotain ylärajaa.

Muokkasin sanamuotoa hieman, josko se nyt olisi vielä yksiselitteisempi.

Chiman [11.09.2009 17:53:52]

#

Lähinnä ajattelin, että tuossa selitetään 3x3x3-kuutio esimerkkinä, eli laskemalla itse sen suorien ym. rivien määrät ja vertaamalla annettuihin voi nähdä että on ymmärtänyt oikein periaatteen, jolla rivit otetaan mukaan.

Samapa tuo, ei yleisen version tekeminen ollut oleellisesti vaikeampaa.

Antti Laaksonen [11.09.2009 18:33:41]

#

Lisäsin tehtävään tarkennuksen, että kuutiossa on aina 3x3x3 palaa.

Antti Laaksonen [12.09.2009 21:49:23]

#

Tältä näyttää PHP-haasteen sertifikaatti:

https://www.ohjelmointiputka.net/phph/sert_malli.pdf

Ensimmäinen sertifikaatti lähtee postiin ensi viikon alussa. Vähitellen myös työnantajat oppivat tuntemaan sertifikaatin.

Macro [12.09.2009 22:17:37]

#

Heh, toi olisi kiva saada ;)

T.M. [13.09.2009 19:40:53]

#

kai siin on vesileima ym ettei vaan voi väärentää? :d

trilog [13.09.2009 19:59:28]

#

Onhan siinä Antin nimmari, jo siinä on riittävä syy hankkia tuollainen. ;)

punppis [14.09.2009 00:13:09]

#

Voisiko vielä lisätä tuon id:n lisäksi sellaisen, että tehtävän ratkaisu säilyisi vaikka cookiessa, niin ei tarvitsisi aina copypasteta sitä ratkaisu-URLia joka tehtävään erikseen...

Sami [14.09.2009 01:15:58]

#

Eikö sulla ole selaimessa ominaisuutta joka muistaa tekstikenttiin aiemmin syötettyjä tietoja?

T.M. [14.09.2009 01:36:15]

#

ei pitäisi olla selainriippuvaista... tommonen on sentään jo aivan lapsellisen helppo tehä PHP:llä.

...tässä jo jonkin aikaa sitten huomasin muuten että PHP-haasteen sivusto on tehty äärimmäisen epähaasteellisesti :P

Blaze [14.09.2009 09:13:39]

#

T.M. kirjoitti:

ei pitäisi olla selainriippuvaista... tommonen on sentään jo aivan lapsellisen helppo tehä PHP:llä.

Ja oot sitä mieltä, että sadan miljoonan sivuston on parempi tehä se jokaisen erikseen, ku että ne viis selainvalmistajaa tekee sen kerran?

Metabolix [14.09.2009 11:14:42]

#

T.M. kirjoitti:

PHP-haasteen sivusto on tehty äärimmäisen epähaasteellisesti :P

Haluaisitko selittää tätä kommenttiasi hieman tarkemmin? Sivusto on yksinkertainen ja selkeä; käytettävyys on minusta aivan eri tasolla kuin nykyajan "hienoilla" sivustoilla. Myös koodin semantiikka on varsin hyvällä mallilla; sivusto on jopa tekstiselaimella selattuna erittäin selkeä, mikä on hyvinkin poikkeuksellista.

Torgo [14.09.2009 13:44:16]

#

Antti Laaksonen kirjoitti:

Uusimmat viestit tehtävien keskusteluissa näkee nyt tästä:

https://www.ohjelmointiputka.net/phph/uudet.php

Olisiko tämä mahdollista saada myös linkiksi php haasteen sivuille?

Lisäksi erilaiset statistiikat on aina kivoja. :) Esim. tehtävän viereen ratkaisijoiden lukumäärä ja ehkä %-osuus kaikkien yrittäjien määrästä.

T.M. kirjoitti:

ei pitäisi olla selainriippuvaista...

Miksi ei? Käytännössä tuo ominaisuus on jokaisessa selaimessa. Miksi ihmeessä sitä varten pitäisi tallentaa miljoonia cookieita?

T.M. [14.09.2009 17:47:02]

#

Blaze kirjoitti:

T.M. kirjoitti:

ei pitäisi olla selainriippuvaista... tommonen on sentään jo aivan lapsellisen helppo tehä PHP:llä.

Ja oot sitä mieltä, että sadan miljoonan sivuston on parempi tehä se jokaisen erikseen, ku että ne viis selainvalmistajaa tekee sen kerran?

aivan, jos haluaa tehdä sivuistaan mahd. käyttäjäystävällisen.
...En tiennytkään että on olemassa 100 miljoonaa PHP-haaste -sivustoa o.O

Metabolix, juurikin käytettävyys on täysin ala-arvoista, tulee paljon turhia klikkauksia.
- esim tuo uusien kommenttien lista on erillisellä sivulla joka pitää joko kirjoittaa manuaalisesti osoiteriville tai klikata suosikeista :d
- "seuraava tehtävä" linkki osoittaa aina viimeisimpään tehtävään, ei siis seuraavaan tehtävään siitä tehtävästä jota nyt katselet.
- en pysty edes näkemään ratkaisemattomien tehtävien nimiä, paitsi sen sivun tehtävistä joita tällä hetkellä olen ratkaisemassa.
- "kirjaudu ulos" nappi on sivuston valikossa, kun sen pitäisi olla aivan jossain muualla.
- tehtävän ratkaistessa pitäisi näkyä automaattisesti muiden kommentit ja ratkaisut; miten muuten voi oppia jos ei kato malliratkaisua? tämähän sivu oli juurikin oppimista varten tehty...
- pitää aina kopypastettaa se linkki sinne ratkaisusivulle.
- pitää aina kirjautua uudestaan PHP-haasteeseen, vaikka molemmat sivustot ovat saman domainin alla.
Edit:
- "Kirjaudu ulos" nappi on itseasissa täysin turha, sillä kirjaudut automaattisesti ulos kun suljet ikkunan.

Torgo, vain yksi keksi pitää tallentaa.

Ja mielestäni on aika urpo selain jos oletuksena täyttää edellisen arvon jokaiseen inputtiin mitä sivustolta löytyy. Siis tästähän ominaisuudesta on nyt kyse. Ei mistään "klikkaa inputtiin ja näet vaihtoehtoja edellisistä arvoista" -ominaisuudesta.

Torgo [14.09.2009 18:01:24]

#

T.M. kirjoitti:

Metabolix, juurikin käytettävyys on täysin ala-arvoista, tulee paljon turhia klikkauksia. esim tuo uusien kommenttien lista on erillisellä sivulla joka pitää joko kirjoittaa manuaalisesti osoiteriville tai klikata suosikeista :d
"seuraava tehtävä" linkki osoittaa aina viimeisimpään tehtävään, ei siis seuraavaan tehtävään siitä tehtävästä jota nyt katselet.

Sivut ovat ulkoasultaan kyllä selkeät, mutta kieltämättä navigointia ei ole ehkä mietitty aivan loppuun asti. Osalle sivuista pääsee vain ulos kirjautuneena, osalle vain sisään kirjautuneena, osaan ei pääse ollenkaan linkeillä ja osa on muuten vaan mutkien takana. Turhaa sälää ei ruudulla ole, joten se helpottaa navigointia, mutta muuten tuo logiikka vähän ontuu.

T.M. kirjoitti:

Torgo, vain yksi keksi pitää tallentaa.

Yksi keksi per sivusto. On olemassa paljon muitakin sivustoja kuin php haaste.

Olli [14.09.2009 18:02:57]

#

Aika hyvää palautetta T.M., toivottavasti Antti korjaa :)

T.M. [14.09.2009 18:09:18]

#

Torgo kirjoitti:

Osalle sivuista pääsee vain ulos kirjautuneena, osalle vain sisään kirjautuneena, osaan ei pääse ollenkaan linkeillä ja osa on muuten vaan mutkien takana.

Ainiin, tuo minulta unohtui vielä sanoa.

Torgo kirjoitti:

Yksi keksi per sivusto. On olemassa paljon muitakin sivustoja kuin php haaste.

Esim millä sivustolla sinun täytyy automaattisesti muistaa edellinen arvo inputtiin jonka siihen laitoit..? ei mulla nyt heti tuu mieleen tommosia....

Antti Laaksonen [14.09.2009 21:34:12]

#

Ratkaisun osoitteen kirjoitukseen on tulossa parannus.

Torgo kirjoitti:

Olisiko tämä [uusien viestien lista] mahdollista saada myös linkiksi php haasteen sivuille?

Uusien viestien lista on toistaiseksi koekäytössä, mutta linkki on tulossa.

Torgo kirjoitti:

Lisäksi erilaiset statistiikat on aina kivoja. :)

Tilastoja on tulossa, kunhan ratkaisuja kertyy enemmän (jotta kyseessä ovat tilastot eivätkä yksittäisten henkilöiden tulokset).

T.M. kirjoitti:

"seuraava tehtävä" linkki osoittaa aina viimeisimpään tehtävään, ei siis seuraavaan tehtävään siitä tehtävästä jota nyt katselet.

Linkit seuraavaan ja edelliseen tehtävään ovat tulossa.

T.M. kirjoitti:

en pysty edes näkemään ratkaisemattomien tehtävien nimiä, paitsi sen sivun tehtävistä joita tällä hetkellä olen ratkaisemassa.

Tähän ei ole tulossa muutosta, vaan tehtävien nimiä pääsee näkemään vähitellen. Eikö ole hauskaa ratkaista tehtäviä 20, 40, 60 ja 80, kun palkkio on sarja kokonaan uusia tehtävien nimiä?

T.M. kirjoitti:

"kirjaudu ulos" nappi on sivuston valikossa, kun sen pitäisi olla aivan jossain muualla.

Miksi sen pitäisi olla muualla ja missä sen pitäisi olla?

T.M. kirjoitti:

tehtävän ratkaistessa pitäisi näkyä automaattisesti muiden kommentit ja ratkaisut

Tulossa on linkki, josta pääsee suoraan malliratkaisuun.

T.M. kirjoitti:

pitää aina kirjautua uudestaan PHP-haasteeseen, vaikka molemmat sivustot ovat saman domainin alla.

Tämä on tosiaan turhaa, ja korjaus on tulossa.

Kiitos hyvästä palautteesta!

kayttaja-2791 [14.09.2009 21:40:42]

#

T.M. kirjoitti:

- "seuraava tehtävä" linkki osoittaa aina viimeisimpään tehtävään, ei siis seuraavaan tehtävään siitä tehtävästä jota nyt katselet.

Tuo nyt ei ainakaan itseäni haittaa, sillä eipä pahemmin noita ratkaistuja tule katseltua, eli tärkein linkki on tuo linkki siihen ei-ratkaistuun tehtävään. Toki sanamuoto voisi olla fiksumpi; onhan se vähän hämäävä.

Se mikä häiritsee hieman on että kun ratkaisun lähettää ei siitä suoraan pääse seuraavaan tehtävään kun "seuraava tehtävä" osoittaa jo ratkaistuun tehtävään. Enkä ainakaan huomannut että missään linkkiä oikeaan seuraavaan tehtävään olisi, seurauksena olen klikkaillut kahdesti "seuraava tehtävä" linkkiä.

Mutta hyvä palvelu tuo on, ehdottomasti kiitos sen kehittäjille ja ylläpitäjille. Alku tuntuu vain vähän puurolta, mutta eipä noissa tieten kauaa mene.

Antti Laaksonen [14.09.2009 21:56:37]

#

JTS kirjoitti:

Se mikä häiritsee hieman on että kun ratkaisun lähettää ei siitä suoraan pääse seuraavaan tehtävään kun "seuraava tehtävä" osoittaa jo ratkaistuun tehtävään.

Tähänkin on tulossa korjaus.

T.M. [14.09.2009 22:46:55]

#

Antti Laaksonen kirjoitti:

T.M. kirjoitti:

en pysty edes näkemään ratkaisemattomien tehtävien nimiä, paitsi sen sivun tehtävistä joita tällä hetkellä olen ratkaisemassa.

Tähän ei ole tulossa muutosta, vaan tehtävien nimiä pääsee näkemään vähitellen. Eikö ole hauskaa ratkaista tehtäviä 20, 40, 60 ja 80, kun palkkio on sarja kokonaan uusia tehtävien nimiä?

ei se palkitse minua ainakaan yhtään jos 20 tehtävän välissä vierähtää kokonainen päivä, jos näkisi mitä tehtäviä tulevaisuudessa on, ehkä jaksais tehäkki enemmän noita :P itse lopetin tehtävään 30 kun alko tuntuu saman toistolta... kattoo ny jos jossain vaiheessa aikaa/kiinnostusta riittää jatkaa.

Antti Laaksonen kirjoitti:

T.M. kirjoitti:

"kirjaudu ulos" nappi on sivuston valikossa, kun sen pitäisi olla aivan jossain muualla.

Miksi sen pitäisi olla muualla ja missä sen pitäisi olla?

siksi koska muutaman kerran sitä vahingossa painoin :P voisihan se kirjautuminen näkyä esim tossa linkkien oikealla puolella, kuten täällä putkassakin.
Ajattele jos putkassa näkyisi linkit "Etusivu | Oppaat | Koodivinkit | Kirjaudu ulos | Projektit | Keskustelu | Kilpailu | Ohjeet" ... ei siis aivan loogisimmasta päästä.

Torgo [15.09.2009 15:14:37]

#

T.M. kirjoitti:

Antti Laaksonen kirjoitti:

T.M. kirjoitti:

"kirjaudu ulos" nappi on sivuston valikossa, kun sen pitäisi olla aivan jossain muualla.

Miksi sen pitäisi olla muualla ja missä sen pitäisi olla?

siksi koska muutaman kerran sitä vahingossa painoin :P voisihan se kirjautuminen näkyä esim tossa linkkien oikealla puolella, kuten täällä putkassakin.
Ajattele jos putkassa näkyisi linkit "Etusivu | Oppaat | Koodivinkit | Kirjaudu ulos | Projektit | Keskustelu | Kilpailu | Ohjeet" ... ei siis aivan loogisimmasta päästä.

Tuo on hyvä pointti. "Kirjaudu ulos" ei ole kyllä oikeassa paikassaan, jos se on keskellä linkkilistaa kuin mikä tahansa muu linkki.

Itse tehtävistä ei ole pahaa sanottavaa. Aluksi tuo sidottu suoritusjärjestys vähän häiritsi, mutta oikeastaan se on ihan ok noin. Tehtävät myöskin vaikeutuvat sopivaa tahtia. Tosin aina välillä tuntuu että sinne on laitettu väliin täytteeksi vähän kevyempiä tehtäviä.

Itselleni haaste on ollut ensikosketus PHP:hen ja ylipäätään nettiohjelmointiin ja täytyy sanoa että olen oppinut noita tehtäviä tehdessä valtavasti. Lisäksi tälläisten haasteiden muodossa oppiminen on mielekästä. Siitäkin huolimatta oppimistarkoitukseen tehtävät voisivat olla vähän toisin laadittuja. Haasteena ne kyllä toimivat hienosti. Oppimiseen parempi tapa olisi mielestäni esim. sellainen, että jokaisessa esitellään jokin uusi PHP:n funktio tai ominaisuus jota tulisi käyttää hyväksi. Sitten tason viimeisessä tehtävässä tulisi hyödyntää kaikkia tasolla opittuja taitoja. Siis ikäänkuin tason loppukoe. Nyt nuo tehtävät tulee pääosin ratkaistuksi jo ennalta opituilla tekniikoilla ja tehtävistä tulee näin ollen helposti edellisten toistoa.

os [15.09.2009 18:53:14]

#

Torgo kirjoitti:

Siitäkin huolimatta oppimistarkoitukseen tehtävät voisivat olla vähän toisin laadittuja. Haasteena ne kyllä toimivat hienosti. Oppimiseen parempi tapa olisi mielestäni esim. sellainen, että jokaisessa esitellään jokin uusi PHP:n funktio tai ominaisuus jota tulisi käyttää hyväksi.

Tämä on mielestäni hyvä pointti. Tehtävät ovat luonteeltaan algoritmisia, vaikka PHP on luonteeltaan web-ohjelmointikieli, joten pelkästään tällä haasteella ei mielestäni kyllä voi varsinaisesti kvalifikoitua PHP-osaajaksi. Sinänsä hienoa, että sivulla riittää sisältöä (sata tehtävää!), mutta niiden tekemisessä olisi ehkä voinut keskittyä hieman enemmän monipuolisuuteen.

Metabolix [15.09.2009 21:27:41]

#

os kirjoitti:

Tehtävät ovat luonteeltaan algoritmisia, vaikka PHP on luonteeltaan web-ohjelmointikieli, joten pelkästään tällä haasteella ei mielestäni kyllä voi varsinaisesti kvalifikoitua PHP-osaajaksi.

Ehkä juuri siksi sertifikaatissa puhutaankin ohjelmoinnin ymmärtämisestä eikä PHP:n muistamisesta ulkoa. Sekään ei paljon todista, että muistaa tuhat PHP:n funktiota nimeltä ja parametrijärjestykseltä; pitäisi myös ymmärtää, miten niistä palikoista kootaan jotain järkevää.

Todellista ohjelmointitaitoa ei voi kovin hyvin mitata, koska keskeisiä tekijöitä on niin monta. Tosielämässä tärkeitä asioita ovat mm. nopeus (ohjelmoijan ja algoritmin), täsmällisyys (speksien noudattaminen ja bugittomuus) ja selkeys (koodin ja algoritmin). PHP-haaste testaa ongelmanratkaisukykyä, monet muut "PHP-taitotestit" testaavat sitä ulkoa osaamista; näistä tulevat algoritmin ja ohjelmoijan nopeus. Lisäksi PHP-haasteesta saisi tietoa myös täsmällisyydestä, jos katsoisi epäonnistuneiden lähetysten määrää. Selkeyttä taas ei voi arvostella kuin tutkimalla koodia, ja muut tärkeät asiat kuten projektikokonaisuuden hallinta näkyvät vasta käytännön tilanteissa.

tesmu [16.09.2009 00:52:50]

#

Tehtävä 67: Fibonaccin luvut II


Syöte 3

n=80


Käsittääkseni kahdeksaskymmenes fibonaccin luku on 14472334024676220

Eli viimeinen numero on 0

Miksi tämä sitten väittää oikeaksi ratkaisuksi

Oikea ratkaisu: 1

Sami [16.09.2009 00:59:58]

#

Itse ainakin saan että se olisi 14472334024676221

tesmu [16.09.2009 01:06:04]

#

Fibonaccin malliratkaisua muunsin niin että


echo str_replace(",", "", number_format($c));


Saan numeron 14472334024676220

Miksi tämä sitten ei toimi? :S

Sami [16.09.2009 01:19:26]

#

Luulisin että koska luku on yli 32 bittisen kokonaisluvun lukualueen (-2^31 - +2^31-1) niin PHP vaihtaa lukutyypiksi doublen (64 bittinen liukuluku), joka aiheuttaa pyöristysvirheitä.

Vielä kun kokeilin javalla System.out.println((long)14472334024676221d); niin yllätys yllätys sain tulokseksi juuri tuon 14472334024676220.

tesmu [16.09.2009 01:58:12]

#

Jaa-a mitenkähän tälläsen pyöristysvirheen saa korjattua, vai pitääkö mun lähteä säätää tätä stringgeillä. :S

Torgo [16.09.2009 08:58:03]

#

Noista malliratkaisuista täytyy kyllä antaa vähän palautetta. Niihin voisi kyllä panostaa huomattavasti enemmän. Niiden kuitenkin on tarkoitus toimia esimerkkinä ja MALLIratkaisuna. Osa ratkaisuista on ihan kohtuullisesti selitetty, mutta suurin osa on kommentoimatonta ja vailla mitään selitystä. Esimerkkinä vaikka elämäpelin malliratkaisu, jossa koko se pitkä koodi on kirjoitettu yhteen pötköön, vailla ensimmäistäkään kommenttia tai mitään selitystä koko ratkaisusta.

Antti Laaksonen [16.09.2009 14:10:06]

#

Torgo kirjoitti:

Oppimiseen parempi tapa olisi mielestäni esim. sellainen, että jokaisessa esitellään jokin uusi PHP:n funktio tai ominaisuus jota tulisi käyttää hyväksi. - - Nyt nuo tehtävät tulee pääosin ratkaistuksi jo ennalta opituilla tekniikoilla ja tehtävistä tulee näin ollen helposti edellisten toistoa.

Tosiaan lähestymistapa on, että ohjelmoijan kädet ovat vapaat, kunhan lopputulos on toimiva ja tehokas ratkaisu. Monesta tehtävästä veisi mielestäni ilon, jos käyttäjää ohjattaisiin tietyn ratkaisun suuntaan. Kieltämättä PHP-haaste saisi silti sisältää nykyistä enemmän neuvoja, miten eri asioita voi toteuttaa kätevästi PHP:llä.

os kirjoitti:

Tehtävät ovat luonteeltaan algoritmisia, vaikka PHP on luonteeltaan web-ohjelmointikieli, joten pelkästään tällä haasteella ei mielestäni kyllä voi varsinaisesti kvalifikoitua PHP-osaajaksi.

Ohjelmoinnin perusasioiden vankka hallinta on avainasemassa myös nettiohjelmoinnissa. PHP-haasteen läpäiseminen osoittaa, että henkilö ymmärtää, mistä ohjelmoinnissa on kysymys. Tällöin vaikka ei tietäisi mitään nettisivuista, asiat pystyy oppimaan todella nopeasti.

Torgo kirjoitti:

Noista malliratkaisuista täytyy kyllä antaa vähän palautetta. Niihin voisi kyllä panostaa huomattavasti enemmän. Niiden kuitenkin on tarkoitus toimia esimerkkinä ja MALLIratkaisuna.

Olet oikeassa: monet malliratkaisut voisivat todellakin olla parempia. Toisaalta jotkin tehtävät (kuten elämäpeli) ovat luonteeltaan sellaisia, että jos tehtävän onnistuu ratkaisemaan, sen malliratkaisusta tuskin oppii enää paljon.

tsuriga [16.09.2009 15:03:33]

#

Kieltämättä tuo PHP-haaste on nimenä hämäävä, ehdottaisin uudelleennimeämistä Ohjelmointihaasteeksi / Algoritmihaasteeksi (mikä toki vaatii koko projektiin suuremman rempan, mm. malliratkaisuja muilla kielillä, jopa pseudolla). Vaikka tarkistus tehdäänkin verkkopohjaisen rajapinnan kautta, mikä saattaa rajoittaa joillakin kielillä osallistumista (joskin Metabolix esittelikin yksinkertaisen PHP-servun, jota voi käyttää hyväksi myös muilla kielillä), tehtävät eivät sinällään ota kantaa webbipuolen tekniikoihin. Jos ajatellaan työnantajan näkökulmasta, sertifikaatti voi antaa harhaanjohtavan kuvan työnhakijan pätevyydestä web-ohjelmoinnissa. Tai mikäli työnantaja tuntee haasteen, en näe sertifikaatilla olevan painoarvoa tällä saralla. PHP-työpaikat kun lienevät mitä suurimmissa osin web-ohjelmointiin liittyviä.

Sertissä vois vaikka lukia jotain seuraavanlaista: "<Nimi> on suorittanut onnistuneesti Ohjelmointihaasteen ja täten osoittanut hallitsevansa algoritmisuunnitelun perusteet." tms./yms..

Antti Laaksonen [16.09.2009 20:45:14]

#

PHP-haasteen nimi ja luonne eivät tule muuttumaan. Nettiohjelmointi ja algoritmien suunnittelu eivät ole erillisiä saarekkeita, vaan hyvän nettiohjelmoijan täytyy tuntea PHP-haasteen asiat. Olen vakuuttunut siitä, että järkevän työnantajan silmissä PHP-haasteen sertifikaatti on merkittävä saavutus.

tsuriga [17.09.2009 10:42:58]

#

Ts. jos PHP-haasteen sertifikaatilla ei ole työnantajan silmissä painoarvoa, hän ei ole järkevä? PR:ssä on vielä hiomisen varaa ;).

Grez [17.09.2009 10:46:54]

#

Eiköhän toi ole aika paljon siitäkin kiinni, mitä töitä on tarjolla, että onko tuosta sertifikaatista kuinka paljon järkeä.

Ongelmana näkisin, että kovin harva työntekijä viitsii lähteä koko sertifikaattia suorittamaan, joten heillä ei voi olla kovin laajaa käsitystä siitä, mitä ko. sertifikaatin suorittaminen vaatii.

Jos joku työntekijä saisi nenänsä eteen tuollaisen sertifikaatin ja lähtisi sen perusteella tutustumaan haasteeseen, niin hänhän pääsisi käsiksi kohtuullisella vaivalla vain noihin ensimmäisiin tehtäviin ja se ei kyllä antaisi kovin haastavaa kuvaa ko. haasteesta.

Antti Laaksonen [17.09.2009 14:04:51]

#

tsuriga kirjoitti:

Ts. jos PHP-haasteen sertifikaatilla ei ole työnantajan silmissä painoarvoa, hän ei ole järkevä?

Mielestäni näin, jos työnantaja tuntee PHP-haasteen.

Olette oikeassa, että työnantajan voi olla vaikeaa tietää, mikä PHP-haaste pohjimmiltaan on. Tähän ongelmaan tulee kuitenkin korjaus: kunnollinen esittely PHP-haasteen kaikista osista, joka korvaa nykyiset kolme esimerkkitehtävää.

yuizy [17.09.2009 14:21:44]

#

Sertifikaatti komistaa nyt huoneeni seinää ja voin katsella sitä joka ilta mennessäni nukkumaan. Kiitos!

Grez [17.09.2009 15:38:20]

#

Hmm, oon näköjään kirjoittanut tuonne viestiin että "...kovin harva työntekijä viitsii..." kun pitäisi tietysti lukea "...kovin harva työnantaja viitsii..."

tsuriga [18.09.2009 02:04:21]

#

Antti Laaksonen kirjoitti:

tsuriga kirjoitti:

Ts. jos PHP-haasteen sertifikaatilla ei ole työnantajan silmissä painoarvoa, hän ei ole järkevä?

Mielestäni näin, jos työnantaja tuntee PHP-haasteen.

Joo ei siis lähinnä oli vaan tarkotus tarttua tuohon sanamuotoon, eli ei ehkä kannata käyttää noin "jyrkkiä" / "absoluuttisia" ilmaisuja, kun tätä lähdetään työnantajille esittelemään tai markkinoimaan :).

Torgo [18.09.2009 13:57:00]

#

Antti Laaksonen kirjoitti:

tsuriga kirjoitti:

Ts. jos PHP-haasteen sertifikaatilla ei ole työnantajan silmissä painoarvoa, hän ei ole järkevä?

Mielestäni näin, jos työnantaja tuntee PHP-haasteen.

Kannattaa sanoa se ääneen työhaastattelussa. =D

Eihän tuosta sertifikaatista varmasti haittaakaan ole. Onhan se osoitus tietyntyyppisestä ongelmanratkaisukyvystä ja varmasti etu tasapäisiä hakijoita verrattaessa. Paljon riippuu varmasti siitäkin millaiseen tehtävään ollaan hakemassa.

Mielestäni kuitenkaan järkevä työnantaja ei sertifikaattia priorisoi kriteerien etupäähän. Ohjelmointityöstä kuitenkin 99,9% on jotain ihan muuta kuin algoritmien kehittelyä ja matemaattisten kaavojen pyörittelyä. Moni ohjelmoija ei työuransa aikana törmää sellaiseen lainkaan, vaan käyttää jo kertaalleen keksittyjä ratkaisuja hyväkseen. Järkevä työnantaja pikemminkin arvostaa hakijaa, jolla on näyttöjä laadukkaan koodin tuottamisesta. Laatukriteerejä puolestaan on lukuisia, kuten vaatimusten toteutuminen, virheettömyys, suorituskyky, muistin käyttö, koodin koko, kompleksisuus, luettavuus, ylläpidettävyys jne.

Ainakin itse palkkaisin henkilön, joka kirjoittaa nöyrästi hyvien ohjelmointitapojen mukaista koodia suhteellisen vaivattomasti. Tietysti respectiä täytyy antaa sellaisellekin henkilölle, joka 6000 merkkiä pitkällä regexp onelinerilla ratkaisee elämän arvoituksen, mutta ei pirukaan ylläpidä ja lue sellaista tekstiä.

Fred J. Brooks: Mythical Man Month kirjoitti:

Representation is the essence of programming.

Antti Laaksonen [19.09.2009 23:16:57]

#

Sain nyt tehtyä monta parannusta PHP-haasteeseen:

* Jos tehtävään lähettää oikeaan ratkaisuun, ilmestyy suoraan linkki malliratkaisuun ja seuraavaan tehtävään.
* Järjestelmä muistaa tehtävän ratkaisun osoitteen ja päättelee uuden tehtävän ratkaisun osoitteen alkuosan.
* Järjestelmässä on linkki uusien viestien listaan ja tilastoon, jossa näkyvät kaikkien tehtävien ratkaisumäärät.
* Linkki uloskirjautumiseen on uudessa paikassa erillään muista.
* Jos on kirjautunut Ohjelmointiputkaan, ei tarvitse kirjautua uudestaan.
* Jos tehtävässä täytyy tulostaa rivinvaihto, myös <br> ja <br /> kelpaavat.

En lisännyt linkkejä seuraavaan ja edelliseen tehtävään, koska en kuitenkaan katsonut niitä tarpeellisiksi. Tehtäväkohtaiset tarkemmat tilastot (esim. oikeiden ja väärien ratkaisujen suhde) eivät tule ainakaan vielä käyttöön, koska loppuosan tehtävissä on liian vähän aineistoa.

Onko mielessänne vielä muuta korjattavaa tai lisättävää?

Metabolix [19.09.2009 23:32:13]

#

Antti Laaksonen kirjoitti:

Jos on kirjautunut Ohjelmointiputkaan, ei tarvitse kirjautua uudestaan.

Voisiko osoite /phph/ viedä tällöin suoraan tehtävälistaan eikä kirjautumiseen?

Viestinmuokkaussivulla on nappulalle tullut tekstilaatikon CSS-luokka.

Antti Laaksonen [19.09.2009 23:47:15]

#

Metabolix kirjoitti:

Voisiko osoite /phph/ viedä tällöin suoraan tehtävälistaan eikä kirjautumiseen?

Minusta nykyinen ratkaisu on parempi, koska joku voi haluta piipahtaa pääsivulla (esim. jatkaakseen tietosivulle).

Metabolix kirjoitti:

Viestinmuokkaussivulla on nappulalle tullut tekstilaatikon CSS-luokka.

Nyt korjasin tämän.

Torgo [20.09.2009 00:12:39]

#

Antti Laaksonen kirjoitti:

En lisännyt linkkejä seuraavaan ja edelliseen tehtävään, koska en kuitenkaan katsonut niitä tarpeellisiksi. Tehtäväkohtaiset tarkemmat tilastot (esim. oikeiden ja väärien ratkaisujen suhde) eivät tule ainakaan vielä käyttöön, koska loppuosan tehtävissä on liian vähän aineistoa.

Heh. Eikä ainakaan mun puolesta tarvitse tullakaan. Mulla on paha tapa antaa tuolle tarkastajalle ennalta tarkastamaton koodi, jolloin virheitä tulee enemmän kuin paljon. Vois olla karua luettavaa ainakin omalta osaltani. ;D Ehkä sitten jos jokaisella olisi joku oma privaatti profiilisivunsa, mistä näkee oman (häpeällisen) tilastonsa. :)

Antti Laaksonen kirjoitti:

Onko mielessänne vielä muuta korjattavaa tai lisättävää?

Hyvältä näyttää. Äkkiseltään ei tule ainakaan mitään vakavempaa puutetta tai ongelmaa mieleen. Yksi pieni asia mikä tuli mieleen, että tilastoissa voisi olla sertifikaatin suorittaneet kunniataulu(ko)ssa.

Torgo [20.09.2009 11:58:21]

#

Antti Laaksonen kirjoitti:

Onko mielessänne vielä muuta korjattavaa tai lisättävää?

Miten olisi linkki ohjelmointiputkan etusivulle.

Antti Laaksonen [20.09.2009 12:50:57]

#

Kaikki yleisesti näkyvät tilastot tulevat olemaan sellaisia, että niistä ei voi päätellä yksittäisen käyttäjän suorituksia.

Henkilökohtaiset tilastot ovat asia erikseen, mutta niissä ei ehkä kannata ilmoittaa oikeiden ja väärien ratkaisujen suhdetta, koska silloin ei voisi tehdä rauhassa kokeiluja tarkastajan kanssa.

Nyt PHP-haasteen julkisilla sivuilla on linkki Ohjelmointiputkaan.

Metabolix [20.09.2009 14:45:41]

#

Sain sarjan loppuun C:llä. On hieman kurjaa, ettei mikään tehtävä vaatinut kovin hienostunutta ratkaisua: pari kertaa piti turvautua välitulosten taulukointiin, ja useimmat tehtävät ratkesivat ilmankin sitä jollain aivan typerällä menetelmällä kuten kokeilemalla kaikkia vaihtoehtoja.

Väliaikojen perusteella voisi sanoa, että ensimmäiset 60–80 tehtävää ovat yksinkertaisia ja vasta viimeiset 10–20 vaativat sen verran ajattelua, että niillä voisi varsinaisia ohjelmointitaitoja osoittaa. Aika moni tehtävä oli "hankala" vain siksi, että piti saada kaikki tarkistukset kohdalleen (esim. loppupuolella kuningatarten ja ratsujen asettelu ruudukkoon), vaikka itse algoritmi oli yhä sama "kokeile kaikkia".

Väliaikoja:
30 tehtävää, 1,5 tuntia.
60 tehtävää, 4 tuntia.
80 tehtävää, 6 tuntia.
90 tehtävää, 8 tuntia.
95 tehtävää, 10 tuntia.
100 tehtävää, 13 tuntia.

Vauhtia olisi voinut parantaa lunttaamalla vinkkejä Wikipediasta (jolloin kuka tahansa saa hankalimmatkin ratkaistua), käyttämällä parissa suuria lukuja koskevassa tehtävässä valmista kirjastoa, kirjoittamalla kunnon tekstieditorilla (käytin nano-editoria ssh:n yli) tai käyttämällä jotain hieman näppärämpää kieltä; muutaman kerran alkoi C tuntua vaivalloiselta erityisesti merkkijonojen kanssa.

Kuka vastaa haasteeseen Brainfuckilla? ;)

Torgo [20.09.2009 17:06:04]

#

Antti Laaksonen kirjoitti:

Onko mielessänne vielä muuta korjattavaa tai lisättävää?

Kun tehtävän on juuri ratkaissut, niin linkit malliratkaisuun yms. näkyy hienosti, mutta jos tehtävään palaa takaisin uudestaan, niin linkkejä ei enää näy.

Metabolix [20.09.2009 17:10:32]

#

Antti Laaksonen kirjoitti:

Onko mielessänne vielä muuta korjattavaa tai lisättävää?

Kun tehtävä on ratkaistu, tehtävänannossa voisi olla Ratkaisu-otsikon alla linkki malliratkaisuun.

Chiman [20.09.2009 18:13:47]

#

Torgo kirjoitti:

Mulla on paha tapa antaa tuolle tarkastajalle ennalta tarkastamaton koodi, jolloin virheitä tulee enemmän kuin paljon.

Teen samoin ihan käytännön syystäkin: Tehtävänannossa ei ole valmiina osoiteriville pastettavaa esimerkkisyötettä, joten siksi on kätevämpää heittää heti ensimmäinen versio tarkastajalle, jolloin todennäköisesti virheellisen vastauksen palaute kertoo suoraan osoiteriville pastettavat parametrit oikeassa muodossa, josta voi pasteta syötteen omaan debuggailuun.

Jonkin "?n=5" kirjoittaa nopeasti, mutta laiskuus voittaa "?leveys=20&korkeus=5&kohdat=2,2,4,7|2,12,5,15|3,6,4,12" -askartelun :)

os [20.09.2009 18:22:24]

#

Voisiko tarkistimen saada ottamaan yhteyttä muihinkin portteihin kuin 80? Tai jos tämä on tarkoituksella, estetty, niin olisi hyvä, jos sivu ilmoittaisi tästä selkeämmällä viestillä kuin "Yhteyden muodostus ei onnistunut!".

Torgo [20.09.2009 18:22:48]

#

Metabolix kirjoitti:

Sain sarjan loppuun C:llä.

Onneksi olkoon!

Metabolix kirjoitti:

On hieman kurjaa, ettei mikään tehtävä vaatinut kovin hienostunutta ratkaisua

Minusta taas kurjaa on, että niin moni tehtävä ratkeaa lähes täysin identtisellä ohjelmalla, missä vain muuttuja tai kaksi on erona.

Metabolix kirjoitti:

Väliaikojen perusteella voisi sanoa, että ensimmäiset 60–80 tehtävää ovat yksinkertaisia ja vasta viimeiset 10–20 vaativat sen verran ajattelua, että niillä voisi varsinaisia ohjelmointitaitoja osoittaa.

Ensimmäiset 60 testaavat aika pitkälle ohjelmoijan perustaitoja. Siis sellaisia mitä jokaisen ohjelmoijan on syytä osata. Seuraavat 20 ovat varmasti helppoja sellaiselle joka on kyseisten ongelmien parissa aikaisemminkin puuhastellut. Minulle ne ovat olleet uusi aluevaltaus, sillä sulautettujen järjestelmien kanssa vastaavanlaisia ongelmia ei ole koskaan vastaan tullut. Erityisesti rekursio, jota malliratkaisut näyttävät viljelevän, ei sovi lainkaan yhteen sulautettujen kanssa. Minulta ne ovat vaatineet hieman perehtymistä aiheeseen. Viimeiset 20 on vielä jäljellä, joten niistä en sano vielä mitään.

Metabolix kirjoitti:

Vauhtia olisi voinut parantaa lunttaamalla vinkkejä Wikipediasta (jolloin kuka tahansa saa hankalimmatkin ratkaistua),

Tästä olen eri mieltä. Jos wikipediaa lukemalla kuka tahansa saisi minkä tahansa ongelman ratkaistua, niin kaikkihan olisivat ohjelmoijia. Onhan ohjelmointi niin sexyäkin ;) Jotta wikipediasta olisi hyötyä, niin sieltä on osattava etsiä oikeaa tietoa ja sen lisäksi ymmärrettävä se. Väitän että jonkinlaista aikaisempaa kokemusta ja/tai ymmärrystä aiheesta tarvitaan, että tietää mitä etsiä, miten sitä soveltaa ja tietää milloin on löytänyt haluamansa.

Metabolix kirjoitti:

käyttämällä parissa suuria lukuja koskevassa tehtävässä valmista kirjastoa, kirjoittamalla kunnon tekstieditorilla (käytin nano-editoria ssh:n yli) tai käyttämällä jotain hieman näppärämpää kieltä;

Heh. Mä oon kans tehnyt peruseditorilla SSH:n yli kaikki tehtävät. Serverikin lagaa välillä niin pahasti että jokaista merkkiä saa odotella useita sekunteja. Lisäksi PHP on mulle ihan outo kieli, eikä debuggaaminen tuolla ohjelmointimenetelmällä oikein meinaa onnistua. Varmaan eniten aikaa oon käyttänyt siihen että metsästän jotain puuttuvaa $-merkkiä :p

Tietty oman vapaa-ajan vajavaisuus on kans esteenä. Ei meinaa pidempiä rakoja löytyä, joten kaikki tulee tehtyä lyhyissä katkonaisissa pätkissä. Toisaalta ehtiipä siten paremmin sulatella kaikkea uutta tietoa.

Metabolix kirjoitti:

Kuka vastaa haasteeseen Brainfuckilla? ;)

Ei kiitos. :)

Metabolix [20.09.2009 18:53:22]

#

Torgo kirjoitti:

Ensimmäiset 60 testaavat aika pitkälle ohjelmoijan perustaitoja. Siis sellaisia mitä jokaisen ohjelmoijan on syytä osata. Seuraavat 20 ovat varmasti helppoja sellaiselle joka on kyseisten ongelmien parissa aikaisemminkin puuhastellut. Minulle ne ovat olleet uusi aluevaltaus, sillä sulautettujen järjestelmien kanssa vastaavanlaisia ongelmia ei ole koskaan vastaan tullut.

Viittasin lähinnä aiempiin puheisiin, joissa on jonkin verran paisuteltu PHP-haasteen algoritmista antia. Pääasia sanomassani oli, että tehtäviin ei tarvitse keksiä hyvää ratkaisua vaan edes jokin ratkaisu, minkä vuoksi loppupään tehtävätkään eivät vaadi algoritmiselta kannalta ihmeitä vaan ratkeavat tässä suhteessa aika helposti.

Mutta siinä taidat olla oikeassa, että monet algoritmiohjelmointia harrastaneille tutuista menetelmistä eivät tule käytännön aloilla itsestään vastaan. Olen kuitenkin yhtä mieltä PHP-haasteen kanssa siitä, että monet näistäkin menetelmistä, esimerkiksi rekursio, on hyvä hallita. Rekursion voi myös helposti muuttaa (näennäisesti) iteraatioksi, jos vaadittava pinon koko tunnetaan ennalta. Resurssivaatimukset pienenevät, ja mistä sen tietää, jos joskus tulisi sulautetussakin järjestelmässä tarpeeseen. Myös web-puolen hommissa olen pelastanut monta purkkakoodipaikkaa rekursiolla tai vastaavilla iteraatioilla. (Kolmeen kertaan sama koodi ja päälle vielä die("No support for more than 3 levels of nesting")? Ei kiitos.)

Torgo kirjoitti:

Jotta wikipediasta olisi hyötyä, niin sieltä on osattava etsiä oikeaa tietoa ja sen lisäksi ymmärrettävä se.

Myönnän: liioittelin aika pahasti. Joka tapauksessa mm. tehtävän 96 ratkaiseminen itse vei ihan kohtalaisesti aikaa, vaikka koodia tuli vain saman verran kuin tehtävässä 13. Monikin Linux-käyttäjä on päässyt osalliseksi kyseisen tehtävän salakirjoituksesta, ja jos tietää, mitä hakee, Wikipedia tarjoaa valmiin ratkaisun Pythonilla ja pseudokoodilla.

Monissa osajoukkoja tai permutaatioita käsittelevissä tehtävissä sen sijaan ei tarvitse edes ennalta tietää, mistä on kyse, vaan hakukoneet kyllä löytävät käyttökelpoisia algoritmeja suunnilleen sanoilla "permutations PHP". Jos pääsee kunnialla ensimmäisistä 60 tehtävästä läpi, osaa luultavasti myös soveltaa netistä löytyviä koodeja sen verran, että läpäisee niiden voimin loput tehtävät vaivaamatta kummemmin omia aivojaan sillä, miksi kaikki permutaatiot syntyvät tällä algoritmilla ja miksi juuri näin saadaan kaikki osajoukot muodostettua.

tsuriga [20.09.2009 18:57:31]

#

Torgo kirjoitti:

Metabolix kirjoitti:

Vauhtia olisi voinut parantaa lunttaamalla vinkkejä Wikipediasta (jolloin kuka tahansa saa hankalimmatkin ratkaistua),

Tästä olen eri mieltä. Jos wikipediaa lukemalla kuka tahansa saisi minkä tahansa ongelman ratkaistua, niin kaikkihan olisivat ohjelmoijia.

Ei se ohjelmointi mitään teoreettista fysiikkaa ole, se vaan vaatii perehtymistä ja eritoten kiinnostusta asiaan. Tästä esimerkkinä heitti vieraspuhuja, että hän on puhunut sadoille opiskelijoille, joista ainoastaan yhdestä ties varmaks, ettei siitä tule ohjelmoijaa.

Antti Laaksonen [20.09.2009 20:14:59]

#

Torgo kirjoitti:

Kun tehtävän on juuri ratkaissut, niin linkit malliratkaisuun yms. näkyy hienosti, mutta jos tehtävään palaa takaisin uudestaan, niin linkkejä ei enää näy.

Nyt tehtävänannon ja malliratkaisun välillä pääsee siirtymään kätevästi.

os kirjoitti:

Voisiko tarkistimen saada ottamaan yhteyttä muihinkin portteihin kuin 80?

Tarkistin yrittää ottaa yhteyttä kaikkiin portteihin, mutta valitettavasti webhotellissa on estetty yhteydet joihinkin portteihin. Tosiaan virheviestiin voisi liittää arvauksen ongelman syystä, jos portti on muu kuin 80.

Torgo kirjoitti:

Minusta taas kurjaa on, että niin moni tehtävä ratkeaa lähes täysin identtisellä ohjelmalla, missä vain muuttuja tai kaksi on erona.

Kertaus on opintojen äiti, mutta taidatpa olla oikeassa, että tehtävissä saisi olla vähemmän toistoa. Valitettavasti tehtäviä ei voi muuttaa enää, koska haasteen täytyy olla kaikille samanlainen.

Tehtävien vaikeus on hyvin henkilökohtainen asia, ja vaikeutta ehkä helposti aliarvioi, jos osaa asian valmiiksi. Kun minä olin ohjelmoinut muutaman vuoden, halusin tehdä kertoman laskevan ohjelman. Tunsin muuttujat ja silmukat ja mietin ohjelman toteutusta kauan, mutta en silti saanut aikaan toimivaa ohjelmaa. Monta vuotta myöhemmin minulle tuli vastaan tilanne, jossa täytyi käytännössä luetella joukon osajoukot. Tätä ongelmaa pohdin monta päivää ja vihkon sivut täyttyivät, ja lopputulos oli sekava monta sataa riviä pitkä ohjelma.

Torgo [21.09.2009 09:59:33]

#

tsuriga kirjoitti:

Torgo kirjoitti:

Metabolix kirjoitti:

Vauhtia olisi voinut parantaa lunttaamalla vinkkejä Wikipediasta (jolloin kuka tahansa saa hankalimmatkin ratkaistua),

Tästä olen eri mieltä. Jos wikipediaa lukemalla kuka tahansa saisi minkä tahansa ongelman ratkaistua, niin kaikkihan olisivat ohjelmoijia.

Ei se ohjelmointi mitään teoreettista fysiikkaa ole, se vaan vaatii perehtymistä ja eritoten kiinnostusta asiaan. Tästä esimerkkinä heitti vieraspuhuja, että hän on puhunut sadoille opiskelijoille, joista ainoastaan yhdestä ties varmaks, ettei siitä tule ohjelmoijaa.

Se ei ollutkaan pointtini. Kyllä melkein kuka tahansa voi olla ohjelmoija, kunhan opettelee ohjelmoinnin perustaidot. Sen soveltaminen onkin sitten eri juttu. Ohjelmoinnista tulee teoreettista fysiikkaa siinä vaiheessa, kun sitä aletaan soveltamaan teoreettiseen fysiikkaan. Pointti oli siinä, että mitä oudompi/vaikeampi ongelma on ratkaistavissa, niin sitä vaikeampi siihen on löytää apua ja myös sitä vaikeampi ottaa tolkkua saatavilla olevasta avusta. Jossain vaiheessa jokaisella tulee raja vastaan, vaikka olisi kuinka kiinnostusta aihetta kohtaan. Ei edes Einstein onnistunut luomaan yhtenäisyysteoriaa, vaikka oli omistanut sille lähes koko elämänsä.

Torgo [21.09.2009 14:51:30]

#

Metabolix kirjoitti:

Rekursion voi myös helposti muuttaa (näennäisesti) iteraatioksi

Itseasiassa juuri niin olen tehnytkin omissa ratkaisuissani. Rekursio ei minulta (vielä) oikein luonnistu. Lopputuloksen siitä kun yritin vääntää ratkaisun väkisin rekursiiviseksi, voi katsoa tehtävän 72 kommenteista. Ei todellakaan hyvä. Jauhojen mittaus on varmaan ainoa minkä olen tehnyt oikeasti rekursiolla.

walkout_ [26.09.2009 12:09:47]

#

Mitä hyötyä tästä PHP-haasteen tekemisestä loppuun asiti oikeastaan muuten on. En kuitenkaan saa tutkintoa jossa CV:hen voin laittaa esim., että Certified Zend Enginer. Mut joo on noi tehtävät nyt sellasia että todella pitää PHP:ta osata jos meinaa tämän loppuun tehdä.

Blaze [26.09.2009 12:39:41]

#

walkout_ kirjoitti:

Mitä hyötyä tästä PHP-haasteen tekemisestä loppuun asiti oikeastaan muuten on.

Tiedät voittaneesi itsesi ja osanneesi jotain.

Antti Laaksonen [26.09.2009 20:02:03]

#

Tärkein hyöty on se, että oppii paljon asioita – tai on valmiiksi todella taitava. Sertifikaatti on toki mukava lisä CV:ssä.

Macro [26.09.2009 20:04:22]

#

Saisikos kohta tilastot esille, niin tietäisi miten porukka pärjää? Itse en ole edes aloittanut, kun nyt kiinnostaa enemmän C++ :) Tai, voisinhan tehdä ne PHP:llä, ja sitten C++:lla.

Antti Laaksonen [26.09.2009 20:07:06]

#

Tilastot näkee, kun kirjautuu PHP-haasteeseen. Tällä hetkellä tehtävän 20 on ratkaissut 96 henkilöä, tehtävän 40 on ratkaissut 24 henkilöä, tehtävän 60 on ratkaissut 15 henkilöä, tehtävän 80 on ratkaissut 7 henkilöä ja tehtävän 100 on ratkaissut vain 2 henkilöä.

Macro [26.09.2009 20:10:30]

#

Ookkei =)

osku91 [26.09.2009 23:07:00]

#

Aivan hirveä ulkoasu, ihan silmiin sattuu. Voisiko sitä muuttaa niin että tausta olisi valkoinen ja teksti mustaa? Tai tehdä vaikka niin että käyttäjä saa valita erivärisen ulkoasun jos haluaa

walkout_ [28.09.2009 00:48:02]

#

Jaa se on ulkoasun vika jos homma ei kiinnosta vai????

Metabolix [28.09.2009 09:51:12]

#

osku91 kirjoitti:

Aivan hirveä ulkoasu, ihan silmiin sattuu.

Onko jotain perustelujakin? Minusta tummapohjaiset ulkoasut sattuvat silmiin paljon vähemmän kuin valkopohjaiset.

Mutta voit aivan vapaasti kirjoittaa omat CSS:t selaimesi tyylitiedostoon; kaiken pitäisi olla muutettavissa. Esimerkiksi Firefoxille on tätä varten helppokäyttöinen lisäosa Stylish.

jo123 [28.09.2009 15:31:32]

#

osku91 kirjoitti:

Aivan hirveä ulkoasu, ihan silmiin sattuu.

Hetkinen, ei tuo ulkoasu todellakaan ole mikään maailman kaatavan hieno, mutta sopii täydellisesti selkeytensä puolesta tämän tyyppiseen asiaan. Onko kenenkään järkeä alkaa tekemään hienoa ulkoasua kyseiselle sivulle, kun itse asia on kuitenkin itse php-haaste ja sen tehtävät, EIKÄ sivun ulkoasu.

Sivusto toimii kuitenkin käytännössä vain tehtävien tarkistajana, joten ei sinun siellä kauaa aikaa tarvitse viettää ja ihailla sen kauheaa ulkoasua :).

walkout_ [28.09.2009 16:51:00]

#

Niin mutta vaikuttaako ulkoasu siihen mihin tuo PHP-haaste on tarkoitettu jos se kerran toimii ja on käytettävyyden kannalta OK. Tiedän tietty että jos ostan tietokoneohjelman niin ulkoasun ulkonäkö vaikuttaa valintaani ja sitten käytettävyys ja se paljonko siinä on ominaisuuksia ja onko niistä ominaisuuksita minulle hyötyä mitä haen.

Esimerkkinä voisin ottaa Passelin, jota koulussa on tunnilla joutunut opiskelemaan. Sen ulkoasu on aivan hirveä ja käytettävyydessä on vaikka mitä vikoja ja sillä tehdyt laskut on mun mielestä aika amatööritason näköisiä. Joten mielummin teen sen laskun Excelillä. Teen vain Excelillä laskupohjan ja asemmoin siihen firman logon tulostuskelpoisella resolla ja sit vaan täyttelen ja viitenumerot ja laskun numerot saan SOAP-serveriltä painamalla nappia ja tiedot menee kirjanpitäjälle, joka on inarissa. Meinaan aika työlästä tehdää niin että syötän ensin asiakaat asiakaskantaan ja sitten miljardi palvelua esim. PHP-ohjelmointi tuntihintaan se ja se tuotteet-/palvelutkantaan ennenkuin voin tehdä laskun johon sitten en saa kunnon selitettä sille mitä tehtiin.

walkout_ [28.09.2009 22:41:42]

#

Onko PHP-haasteessa joku vika kun yhden tehtävän kohdalla muistan tasan tarkkaan että malliratkaisut tuli näkyviin vaikka en sitä tehtävää ollut vielä onnistunut suorittamaan. Mutta en halunnut huijata vaan suoritin tehtävän ilman että olisin käynyt katsomassa miten se pitää tehdä.

Antti Laaksonen [29.09.2009 10:29:27]

#

Onko joku muu havainnut saman ilmiön?

Chiman [29.09.2009 11:06:06]

#

En ole havainnut, mutta olisiko tuossa ollut kyseessä tilanne, jossa walkout_ sai juuri ratkaistua tehtävän ja saman ruudun yläosassa Seuraava tehtävä -linkki osoitti vielä siihen samaan tehtävään, kuten ainakin jossain vaiheessa oli. Siitä kun klikkasi, pääsi siis jo ratkaistuun tehtävään, jossa on linkki malliratkaisuun.

Torgo [29.09.2009 13:19:18]

#

En ole havainnut ja kokeilin antaa ratkaisusivulle id:tä tehtävistä joita ei ole vielä ratkottu. Ei päästänyt. Eli mulla ainakin toimii ok. Testasin Firefox 3.5.3:lla ja IE8:lla.

Mutta samaa probleemia huomasin mitä tuossa toisessa ketjussa on keskusteltu Putkan otsikosta. Firefoxilla PHP-haasteen logon tausta näyttää eriväriseltä kuin muun sivun tausta. Se pomppaa sieltä suht ikävästi laatikkona esiin. IE:llä tuota ongelmaa ei näytä olevan, vaan kuva sulautuu taustaan ihan nätisti. Näin siis ainakin XP:ssä.

Torgo [30.09.2009 13:08:15]

#

http://sooda.dy.fi/fpaste/index.php?uZ6

Tuossa se on visuaalisessa muodossaan mitä tarkoitin. Etualalla IE8 ja taka-alalla Firefox 3.5.3 ja käyttiksenä siis XP. Huom. kuvan kirkkautta ja kontrastia säädetty reilusti, jotta pointti tulisi selvemmin esille.

Ja mistä tarkkasilmäiset näkevät myös tavan, mitä ajattelin kokeilla seuraavaan tehtävään ;) En viitsisi taas tehdä samaa "kokeile kaikkia vaihtoehtoja" algoritmeja.

Grez [30.09.2009 13:37:23]

#

Ja täällä (uusin FF, testattu sekä Vista että XP) logon ja taustan sävy on tasan sama (0,0,133 eli #000085). Olisiko sama väriprofiileihin liittyvä ongelma kuin mitä toisaalla käsiteltiin putkan otsikon osalta.

Torgo [30.09.2009 14:53:31]

#

Grez kirjoitti:

Ja täällä (uusin FF, testattu sekä Vista että XP) logon ja taustan sävy on tasan sama (0,0,133 eli #000085). Olisiko sama väriprofiileihin liittyvä ongelma kuin mitä toisaalla käsiteltiin putkan otsikon osalta.

Jaa a. Aika kummalliselta kuulostaa. Jos kyseessä olisi XP:n väriprofiili, niin sen pitäisi vaikuttaa kaikkiin elementteihin samalla tavalla. Eli taustan ja logon keskinäinen suhde ei pitäisi muuttua. Jos taas kyseessä on kuvaan itseensä upotettu väriprofiili (esim. sRGB), niin se tietysti vaikuttaa yksittäiseen elementtiin, eli tässä tapauksessa logoon. Mutta jos siitä on kysymys, niin miksi minun sama versio FF:sta näyttää kuvan ja taustan erivärisenä, mutta sinulla samanvärisenä?? Luulisi niiden käsittelevän sen väriprofiilin samalla tavalla.

Grez [30.09.2009 14:58:19]

#

Jaa-a kerropas miten se väriprofiili upotetaan siihen taustaväriin.. JPG:ssä tai PNG:ssä kun sellainen voi sisältyä kuvaan.

Toisaalta jos et usko tuohon väriprofiiliin, niin sitten sun kone on vaan rikki, koska mulla siinä ei ole värieroa.

Torgo [30.09.2009 15:21:48]

#

Grez kirjoitti:

Jaa-a kerropas miten se väriprofiili upotetaan siihen taustaväriin.. JPG:ssä tai PNG:ssä kun sellainen voi sisältyä kuvaan.

Toisaalta jos et usko tuohon väriprofiiliin, niin sitten sun kone on vaan rikki, koska mulla siinä ei ole värieroa.

Logon profiilistahan tässä puhutaankin ja se on png-formaatissa. Ja näyttää olevan sRGB profiilissa. Mistä muuten tuon lukeman revit? Sehän on oikein kunnolla sininen ja minä en ainakaan tuollaisia lukemia saa millään. Värinpoiminnalla sain lukemaksi #000011

Kyllä tässä väriprofiilit toimivat. Jos muutan kuvat väriprofiilista toiseen ja katson niitä FF:llä, niin ihan oikein ne näyttävät siinäkin muuttuvan. Tarkistin sRGB, aRGB ja ProPhoto RGB profiileilla, että FF näyttää ne kuten pitää. Eli en usko että koneeni on rikki, mutta jostain syystä se hanskaa tuon kuvan eri tavalla kuin sinun koneesi (paitsi IE:llä, missä värieroa taas ei ole).

Mietin olisiko Spyder voinut sekoittaa jotain ja disabloin senkin, mutta ei vaikuttanut asiaan.

Grez [30.09.2009 15:30:00]

#

lainaus:

Logon profiilistahan tässä puhutaankin ja se on png-formaatissa.

Kyllä tässä nähdäkseni puhuttiin logon ja CSS:ssä määritellyn taustavärin erosta.

lainaus:

Mistä muuten tuon lukeman revit? Sehän on oikein kunnolla sininen ja minä en ainakaan tuollaisia lukemia saa millään. Värinpoiminnalla sain lukemaksi #000011

Hupsis, se 133 oli tuosta kuvasta mitä olin säätänyt, että mahdolliset erot näkyisi paremmin.

Mutta tosiaan muokkaamaton on #000011 (niinkuin sanoitkin) ja sama on määritelty CSS:ssä background -väriksi.

Jos otat ruudunkaappauksen tuosta sinulla väärin näkyvästä niin voit varmaan siitä katsoa kumpi poikkeaa tuosta #000011:stä.

lainaus:

Kyllä tässä väriprofiilit toimivat. Jos muutan kuvat väriprofiilista toiseen ja katson niitä FF:llä, niin ihan oikein ne näyttävät siinäkin muuttuvan. Tarkistin sRGB, aRGB ja ProPhoto RGB profiileilla, että FF näyttää ne kuten pitää. Eli en usko että koneeni on rikki, mutta jostain syystä se hanskaa tuon kuvan eri tavalla kuin sinun koneesi (paitsi IE:llä, missä värieroa taas ei ole).

No kokeilepa vielä laittaa se CSS samaan väriprofiiliin. Kerro sitten meillekin miten se tapahtuu.

Torgo [30.09.2009 15:55:48]

#

grez kirjoitti:

Kyllä tässä nähdäkseni puhuttiin logon ja CSS:ssä määritellyn taustavärin erosta.

Juu, mutta en tietääkseni missään väittänyt että taustavärillä olisi jokin oma väriprofiilinsa. Puhuin nimenomaan kuvan väriprofiilista.

No tuo kuvahan se siellä väärin näkyy. Voiskohan se FF kuitenkin ryssiä sen profiilin jotenkin.
Logo: #050018
Tausta: #000011

Nyt ei kerkee alkaa säätämään noita, mutta täytyy palata asiaan myöhemmin.

Grez [30.09.2009 16:00:14]

#

Olettaisin että se ei ryssi mitään, vaan näyttösi on jossain muussa profiilissa kuin sRGB (jolloin sRGB:n #000011 on sinun näytölläsi jotain muuta). Taustavärissä taas ei ole profiilia, joten se näkyy #000011 värissä riippumatta käyttämästäsi väriprofiilista.

Niin, voit kokeilla näyttääkö tämä erilaiselta:
http://grez.info/putka/phph/lista.htm

Poistin siis vain tuosta logosta väriprofiilimäärityksen (joka oli sRGB). Kokokin pieneni samalla muutaman tavun.

Torgo [01.10.2009 09:29:03]

#

Grez kirjoitti:

Olettaisin että se ei ryssi mitään, vaan näyttösi on jossain muussa profiilissa kuin sRGB (jolloin sRGB:n #000011 on sinun näytölläsi jotain muuta). Taustavärissä taas ei ole profiilia, joten se näkyy #000011 värissä riippumatta käyttämästäsi väriprofiilista.

No jos se ff ei ryssi mitään sen profiilin, niin millä selittyy että se on ainoa ohjelma joka näyttää tuon väärin? IE, Safari, Gimp ja Windows Picture & Fax Viewer näyttävät sen oikeanlaisena. Ainakin Safarissa ja Gimpissä on varmasti värihallinta mukana, joten eivät ne vain voi hylätäkään sitä profiilia.

Jos nyt olen yhtään noista väriprofiileista perillä, niin sillä ei pitäisi olla merkitystä missä väriprofiilissa näyttö on. Jos kuvassa on sRGB profiili ja näytössä mikä tahansa ICC profiili, niin kuvalle ajetaan muunnos siten että värien pitäisi vastata toisiaan. Jos puolestaan molemmissa on sRGB profiili, niin kuva heitetään näytölle ilman mitään muunnosta.

Jollain tapaa se kyllä tuosta profiilista on kiinni, mutta ei nyt mene minun jakeluun että miten. Kokeilin kahdella eri monitorilla ja muutamalla eri näyttöprofiililla ja joka kerta sama tulos: ff:llä logo on erivärinen ja muilla samanvärinen. En nyt keksi kuin kaksi mahdollista selitystä: ff värimuunnos kusee tai sitten ff on ainoa jossa se toimii oikein ja kaikissa kokeilemissani näytön profiileissa on jotain vikaa. Sanokaas nyt joku viisaampi jos osaatte neuvoa miten saisin tuon näkymään oikein myös profiilin kanssa?

Grez kirjoitti:

Niin, voit kokeilla näyttääkö tämä erilaiselta:
http://grez.info/putka/phph/lista.htm

Poistin siis vain tuosta logosta väriprofiilimäärityksen (joka oli sRGB). Kokokin pieneni samalla muutaman tavun.

Juu, toimii. Näistä logoista yms. voisi muutenkin poistaa väriprofiilit. Ajatus niissä kuitenkin on että ne sulautuvat elementteihin, eikä se että ne näyttäisivät täsmälleen samalta jokaisella monitorilla.

Metabolix [01.10.2009 12:27:14]

#

Hassua, että modernitkin selaimet toimivat päin honkia, kun CSS:n värien pitäisi olla sRGB-värejä. On aivan naurettavaa, että tällainen ongelma edes on kehitetty: nettisivuilla hyvin suuri osa kuvista halutaan upottaa taustaan, ja näin siitä on tullut peruskäyttäjille erittäin hankalaa.

Täytyy täst'edes käsitellä kaikki sivujen ulkoasuun liittyvät kuvat sopivilla ohjelmilla (jpegtran ja crushpng) niin, ettei niissä vahingossakaan ole kuin "tavallista" kuvadataa. Päivitetyt versiot PHP-haasteen kuvista ja Ohjelmointiputkan logosta on jo lähetetty Antille.

Grez [01.10.2009 13:32:45]

#

Torgo kirjoitti:

Jos nyt olen yhtään noista väriprofiileista perillä, niin sillä ei pitäisi olla merkitystä missä väriprofiilissa näyttö on. Jos kuvassa on sRGB profiili ja näytössä mikä tahansa ICC profiili, niin kuvalle ajetaan muunnos siten että värien pitäisi vastata toisiaan. Jos puolestaan molemmissa on sRGB profiili, niin kuva heitetään näytölle ilman mitään muunnosta.

No ongelmahan on siinä, kun siellä CSS:ssä ei käytännössä ole mitään väriprofiilia (olen mielestäni yrittänyt tätä vääntää rautalangasta aika monta viestillistä), eli siis selaimet ei profiloi niitä mitenkään. Eli voit ajatella sitä niin, että on kuva, jossa on väri #000011 avaruudessa sRGB ja sitten tausta, jossa on väri #000011 avaruudessa TorgonNäytönHienoProfiili. Kun tuo sRGB:n #000011 muunnetaan avaruutta TorgonNäytönHienoProfiili vastaavaksi, niin siitä tulee #050018.

Torgo kirjoitti:

Sanokaas nyt joku viisaampi jos osaatte neuvoa miten saisin tuon näkymään oikein myös profiilin kanssa?

No tuossahan se on alla kerrottuna:

Torgo kirjoitti:

Grez kirjoitti:

Niin, voit kokeilla näyttääkö tämä erilaiselta:
http://grez.info/putka/phph/lista.htm

Poistin siis vain tuosta logosta väriprofiilimäärityksen (joka oli sRGB). Kokokin pieneni samalla muutaman tavun.

Juu, toimii. Näistä logoista yms. voisi muutenkin poistaa väriprofiilit. Ajatus niissä kuitenkin on että ne sulautuvat elementteihin, eikä se että ne näyttäisivät täsmälleen samalta jokaisella monitorilla.

Ja sitten veilä Metabolixin viestiin..

Metabolix kirjoitti:

Hassua, että modernitkin selaimet toimivat päin honkia, kun CSS:n värien pitäisi olla sRGB-värejä. On aivan naurettavaa, että tällainen ongelma edes on kehitetty: nettisivuilla hyvin suuri osa kuvista halutaan upottaa taustaan, ja näin siitä on tullut peruskäyttäjille erittäin hankalaa.

Joo, toisaalta nestistä voi lukea myös muiden kokemuksia:

lainaus:

sRGB in the CSS and PNG Specifications

According to the CSS2 specification, the CSS color values refer to the sRGB color space. In practice, however, all browsers except Mac IE 5 with ColorSync enabled (disabled by default) seem to just treat the CSS color values as values in whatever color space the system color space happens to be. Still, it would be reasonable to expect the colors of an sRGB-labeled PNG image to be treated consistently with CSS colors.

Again, it just doesn’t work that way in practice.

Ja lisätään vielä, että olen kuitenkin optimisti. Tuskin menee sataakaan vuotta että väriprofiloinnit nettiselaimissa saadaan toimimaan järkevästi.

Torgo [01.10.2009 14:38:23]

#

Grez kirjoitti:

No ongelmahan on siinä, kun siellä CSS:ssä ei käytännössä ole mitään väriprofiilia (olen mielestäni yrittänyt tätä vääntää rautalangasta aika monta viestillistä), eli siis selaimet ei profiloi niitä mitenkään. Eli voit ajatella sitä niin, että on kuva, jossa on väri #000011 avaruudessa sRGB ja sitten tausta, jossa on väri #000011 avaruudessa TorgonNäytönHienoProfiili. Kun tuo sRGB:n #000011 muunnetaan avaruutta TorgonNäytönHienoProfiili vastaavaksi, niin siitä tulee #050018.

Ei minulla tuon muunnoksen tajuamisessa ole ongelmaa. Se kysymys mikä minulla on että miksi ainoastaan ff:lla siitä tulee #050018 ja kaikilla muilla se on #000011. Olen mielestäni rautalangasta yrittänyt vääntää kysymystäni, eli minkä takia ff tekee värimuunnoksen eri tavalla kuin muut värihallintaa tukevat ohjelmat? Muunnoksen sRGB:stä TorgonNäytönHienoProfiiliin (joka btw. on sRGB Color Space Profile, eli ei pitäisi olla tarvetta muunnokselle) pitäisi kuitenkin mennä kaikilla muunnosta tukevilla ohjelmilla samalla tavalla.

CSS:n kaikki elementit pitäisi olla sRGB väriavaruudessa. Paitsi kuvat joihin on erikseen upotettu jokin muu väriprofiili. Siis myös kuvat joissa ei ole mitään väriprofiilia, pitäisi CSS:ssä käsitellä sRGB avaruudessa. Eli taustan ja #000011 pitäisi olla samassa väriavaruudesta siitä huolimatta, että kuvaan on erikseen määritetty sRGB profiili ja muunnoksen pitäisi mennä ihan samalla tavalla. Ilmeisesti selaimien tuki väriavaruuksille vain on kovin horjuvaa. Kaikilla muilla selaimilla + kuvaohjelmilla tuo väriarvo siis on #000011 (ellen sitä jo riittävän moneen kertaan maininnut).

Grez kirjoitti:

Torgo kirjoitti:

Sanokaas nyt joku viisaampi jos osaatte neuvoa miten saisin tuon näkymään oikein myös profiilin kanssa?

No tuossahan se on alla kerrottuna:

Grez kirjoitti:

Niin, voit kokeilla näyttääkö tämä erilaiselta:
http://grez.info/putka/phph/lista.htm

Poistin siis vain tuosta logosta väriprofiilimäärityksen (joka oli sRGB).

Se että profiilin poistaa ei ole sama asia kuin saada värit näkymään oikein profiilin kanssa.

Grez [01.10.2009 14:44:38]

#

No jos kerran näyttösi on sRGB gammalla 2.2 niin sittenhän periaatteessa Firefoxinkaan ei pitäisi sitä muuttaa mitenkään. Mutta vaikeaa kieltämättä sanoa miksi se sitten sinulla sitä muuttaa, varsinkin kun omalla FF 3.5.3:lla ei ole vastaavaa efektiä. Ehkä sinulla on jotenkin kummasti jokin ulkopuolinen ohjelman vääntänyt itsensä PNG-kuvien käsittelijäksi Firefoxiin. (En tiedä onko tuollainen oikeasti edes mahdollista)

lainaus:

CSS:n kaikki elementit pitäisi olla sRGB väriavaruudessa.

Mutta kuten on jo käynyt ilmi niin ne ei useimmiten ole vaan käytännössä kaikilla selaimilla ovat siinä väriavaruudessa, mikä näytöllä on.

Metabolix [01.10.2009 14:56:25]

#

Fx:n kyseiset asetukset löytyvät about:config-sivulta avaimella gfx.color_management. Oletuksena siis display_profile = "" (järjestelmän oletusprofiili), mode = 2, rendering_intent = 0. Voit kokeilla, mitä moden vaihtaminen (1 tai 0) tekee. Itse en ole näihin perehtynyt.

Torgo [01.10.2009 16:56:06]

#

Grez kirjoitti:

Ehkä sinulla on jotenkin kummasti jokin ulkopuolinen ohjelman vääntänyt itsensä PNG-kuvien käsittelijäksi Firefoxiin. (En tiedä onko tuollainen oikeasti edes mahdollista)

Onhan se mahdollista. Quictime siellä näyttäisi olevan png:tä käpistelemässä. Mutta ongelma ratkesi viimein. Nähtävästi ff (tai Quicktime tai mikä sen muunnoksen tekeekään) ei käyttänyt tuota srgb profiilia, vaikka se oli aktiivisena (juu tarkistin. current profile: srgb color profile), vaan se käytti edelleen default profiilia. Vasta kun vaihdoin näytön asetuksista srgb defaultiksi, ff:kin ymmärsi alkaa sitä käyttämään.

On tää värien kanssa pelaaminen kyllä tehty helpoksi ja yksinkertaiseksi... ;p

Antti Laaksonen [01.10.2009 20:30:39]

#

Metabolix kirjoitti:

Päivitetyt versiot PHP-haasteen kuvista ja Ohjelmointiputkan logosta on jo lähetetty Antille.

Ja nyt uudet kuvat ovat käytössä.

walkout_ [02.10.2009 02:57:40]

#

Grez kirjoitti:

Olisiko mitään ideoita miten tästä voisi tehdä mielekkäämmän sellaisille joilla PHP on jo kohtuullisesti hanskassa?

Jotenkin ei nappaisi tahkoa noita helppoja paria tuntia että pääsisi sinne loppupään mahdollisesti mielenkiintoisiin ja haastaviin tehtäviin. Katsoin tehtävän 53 (joka on siis numeron mukaan vaikein minkä näkee suorittamatta pienempiä ensin) ja sekin oli mielestäni ihan kohtuuttoman helppo. (varsinkin kun koodin tunkemisessa palvelimelle ja sen linkin työntämisessä tuohon systeemiin menee enemmän aikaa kuin itse koodin kirjoittamisessa, niin se alkaa turhauttaa)

Mua ainakin muutamassa ekassa otti pattiin se että kun Dreamweaverin käynnistys kestää niin kauan ja notebadillä koodaus on tylsää ja hankalaa kun on pelkää mustaa valkoisella sitten vielä ne pitää siirtää palvelimelle.
Voisi olla mielekkäämpää minulle jos minulla olisi X-työpöytä palvelimella niin voisi editoida suoraan palvelimella vaikka Eclipse:llä.. mutta tämä ei liity kysymykseen.
Se siellä on nyt ainakin hyvä että linkit tallentuu eikä tarvii joka kerta copy/pasteta selaimesta kun ei jaksa kirjottaa manuaalisesti kun se homma ei ekasta voi 100 % varmuudella oikein.

walkout_ [02.10.2009 19:46:32]

#

Ekassa tutustumis tehtävässä väärin ymmärsin koko jutun ja luulin että hommaa uploadattaan palvelimelle. Tein turhaa työtä tehden lomakeen johon ne hommat syötetään. Mut ehkä en lukenut kaikkea ja tajunnut vaan tms.

Triskal [03.10.2009 19:02:46]

#

Itku meinaa tulla tehtävän 22, taikaneliön, kanssa.

8|9|8|9|8|9|8|9|9|8|9|8|9|8|9|8

Miksi tuosta syötteestä ei tule kelvollista taikaneliötä? Piirsin sen paperillekin itselleni ja joka suuntaan, ylös, alas, ristiin, rastiin, saan luvuista 34. Olen yrittänyt ratkaista tehtävää jo kolme tuntia.

tsuriga [03.10.2009 19:13:34]

#

Taikaneliössä on yleensä käytössä kaikki kokonaisluvut väliltä [1,n²].

Metabolix [03.10.2009 19:48:47]

#

Kuten tehtävänannossakin lukee, "-- sisältääkö se luvut 1–16 --".

Triskal [03.10.2009 20:19:08]

#

Luulin, että se tarkoittaa väliltä 1-n^2, ja sekä 8, että 9 ovat siltä väliltä. Katsotaan joko se nyt sitten ratkeaisi.

EDIT: Ratkesi. Kiitoksia - nää jutut tuntuu kaatuvan mulla aina huolimattomuuteen tai huonoon lukutaitoon.

Antti Laaksonen [03.10.2009 20:30:10]

#

Selvensin tehtävän 22 tehtävänantoa sanalla "kaikki".

walkout_ [05.10.2009 10:09:08]

#

Hei, joidenkin tehtävien kuvaukset ei mennyt ekalla kerralla jakeluun. Jouduin sitten päätelemään virheiden perusteella.

Le-Co-Las [12.10.2009 07:48:27]

#

Loistava idea ja toteutus tuo php opas. Kiitos vaan tekijöilleen, en ole vielä kun tarkastannu ekan tehtävän, mutta sanattomaksi vetää......

tonza [24.10.2009 01:36:25]

#

Hauskaa ajanvietettä, hienoa työtä kyllä :)

tpohjis [14.11.2009 13:10:27]

#

hieno homma tämä projekti, kaikki kiitos ja kunnia tälle.

muutoinkin ohjelmointiputka on ollut se paikka josta olen saanut avun php alkeisiin.

niin ja kymmenen pistettä ja ranskaisen matemaatikon merkki, borland TP asusta.

Tuurijuoppo [30.11.2009 16:02:20]

#

Moikka, missähän on vika kun tehtävässä nr. 15 ei mene viimeinen testi läpi? Lokaali WAMP server antaa tulokseksi 1 mutta PHP haasteen tarkistus 0.
Viimeisen testin syöte: pj=1&a=0&b=0&c=1

<?php
$tulos =0;
$p = 0;
$v = 0;
foreach($_REQUEST as $vote){
	if($vote ==1){
		$p++;
	} else {
		$v++;
		}
}

if(($p==$v && $_REQUEST['pj'] == 1) || ($p > $v)) $tulos = 1;
echo $tulos;
?>

Antti Laaksonen [30.11.2009 19:37:55]

#

PHP-haaste ilmoittaa $_REQUEST-taulukossa tehtävän muuttujien lisäksi muuttujan id, joka kertoo tehtävän numeron. Taulukon sisältö on siis tässä tapauksessa seuraava:

Array
(
    [pj] => 1
    [a] => 0
    [b] => 0
    [c] => 1
    [id] => 15
)

Koko $_REQUEST-taulukon läpikäynti ei siis aina toimi toivotulla tavalla.

Juhko [26.12.2009 18:44:06]

#

Pysyyhän php-haaste auki vaikka tuleekin muita kilpailuita? Niitä ei kattokaas jaksa tehdä koko ajan, vaan aina vähän ajan välein pari tehtävää.

Metabolix [26.12.2009 19:43:26]

#

Kyllä, PHP-haaste pysyy auki muista tapahtumista riippumatta. Sehän ei ole kilpailu vaan joukko harjoitustehtäviä. :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta