CodeCup.pl

Na joggerze Albiego znalazłem link do ciekawego serwisu CodeCup.pl, w którym można wziąć udział w turnieju kodowania w PHP. Co jakiś czas publikowane jest nowe zadanie. Od momentu publikacji, wraz z upływem czasu, aż do chwili rozwiązania go przez pierwszą osobę, rośnie punktowa stawka za przesłanie poprawnego kodu. Każda następna osoba, otrzymuje odpowiednio mniejszą liczbę punktów.

Dzisiaj udało mi się rozwiązać za pierwszym podejściem zadanie 15 (po ogłoszeniu wyników postaram się podzielić się moim kodem). Muszę przyznać, że

całkiem ciekawa wprawka w wymyślaniu algorytmów przydająca się jako odskocznia od monotonnego klepania serwisów www. Trochę mi tego brakowało ;). Zachęcam wszystkich programujących w PHP do udziału - zawsze ciekawsza rywalizacja jak będzie nas wiecej.

Spróbowałem też sił w pierwszym z 1 zadaniem treningowym. I tutaj zaliczyłem zonka. Moje rozwiązanie zostało uznane za niepoprawne. Kombinowałem, kombinowałem i w końcu się poddałem - zajrzałem do odpowiedzi. Jak się okazało, przykładowe rozwiązanie było prawie, że analogiczne, różniło się tylko w detalach. Jednak te detale spowodowały, że coś było nie tak. Zrobiłem jednak test polegający na porównaniu wyników dla wszystkich możliwych przypadków zwracanych przez wzorcowe rozwiązanie i moje. Wyniki zgadzały się z dokładnością do typu... Hmm, czyżby coś nie tak w danych testowych? Napisałem do admina przesyłając mu mój kod, zobaczymy co powie ;). Swoją drogą, to w tym serwisie brakuje mi jednej rzeczy przy zadaniach treningowych i rozwiązanych konkursowych. Są to właśnie testowe dane.

Kod testowy do pierwszego zadania treningowego poniżej. Jak ktoś ma jakieś uwagi, propozycje poprawek, itp. do tego kodu, to z przyjemnością poczytam. 'code1' to moja funkcja, 'code2' to gotowiec.

<?php

function code1($hours$minutes) {
    
$minutesAngle $minutes;
    
$hoursAngle = ($hours 12) * 30 + (int)($minutes 12) * 6;
    
$angle abs($minutesAngle $hoursAngle);
    if (
180 $angle) {
        
$angle 360 $angle;
    }
    return (float)
$angle;
}


function 
code2 ($godz$min)
{

if (
$godz>=12$godz=$godz-12;

$l_godz=$godz*5;
$l_min=$min;

$l_godz+=floor ($min/12);
$roznica=abs($l_godz-$l_min);
if (
$roznica>30$roznica=60-$roznica;

return (
$roznica*6);
}

for (
$h 0$h <= 23$h++) {
    for (
$m 0$m <= 59$m++) {
        
$angle1 code1($h$m);
        
$angle2 code2($h$m);
        
$ok $angle1 === $angle2 '[OK]' '[FAILED]';
        
var_dump($angle1);
        
var_dump($angle2);
        print 
"$h:$m - $angle1, $angle2 => $ok<br />";
    }
}
?>

Komentarze do wpisu "CodeCup.pl":

1.

MySZ napisał(a):
23 lutego 2008, 20:38:30

Faajne, dołączyłem do zawodników ;) Zadanie 15 rozwiązane ;)

2.

chester napisał(a):
23 lutego 2008, 22:58:27

Ciekawa stronka, też chciałem spróbować.. I pomimo moich testów wygląda, że mam dobrze napisane, a strona tego nie przyjmuje.
A głupio mi pisać do adminów, bo może rzeczywiście jednak mam błąd ;)

3.

Albi napisał(a):
24 lutego 2008, 00:06:28

No raczej jest błąd :>. U mnie przeszło bez problemu, więc innym też powinno :D Szukaj, ja zamiast mniejsze równe dałem równe i szukałem kruczka przez 30 minut ;)

4.

BTM napisał(a):
25 lutego 2008, 09:26:16

chester: pewnie masz jakiś błąd, mi też się wydawało że ok, aż mi Albi nie wpisał w ostatnim ‘abcd’ :P

5.

chester napisał(a):
25 lutego 2008, 09:41:19

@BTM: prorok jesteś czy co?
rzeczywiście na ‘abcd’ się wywala ;]

6.

btm napisał(a):
25 lutego 2008, 09:41:52

Zmień < na <= w for() jak robisz tak samo jak ja :P

7.

Albi napisał(a):
13 marca 2008, 16:53:27

Heheh, fajnie tak popatrzeć na skrypty dwóch różnych programistów do jednego zadania. Naprawdę ciekawie to wygląda i pokazuje, że większość myśli identycznie :D

Dodaj komentarz:

Textile Lite włączony ( szczegółowy opis znaczników ):
*strong* | # lista numerowana | * lista wypunktowana | _em_ | __italic__ | "link":http:// | bq. cytat.