Програмски загатки

LepiDzoni

Profesionalen ulichen cigan
Член од
25 јули 2014
Мислења
1.013
Поени од реакции
2.142
Дај додека сме затворени дома да се размрдаме ментално со најразлицни задачи и загатки. Постирајте, решавајте. Јазик? Кој сакате.
Решенијата во [CОDЕ][/CОDЕ] формат плс.
Автоматски споено мислење:

Почнуваме со класика

 

DonExo

Apex
Член од
1 ноември 2012
Мислења
421
Поени од реакции
245
Дај додека сме затворени дома да се размрдаме ментално со најразлицни задачи и загатки. Постирајте, решавајте. Јазик? Кој сакате.
Решенијата во [CОDЕ][/CОDЕ] формат плс.
Автоматски споено мислење:

Почнуваме со класика

Ова е класичен entry example кој го дават во многу фирми за да ги набрзина филтрираат добар дел од кандидатите.

Секој што има основно програмерско познавање (if, else, elif etc..) би требало да може да ја реше за брзо време.

Еве го моете решение во Python, за оние што ги мрзи да мислат :)

Python:
def fizzbuzz(n):

    if n % 3 == 0 and n % 5 == 0:
        return 'FizzBuzz'
    elif n % 3 == 0:
        return 'Fizz'
    elif n % 5 == 0:
        return 'Buzz'
    else:
        return str(n)

print "\n".join(fizzbuzz(n) for n in range(1, 50))
 

LepiDzoni

Profesionalen ulichen cigan
Член од
25 јули 2014
Мислења
1.013
Поени од реакции
2.142
Ова е класичен entry example кој го дават во многу фирми за да ги набрзина филтрираат добар дел од кандидатите.

Секој што има основно програмерско познавање (if, else, elif etc..) би требало да може да ја реше за брзо време.

Еве го моете решение во Python, за оние што ги мрзи да мислат :)

Python:
def fizzbuzz(n):

    if n % 3 == 0 and n % 5 == 0:
        return 'FizzBuzz'
    elif n % 3 == 0:
        return 'Fizz'
    elif n % 5 == 0:
        return 'Buzz'
    else:
        return str(n)

print "\n".join(fizzbuzz(n) for n in range(1, 50))
Okej, ova e eden pristap. Aj sega probaj so dve proverki namesto so tri :)
 
Член од
9 февруари 2016
Мислења
347
Поени од реакции
603
Ова е класичен entry example кој го дават во многу фирми за да ги набрзина филтрираат добар дел од кандидатите.

Секој што има основно програмерско познавање (if, else, elif etc..) би требало да може да ја реше за брзо време.

Еве го моете решение во Python, за оние што ги мрзи да мислат :)

Python:
def fizzbuzz(n):

    if n % 3 == 0 and n % 5 == 0:
        return 'FizzBuzz'
    elif n % 3 == 0:
        return 'Fizz'
    elif n % 5 == 0:
        return 'Buzz'
    else:
        return str(n)

print "\n".join(fizzbuzz(n) for n in range(1, 50))
Уживај дека волку лесно даваат. ;)
 

Con Artist

the man with the key
Член од
1 мај 2012
Мислења
4.404
Поени од реакции
15.541
PHP:
for ($i = 1; $s = '', $i <= 16; $i++) {
    if ($i % 3 == 0) $s .= 'Fizz';
    if ($i % 5 == 0) $s .= 'Buzz';
    echo $s ? $s : $i, "\n";
}
PHP:
function fizzBuzz($start, $end, $data)
{
    for ($i = $start; $s = '', $i <= $end; $i++) {
        foreach ($data as $broj => $zbor) {
            if ($i % $broj == 0) {
                $s .= $zbor;
            }
        }
        $result[$i] = $s ? $s : $i;
    }
    return $result;
}

$data = [3 => 'Fizz', 5 => 'Buzz'];
print_r(fizzBuzz(1, 16, $data));
 
Член од
19 февруари 2016
Мислења
380
Поени од реакции
77
мала помош
треба да му напишам на внук ми 7 одд програма во small basic
задачите се под 1.периметар на круг, под 2. плоштина на круг
 

Anon

