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

  • Креатор на темата Креатор на темата LepiDzoni
  • Време на започнување Време на започнување

LepiDzoni

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

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

2BN1mFc.jpg
 
Дај додека сме затворени дома да се размрдаме ментално со најразлицни задачи и загатки. Постирајте, решавајте. Јазик? Кој сакате.
Решенијата во [CОDЕ][/CОDЕ] формат плс.
Автоматски споено мислење:

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

2BN1mFc.jpg

Ова е класичен 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))
 
Ова е класичен 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 :)
 
Ова е класичен 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))
Уживај дека волку лесно даваат. ;)
 
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));

YMzlCP0.png
 
мала помош
треба да му напишам на внук ми 7 одд програма во small basic
задачите се под 1.периметар на круг, под 2. плоштина на круг
 
мала помош
треба да му напишам на внук ми 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)

Иначе, вака нема да научи ништо внукот. Мора да седне и да почне да размислува.
 
Последно уредено:
Уживај дека волку лесно даваат. ;)
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]]
 
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
 
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
 
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
 
мала помош
треба да му напишам на внук ми 7 одд програма во small basic
задачите се под 1.периметар на круг, под 2. плоштина на круг
не сум во тек поодамна ,18+ години, а внукот е 5одд, ама може ќе треба да се спремам. Каков е тој small basic?
имам стар ПЦ кај што чував мои доста сложени тенички QBasic програми, ама поодамна не работи ништо без компајлери, мислам нити компајлираните ехе програмите не работаат во виндовс...не верувам дека работаат во школите со ДОС ??
бај тхе веј, се сеќавам дека уште пред 15? години, овластениот инспектор на Мајкрософт за Хрватска контролирал по фабрики компјутерите и им забранувал на тие ПЦ што имаат лиценцирани Виндовси да користат виндовс некомпатибилни програми
Можеби за најмали деца е добро да се користи, АКО постои такво нешто, Таблет со можност за користење на Бејзици ?????
 
Здраво, ми треба вашата помош, се разбира доколку некој е расположен и би сакал да помогне. Сакам да имплементирам CI/CD Pipeline прекѕ Github Actions, кое што ќе ми прави automatic deployment на demo React app, инсталирана на Apache server на Linux виртуелна машина.

Оваа скрипта успеав да ја склопам засега, но ми дава проблем кај drone-ssh. Дали некој би знаел како можам да го решам ова? На placeholders за username и IP ставам соодветно податоци од виртуелката.


name: Deploy to Apache

on:
push:
branches:
- main

jobs:
deploy:
runs-on: ubuntu-latest
defaults:
run:
shell: bash -eux {0}

steps:
- name: Use Node.js 16
uses: actions/setup-node@v2
with:
node-version: '16'

- name: Checkout repository
uses: actions/checkout@v2

- name: Install SSH
run: sudo apt-get install openssh-client -y

- name: Deploy to Apache
uses: appleboy/ssh-action@master
with:
host: IP address
username: username
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
git pull origin main
npm install
npm run build
sudo cp -r build/* /var/www/html/
 
кое што ќе ми прави automatic deployment на demo React app, инсталирана на Apache server на Linux виртуелна машина.
Прво што ми паѓа на памет, можеби не e ставен јавниот клуч во ~/.ssh/authorized_keys на серверот, за да дозволи логирање преку ssh?
 

Kajgana Shop

Back
На врв Bottom