Jump to content

ostatní Zadanie pre juniora PHP. Feedback


Deleted User

Recommended Posts

Ako úprimne asi nie som ani junior v programovaní keď pozerám na to zadanie. Prečítal som to 10x a rozmýšľam ako by sa to len dalo vôbec spraviť.

No po 20 minútach som asi na to prišiel,
v podstate zadefinuješ najnižšiu hodnotu na akých súradniciach to je a potom aby sa to rozvetvovalo do okolitých strán kde je najnižšia hodnota....
Ak sa mýlim tak ma oprav prosím :D

Edited by XpresS
Link to comment
Share on other sites

  • Globální moderátor

asi jako chápu co se tam chce, ale teda nejsem uplně juniorní vývojář. Každopádně dát tohle juniornímu vývojáři, tak nikdy podle mě žádnýho nenajdou. Nejde o to, že by to bylo složitý, je to víc na přemýšlení nad řešením a jestli je cíl zjistit, zda člověk dokáže vymyslet postup, tak jsou pro to dobré úkoly mimo programování. Tady člověk dokáže vymyslet řešení, ale syntaxe by byla horší podle mě. Nehledě na to, že i jako seniorní vývojář bych se na to vykašlal :D 

  • Líbí se mi to! (+1) 3
Link to comment
Share on other sites

S javascriptom nerobím, mám niečo málo cez rok komerčnej praxe v C# (považujem sa za juniora) a neprišlo mi to príliš zložité - do hodiny som to zbúchal. Dešifrovanie zadania som zvládol bez väčších problémov, ale viem si predstaviť, že Češi by z toho neboli nadšení... Najväčšia bolesť bolo asi dodržiavanie názvov funkcií a premenných v slovenčine.
Máš k tomu nejaké referenčné riešenie? Celkom by ma zaujímalo aj to riešenie od ChatGPT.
Ja som vypracoval toto:

Spoiler
function rieka(x, y, pole) {  
    var vystup = [];
    for (let i = 0; i < pole.length; ++i) {
        let arr = [];
        for (let j = 0; j < pole[i].length; ++j) {
            arr.push(0);
        }
        vystup.push(arr);
    }
    
    rekurzivnaRieka(x, y, pole, vystup);
   
    printArray(vystup);
}

function rekurzivnaRieka(x, y, vstup, vystup) {
    //console.log(`rekurzivnaRieka(${x}, ${y})`);
    vystup[x][y] = 1;
    
    const smery = [
        [0, 1],
        [0, -1],
        [1, 1],
        [1, 0],
        [1, -1],
        [-1, 1],
        [-1, 0],
        [-1, -1]
    ];
    
    const validneSmery = smery.filter(smer => {
        const [xSmer, ySmer] = smer;
        const noveX = x + xSmer;
        if (noveX < 0 || noveX >= vstup.length)
            return false;
            
        const noveY = y + ySmer;
        if (noveY < 0 || noveY >= vstup[noveX].length)
            return false;
        
        return true;
    })
    
    let minimalnaVyska = vstup[x][y];
    for (const [xSmer, ySmer] of validneSmery) {
        const vyska = vstup[x + xSmer][y + ySmer];
        if (vyska < minimalnaVyska) {
            minimalnaVyska = vyska;
        }
    }
    
    //console.log(`minimalna vyska: ${minimalnaVyska}`);
    
    for (const [xSmer, ySmer] of validneSmery) { 
        const noveX = x + xSmer;
        const noveY = y + ySmer;
        if (vstup[noveX][noveY] <= minimalnaVyska 
            && vystup[noveX][noveY] === 0) {
            rekurzivnaRieka(noveX, noveY, vstup, vystup);
        }
    }

    return vystup;
}

 

Každopádne cool obrázky ako odmena za vypracovanie určite potešili

image.png

Edited by DuFF
  • Paráda! (+1) 1
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Pro juniora je to asi moc abstraktní, ale je tam taky otázka, co vlastně bude ve výsledku vyvíjet, jestli bude pracovat na vyzobrazování řeky na mapě, tak asi OK, ale jinak by to možná chtělo ověřit reálné znalosti či schopnosti v provozu. Mimochodem, function rieka pobavilo :D 

Edited by lvalenta
  • Haha! 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...