/b/ House /b/
Член од
13 декември 2007
Мислења
14.985
Поени од реакции
24.043
мала помош
треба да му напишам на внук ми 7 одд програма во small basic
задачите се под 1.периметар на круг, под 2. плоштина на круг
Еден код за двете задачи
Код:
TextWindow.WriteLine("Vnesi go radiusot na krugot")
radius = TextWindow.Read()
perimetar = radius*2*3.14
plostina = radius*radius*3.14
TextWindow.WriteLine("Perimetarot e " + perimetar)
TextWindow.WriteLine("Plostinata e " + plostina)
Иначе, вака нема да научи ништо внукот. Мора да седне и да почне да размислува.
 
Последно уредено:

LepiDzoni

Profesionalen ulichen cigan
Член од
25 јули 2014
Мислења
1.013
Поени од реакции
2.142
Уживај дека волку лесно даваат. ;)
Veruvam deka toj sto ti go dava prasanjevo na intervju ne sumnja vo toa dali ke uspees da razvies resenie, ama kakvo. ;)
Sto se odnesuva do mene, sekoj sto ke ja implementira sekoja proverka dvapati vekje padnal na intervjuto.

Naredno nesto sto moze da ti go pobaraat otkako ke go postavish prvoto resenie e da dodadesh dopolnitelni pravila, a posle toa da smenish vekje postoecki pravila ili redosled na aplikacija.

Resenieto na @DonExo na primer vo toj pogled, ne skalira bash najdobro.
Toa sto licno bi sakal da go vidam e nesto abstrahirano kako resenieto na @Con Artist koe sto bi dobilo sovrseni ocenki od mene (iako licno bi koristel reduce() namesto forEach(), ali toa e pred se prasanje na vkus.)
Автоматски споено мислење:

Okej da batalime intervjua temava e pred se za ladenje. Nareden zadatak:

Da se razvie funckija matrix, sto ke zeme integer N i ke vrati NxN spiralna matrica.

Код:
matrix(2)
    [[1, 2],
    [4, 3]]

matrix(3)
    [[1, 2, 3],
    [8, 9, 4],
    [7, 6, 5]]
 
Член од
26 јануари 2009
Мислења
9.306
Поени од реакции
12.427
Veruvam deka toj sto ti go dava prasanjevo na intervju ne sumnja vo toa dali ke uspees da razvies resenie, ama kakvo. ;)
Sto se odnesuva do mene, sekoj sto ke ja implementira sekoja proverka dvapati vekje padnal na intervjuto.

Naredno nesto sto moze da ti go pobaraat otkako ke go postavish prvoto resenie e da dodadesh dopolnitelni pravila, a posle toa da smenish vekje postoecki pravila ili redosled na aplikacija.

Resenieto na @DonExo na primer vo toj pogled, ne skalira bash najdobro.
Toa sto licno bi sakal da go vidam e nesto abstrahirano kako resenieto na @Con Artist koe sto bi dobilo sovrseni ocenki od mene (iako licno bi koristel reduce() namesto forEach(), ali toa e pred se prasanje na vkus.)
Автоматски споено мислење:

Okej da batalime intervjua temava e pred se za ladenje. Nareden zadatak:

Da se razvie funckija matrix, sto ke zeme integer N i ke vrati NxN spiralna matrica.

Код:
matrix(2)
    [[1, 2],
    [4, 3]]

matrix(3)
    [[1, 2, 3],
    [8, 9, 4],
    [7, 6, 5]]

Вакви филмања без гугл тешко :)

https://medium.com/@aaron_lu1/javascript-solving-fizzbuzz-in-three-ways-e6f6d3e2faf2
 
Член од
21 март 2014
Мислења
449
Поени од реакции
305
Okej da batalime intervjua temava e pred se za ladenje. Nareden zadatak:

Da se razvie funckija matrix, sto ke zeme integer N i ke vrati NxN spiralna matrica.

Код:
matrix(2)
    [[1, 2],
    [4, 3]]

matrix(3)
    [[1, 2, 3],
    [8, 9, 4],
    [7, 6, 5]]
C++:
#include <bits/stdc++.h>

using namespace std;

