CAPCHA za programerje :D
 
Alkimisticus 15. jul 2008 20:05:20 Pridružen od:
22. apr 2008
170 objav
21 24 2
#1

  1. Napiši RegExp izraz, ki v vrne pravilno za naslednje vnešene vrednosti:

    "3.432.432,45 €" , "54.543 €" , "543,8 €"


  2. Napiši SQL stavek, ki vrne poleg stolpcev(Ime,Priimek) iz tabele Osebe še stolpec Zaporedna_Stevilka, ki vsebuje zaporedno številko vrstice rezultata.


  3. Napiši vrednost izraza 100! (klicaj je matematični simbol za je faktorelo ali fakulteto)




Zanima me če se vam zdijo prelahka ali pretežka . Če so dovolj razumljivo napisana. Imate kakšne boljše predloge. Vprašanja naj ne bodo vezana na specifičen programski jezik ali framework.


všeč(0) ni všeč(0) spam(0)
 
Alkimisticus 16. jul 2008 10:27:35 Pridružen od:
22. apr 2008
170 objav
21 24 2
#2

Popravki




  1. Odgovor je preenostaven ".*" moral bi napisati "ki vrne pravilno samo za naslednje primere" .

  2. Stvar bi moral narediti malo bolj realno. Tabela tekmovalci. Stolpci (Id,Točke,Ime,Priimek).

  3. Zahteva se natačna vrednost.



Pojasnila



Prvo vprašanje preverja znanje RegExp, kar se mi zdi da je sedaj že skoraj obvezno znanje pri programiranju v skoraj vseh jezikih. Drugo vprašanje je mogoče malo težje, sploh ker sem jaz preveč šlampasto napisal. Gre se za enumeracijo, ki pride prav pri rangiranju. Tretje pa je enostaven problem računanja z velikimi števili.



Vprašanja niso toliko namenjena za dejansko CAPCHA-o (bi jih moralo biti veliko več) ampak bolj za preverjanje nekega malo naprednejšega znanja programiranja, na primer pri razgovoru za službo.


všeč(0) ni všeč(0) spam(0)
 
Lukaslo 19. jul 2008 19:18:18 Pridružen od:
30. avg 2006
601 objav
15 0 1
#3

Bom otvoru s tretjo :)

pr tretji uporabmo stirlinga, da ne skurmo procesorja (z rekurzijo ali for stavkom) :P potem pa zaokrožmo na 0 decimalk ;)



sicer takole:


<?
function fakulteta($x){
if($x==1)
{
return 1;
}
else
{
return $x * fakulteta($x-1);
}
}
$rezultat=fakulteta(100);
echo $rezultat;
?>
všeč(0) ni všeč(0) spam(0)
 
Alkimisticus 22. jul 2008 15:51:02 Pridružen od:
22. apr 2008
170 objav
21 24 2
#4

Vprašanja sem dal tudi na php-si.com

http://www.php-si.com/?lokacija=forumprikazitemo&forum=3&tema=6890&stran=1

In so jih še isti dan tudi rešili :D



Tam boš tudi videl zakaj tvoja funkcija ni vredu in kje tiči dejanski problem.


všeč(0) ni všeč(0) spam(0)
 
Vini 22. jul 2008 16:11:10 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#5

Alkimisticus, tisti, ki je prvi napisal odgovor na drugo vprasanje, ima kar prav. Podal ti je najhitrejso in najelegantnejso resitev (sicer res le za MySQL), tista, ki si jo ti napisal, je noro storasta in povrh vsega se hudo pocasna.



v Oraclu se zadeva resi se precej bolj elegantno, saj ima Oracle prav v ta namen rezervirano besedo ROWNUM, in bi bil query res precej enostaven:


SELECT Id, Tocke, Ime, Priimek, ROWNUM AS Zaporedna_Stevilka
FROM Tekmovalci ORDER BY Tocke DESC;

V PostgreSQL bi to resil nekako takole:


CREATE TEMP SEQUENCE rownum;
SELECT Id, Tocke, Ime, Priimek, nextval('rownum') AS Zaporedna_Stevilka
FROM Tekmovalci ORDER BY Tocke DESC;
všeč(0) ni všeč(0) spam(0)
 
Alkimisticus 22. jul 2008 16:23:29 Pridružen od:
22. apr 2008
170 objav
21 24 2
#6

Priznam, da je skoraj vsaka druga rešitev boljša in ima manj pomankljivosti, vendar pa ni tako zanimiva.


všeč(0) ni všeč(0) spam(0)
 
Lukaslo 22. jul 2008 16:32:18 Pridružen od:
30. avg 2006
601 objav
15 0 1
#7

Alkimisticus:

Vprašanja sem dal tudi na php-si.com

http://www.php-si.com/?lokacija=forumprikazitemo&forum=3&tema=6890&stran=1

In so jih še isti dan tudi rešili :D



Tam boš tudi videl zakaj tvoja funkcija ni vredu in kje tiči dejanski problem.




Sej osebno bi uporabu stirlinga pa zaokrožu na 0 decimalk, kar bi blo najhitrejš, najboljš... sam bi blo še zmer problem zarad velikih številk rešit...


všeč(0) ni všeč(0) spam(0)
 
Vini 22. jul 2008 22:24:33 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#8

Malo sem prehitro napisal tisto o Oraclu :) V bistvu zadeva crkne, takoj ko uporabis ORDER BY po polju, ki ni primary key oziroma primarni sort. Pravilen primer bi bil takle:


SELECT Id, Tocke, Ime, Priimek, ROWNUM AS Zaporedna_Stevilka
FROM (SELECT Id, Tocke, Ime, Priimek FROM Tekmovalci ORDER BY Tocke DESC);

Malo manj elegantno, vem :)



Rahlo prehitro sem tudi izjavil tisti "prav v ta namen", ni res, zadeva se uporablja vecinoma v povsem druge namene, Oracle namrec ne pozna izraza LIMIT, pa se da zadevo blazno elegantno resit prav z ROWNUM...



Ampak zdaj sem ze rahlo zasel s teme :P


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se