Skip to content
  • Kompüter elmi

    Kompüter elmləri əsaslı müzakirə kateqoriyası

    2 2
    2 Topics
    2 Posts
    codexC
    Bu nümunə obyektlərdən (objects) və ya dəstlərdən (sets) istifadə edərək dəyərlərin və ya onların tezliklərinin toplanmasını nəzərdə tutur. Bu yanaşma, çox vaxt daxili döngülərin (nested loops) və O(n²) əməliyyatlarının qarşısını almağa kömək edir, xüsusən də massivlər (arrays) və sətirlərlə (strings) işləyərkən. Misal İki sətir verildikdə, ikinci sətirin birinci sətirin anagramı olub-olmadığını müəyyən edən bir funksiya yazın. Anagram nədir? Anagram – bir söz və ya ifadənin hərflərini yenidən düzərək başqa bir söz və ya ifadə yaratmaqdır. Məsələn: "cinema" → "iceman" "listen" → "silent" Direkt həll (O(n log n)) Bu yanaşma, hər iki sətiri hərflərinə ayırıb sıralamaq və sonra onları müqayisə etmək üsuluna əsaslanır. Kod: function isAnagram(str1, str2) { // Uzunluqlar fərqlidirsə, anagram ola bilməz if (str1.length !== str2.length) { return false; } // Hərfləri ayırıb sıralayırıq const arr1 = str1.split('').sort(); const arr2 = str2.split('').sort(); // Sıralanmış massivləri müqayisə edirik for (let i = 0; i < arr1.length; i++) { if (arr1[i] !== arr2[i]) { return false; } } return true; } // Test console.log(isAnagram("cinema", "iceman")); // true console.log(isAnagram("hello", "world")); // false Bu həllin mürəkkəbliyi: O(n log n) (çünki sıralama əməliyyatı O(n log n) vaxt aparır). Tezlik sayğacı ilə həll (O(n)) Bu yanaşma hərflərin sayını obyektlərdə saxlayaraq müqayisə etməyə əsaslanır. Sıralama əvəzinə sayma üsulu istifadə olunduğu üçün daha sürətlidir və O(n) mürəkkəbliyinə malikdir. Kod: function validAnagram(str1, str2) { if (str1.length !== str2.length) return false; const obj = {}; // İlk sətirdəki hərfləri sayırıq for (let i = 0; i < str1.length; i++) { const letter = str1[i]; obj[letter] = ++obj[letter] || 1; } // İkinci sətirdəki hərfləri yoxlayırıq for (let j = 0; j < str2.length; j++) { const letter = str2[j]; if (!obj[letter]) { return false; } else { obj[letter]--; } } return true; } // Test console.log(validAnagram('anagram', 'nagaram')) // true console.log(validAnagram('anagrams', 'nagaramm')) // false console.log(validAnagram("rat", "car")) // false Bu həllin mürəkkəbliyi: O(n) (çünki hər iki sətir yalnız bir dəfə dövr edilir). Nəticə Direkt həll sətirləri sıralamaqla müqayisə edir və O(n log n) mürəkkəbliyinə malikdir. Tezlik sayğacı həlli isə hərflərin sayını yoxlamaqla daha sürətli və effektivdir (O(n)). Tezlik sayğacı nümunəsi, yalnız anagram yoxlamaq üçün deyil, müxtəlif massiv və sətir analizlərində də faydalıdır!
  • Front-end

    Frontend based discussion board

    0 0
    0 Topics
    0 Posts
    No new posts.
  • Back-end

    Backend based discussion board

    1 1
    1 Topics
    1 Posts
    codexC
    Tapşırıq: sumFirstAndLastDigit adlı bir metod yazın. Bu metod int tipində number adlı bir parametr qəbul edir. Metodun işləmə qaydası: Verilən ədədin ilk və son rəqəmi tapılmalıdır. Bunun üçün bir dövr (loop) istifadə edərək ilk rəqəmi müəyyənləşdirməlidir. İlk və son rəqəmlərin cəmini qaytarmalıdır. Əgər ədəd mənfidirsə, metod -1 qaytarmalıdır. Test Case sumFirstAndLastDigit(252); → 4 qaytarmalıdır, çünki ilk rəqəm 2, son rəqəm 2, və 2+2=4. sumFirstAndLastDigit(257); → 9 qaytarmalıdır, çünki ilk rəqəm 2, son rəqəm 7, və 2+7=9. sumFirstAndLastDigit(0); → 0 qaytarmalıdır, çünki yalnız bir rəqəm var (0), və 0+0=0. sumFirstAndLastDigit(5); → 10 qaytarmalıdır, çünki yalnız bir rəqəm var (5), və 5+5=10. sumFirstAndLastDigit(-10); → -1 qaytarmalıdır, çünki ədəd mənfidir və yalnız müsbət ədədlər qəbul edilir. Əlavə mürəkkəblik: Metodun gövdəsində (body) maksimum 6 sətrlik kod yazaraq həll edin.
  • DevOps

    Devops based discussion board

    0 0
    0 Topics
    0 Posts
    No new posts.
  • QA based discussion board

    0 0
    0 Topics
    0 Posts
    No new posts.
  • Here we discuss any topics that not related to the boards above

    1 1
    1 Topics
    1 Posts
    codexC
    Bu yazıda başıma gələn hadısənin həllini heç-bir yerdə tapa bilməyərək müxtəlif resurslardan toplayaraq bir araya gətirmək istədim. ChatGPT sağolsun müəyyən əmrlərlə yardımçı olurdu lakin ardıcıllıq çox önəmli olduğundan proses tamamlanmırdı. Deməli iki server düşünün, A serverində işləyərkən onun dataları xarab olur və sən ayarları kopyalaya bilmirsən. Əgər sizin də Contabo serverinizdə layihəniz varsa o zaman bu sizin başınıza da gələ bilər Nə yaxşı ki, backup məntiqini düşünmüşdüm və layihələrin əsas data-ları bərpa etmək asanlıqla mümkün oldu. Bir həftədən sonra B serverini aldım və yenidən A serverində nələr etmişdimsə onu da konfiqurasiya edə bildim. Lakin saytlar yalnız http üzərindən işləyirdi və ya xəta verirdi. Mən nginx istifadə etdiyimdən online olaraq certbot vasitəsi ilə sertifikatların alınması çətin oldu. Ona görə də ilk öncə nginx-i söndürdüm: sudo systemctl stop nginx Sonra offline olaraq sertifikatları yenidən almağa cəht etdim: sudo certbot certonly --standalone -d example.com -d www.example.com --force-renewal Proseslərə razılığımı verdim və sertifikatlar uğurla yeniləndi. Sonra sayt üçün nginx configləri yenilədim. Ən önəmlisi də ssl_certificate hissəsinə nəzər yetirmək lazımdı ki, yenicə əldə etdiyimiz serifikatları düzgün təyin edə bilək. # /etc/nginx/site-available/example.com server { server_name example.com www.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8001; proxy_redirect off; # Socket.IO Support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl http2; # managed by Certbot ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot } Sonra nginx işə salırıq: sudo systemctl start nginx Əgər hər şeyi düzgün konfiqurasiya etmisinizsə o zaman xəta çıxmayacaq.