int mat[1000][1000];
bool vis[1000][1000];
int n;
enum previous{left,right,bottom,top};
previous pr;
bool valid(int r,int c)
{
    if(r>=0 && r<n && c>=0 && c<n)
        return 1;
    return 0;
}
//{-1,0,1,2} map {l,r,t,b}
void rec(int r,int c,int step,int anc)
{
    if(!vis[r][c]){
    mat[r][c]=step;
    vis[r][c]=1;
    }
    if(valid(r,c+1) && !vis[r][c+1] && anc==0)// desno
    {
        if(!valid(r,c+2) || vis[r][c+2])
            rec(r,c+1,++step,2);
        else
        rec(r,c+1,++step,0);
    }
    if(valid(r+1,c) && !vis[r+1][c] && anc==2)//dole
    {
        if(!valid(r+2,c) || vis[r+2][c])
            rec(r+1,c,++step,-1);
        else
        rec(r+1,c,++step,2);
    }
    if(valid(r,c-1) && !vis[r][c-1] && anc==-1)//levo
    {
        if(!valid(r,c-2) || vis[r][c-2])
            rec(r,c-1,++step,1);
        else
        rec(r,c-1,++step,-1);
    }
    if(valid(r-1,c) && !vis[r-1][c] && anc==1)//gore
    {
        if(!valid(r-2,c) || vis[r-2][c])
            rec(r-1,c,++step,0);
        else
        rec(r-1,c,++step,1);
    }

}
int main()
{
    cin >> n;
    memset(vis,false,sizeof vis);
   rec(0,0,1,0);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<setw(3) <<mat[i][j] << " ";

        cout <<endl;
    }
}
//Ugly code
Ептен ми беше досадно во 3 часот вечерта :)
Challenge од мене:
За внесени координати на центар C(x,y) на кружница и радиус(r), да се отпечати во кој од квадрантите припаѓа кружницата(може да има делови во повеќе квадранти! :) )
GL HF
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.093
Поени од реакции
985
Challenge од мене:
За внесени координати на центар C(x,y) на кружница и радиус(r), да се отпечати во кој од квадрантите припаѓа кружницата(може да има делови во повеќе квадранти! :) )
GL HF
Императивно решение во Kotlin:
Код:
fun quadrantCheck(positionX: Int, positionY: Int, radius: Int): List<Int> {
    val rightPlane = positionX + radius > 0
    val leftPlane = positionX - radius < 0
    val topPlane = positionY + radius > 0
    val bottomPlane = positionY - radius < 0
    val quadrants = mutableListOf<Int>()
    if (rightPlane && topPlane) quadrants.add(1)
    if (topPlane && leftPlane) quadrants.add(2)
    if (leftPlane && bottomPlane) quadrants.add(3)
    if (bottomPlane && rightPlane) quadrants.add(4)
    return quadrants
}
Малце "покомплицирано" решение :D
Код:
enum class Quadrant(val number: Int, val intersectsWithCircle: (positionX: Int, positionY: Int, radius: Int) -> Boolean) {
    QUADRANT_1(1, { positionX, positionY, radius -> positionY + radius > 0 && positionX + radius > 0 }),
    QUADRANT_2(2, { positionX, positionY, radius -> positionY + radius > 0 && positionX - radius < 0 }),
    QUADRANT_3(3, { positionX, positionY, radius -> positionY - radius < 0 && positionX - radius < 0 }),
    QUADRANT_4(4, { positionX, positionY, radius -> positionY - radius < 0 && positionX + radius > 0 });
}

fun quadrantCheckCO(positionX: Int, positionY: Int, radius: Int): List<Int> =
    Quadrant.values()
        .filter { it.intersectsWithCircle(positionX, positionY, radius) }
        .map {it.number}
И main-ot за тестирање на двете функции:
Код:
fun main() {
    println(quadrantCheck(1, 1, 5))
    println(quadrantCheckCO(1, 1, 5))
    println(quadrantCheck(2, 2, 1))
    println(quadrantCheckCO(2, 2, 1))
    println(quadrantCheck(0, -2, 1))
    println(quadrantCheckCO(0, -2, 1))
}
Challenge од мене:
Да се напише функција за трансформација на стринг. Трансформацијата се прави така што треба да се додаде бројот на повторувања пред секој карактер. Да се испечати трансформираниот стринг.
На пример:
bbbcedd -> 3b1c1e2d
aaqqaaap -> 2a2q3a1p
 

Kajgana Shop

На врв Bottom