Şimdi Ara

Kazık bir soru

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
22
Cevap
2
Favori
1.226
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • https://www.hackerrank.com/challenges/mr-k-marsh/problem
    cevapları aramadan kendiniz yapmaya çalışın, beni zorladı. TR'den 15-20 kişi tam çözebilmiş (timeout olmadan)

    < Bu ileti mini sürüm kullanılarak atıldı >



  • Soruyu çözdün mü? Yani sıfırdan kod yazıp çalıştırarak sonuca ulaştın mı? Kodlama için hangi dili kullandın? (tahminim Java) Soruyu Perl ile çözmeyi düşünüyorum.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Çözdüm sandım, ama aslında olmamış. Sıkıldım, uygun zamanda tekrar bakmayı düşünüyorum. Java kullanıyorum, script dilleri daha uygun olabilir bu tür problemler için. (Recursive çözüm düşünmeyin, test case lerin birinde 300x300 lük matris var).

    Şunu da belirteyim: bu tür şeyleri çözmek sizi iyi yazılım geliştiricisi yapmaz, bunlar matematik problemini kodlayarak çözmek, zihinsel egzersiz, vaktiniz varsa uğraşın, hiç yoktan iyidir. Şöyle faydası olur: çözümü kullandığınız dilin/platformun idiomlarına uygun düşünün, örnek vereyim: bir soru vardı AM/PM şeklinde yazılmış saati 24-hour formatına çevirin diye. Akla ilk gelen çözüm string sonundaki AM/PM kısmını kesip baştaki iki rakamın üzerine 12 eklemek, çoğunluk öyle çözmüş python olsun, java olsun, c olsun.. şimdi Java'nın gücü nedir? OO olması ve zengin class seti, reusability, extensibility, yani string i öyle parse edip parçalamak yerine hazır class lara yönelmek lazım. O nedenle ben şöyle çözdüm:

    quote:

    LocalTime.parse(saat, DateTimeFormatter.ofPattern("hh:mm:ssa")).format(DateTimeFormatter.ISO_LOCAL_TIME);


    Java 8 ile gelen yeni Date/Time class larını çalışmış oldum, işte böyle yaklaşırsanız faydası olur. Python da çözüm başka, Perl de başka, Javascript te başka. Eğer char dizisi olarak görüp sondan kes baştan ekle yapıyorsanız siz aslında hala C (procedural) programcılığını aşabilmiş değilsiniz

    < Bu ileti mini sürüm kullanılarak atıldı >




  • ben bu dp sorularında hep patlıyorum ya.
  • quote:

    Orijinalden alıntı: seyfi84

    Çözdüm sandım, ama aslında olmamış. Sıkıldım, uygun zamanda tekrar bakmayı düşünüyorum. Java kullanıyorum, script dilleri daha uygun olabilir bu tür problemler için. (Recursive çözüm düşünmeyin, test case lerin birinde 300x300 lük matris var).

    Şunu da belirteyim: bu tür şeyleri çözmek sizi iyi yazılım geliştiricisi yapmaz, bunlar matematik problemini kodlayarak çözmek, zihinsel egzersiz, vaktiniz varsa uğraşın, hiç yoktan iyidir. Şöyle faydası olur: çözümü kullandığınız dilin/platformun idiomlarına uygun düşünün, örnek vereyim: bir soru vardı AM/PM şeklinde yazılmış saati 24-hour formatına çevirin diye. Akla ilk gelen çözüm string sonundaki AM/PM kısmını kesip baştaki iki rakamın üzerine 12 eklemek, çoğunluk öyle çözmüş python olsun, java olsun, c olsun.. şimdi Java'nın gücü nedir? OO olması ve zengin class seti, reusability, extensibility, yani string i öyle parse edip parçalamak yerine hazır class lara yönelmek lazım. O nedenle ben şöyle çözdüm:

    quote:

    LocalTime.parse(saat, DateTimeFormatter.ofPattern("hh:mm:ssa")).format(DateTimeFormatter.ISO_LOCAL_TIME);


    Java 8 ile gelen yeni Date/Time class larını çalışmış oldum, işte böyle yaklaşırsanız faydası olur. Python da çözüm başka, Perl de başka, Javascript te başka. Eğer char dizisi olarak görüp sondan kes baştan ekle yapıyorsanız siz aslında hala C (procedural) programcılığını aşabilmiş değilsiniz
    yanlış düşünüyorsun. bana o AM/PM sorusu teknik mülakatta soruldu, kagıda çözmem istendi. Ben orda nerden bileyim dediğin methodu. Hatta bir arkadaş yapamamış bile sebebi de Java substring methodunun end index exclusive, begin index inclusive olduğunu hatırlayamaması.



    < Bu mesaj bu kişi tarafından değiştirildi funky-nd -- 1 Mayıs 2018; 11:21:46 >




  • funky-nd kullanıcısına yanıt
    Yanlış düşünmüyorum. Yanlış olan öyle teknik mülakatlara girmek. Adam gibi diplomanızı alın, entry level job ile iş hayatına girin, ondan sonra da referanslar iş tecrübeniz iş ilişkileriniz networkleriniz ile kariyerinizi devam ettirin. Yoksa maymun olursunuz işte yok metodun parametresini ezbere hatırlayamadın diye...



    < Bu mesaj bu kişi tarafından değiştirildi seyfi84 -- 1 Mayıs 2018; 11:44:29 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • Competitive programming sorularından biri.
    Bu tür sorularda fonksiyonel programlama dilleri daha çok işe yarıyor. Bunları çözebilmek için önce daha basitleriyle bir süre uğraşıp mantığı kavramak gerekiyor, bodoslama dalan birinin çözmesi çok zor, çözse bile büyük ihtimalle ortaya kötü bir çözüm çıkacak ve zaman aşımı yiyecek.
    Bununla hemen hemen aynı mantığa sahip ama üç boyutlu olan istifçi adlı soru geçtiğimiz günlerde odtü programlama yarışmasında çıktı. Bence odtü sorusu buna nazaran birazcık daha zordu, ama tam çözen birkaç grup oldu yine de.
    Zaten bu tür bir soruyu çözebilen birisi aynı kategorideki bütün soru tiplerini çözebilir yeterli süre tanınırsa.
    Ama böyle sorularla daha önce hiç uğraşmamış birisi için gerçekten de zor, büyük firmalar işe alırken bunun bir tık daha kolaylarını soruyorlar mülakatlarda.




  • Yapay Zeka’dan İlgili Konular
    Birine soru sorma
    2 ay önce açıldı
    Daha Fazla Göster
  • bombergranade B kullanıcısına yanıt
    1,5 sene evvel (2016 yazı) bu forumda Euler project'ten sorular geliyordu, onlardan birkaçını çözmüştüm. Bu tür sorularu antrenman olarak çözüyorum zevkli oluyor. Bu arada soru çözümüne hala başlamadım cunku gün başka birşeyle (Qt Framework ile yapılmış bir paketi OSX'te derlemek ve tabi ki 3-5 bug'ı temizlemekle) geçti.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • aslında 12 kişi çözmüş timeout olmadan. 13. de ben oldum.
    Bayaa zorladı. Üzerinde 3-4 gün düşündüm. Atlatılabilecek tüm case'leri atlatınca çözülebiliyor.

    Genel olarak yorumlamak gerekirse zor bir soru.
    Hata yaptıkça test case'lerden bir kaçını indirip bakmam gerekti. Test case'ler yeterince iyi değil bence. Hata yaptığınızda test case üzerinden hatanın yerini anlamak çok zor.
  • ic3b3rg İ kullanıcısına yanıt
    Güzel, yeni bir tane vereyim sana https://www.hackerrank.com/challenges/king-richards-knights/problem Türkiyeden henüz çözen çıkmamış

    < Bu ileti mini sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: funky-nd

    yanlış düşünüyorsun. bana o AM/PM sorusu teknik mülakatta soruldu, kagıda çözmem istendi. Ben orda nerden bileyim dediğin methodu. Hatta bir arkadaş yapamamış bile sebebi de Java substring methodunun end index exclusive, begin index inclusive olduğunu hatırlayamaması.

    Alıntıları Göster
    Kağıda kod yazmak denir arkadaş! Crud yaparak maaş hak edecek adama fibonaccinin tavsan problemini çözdürerek işe almak veya elemak kadar saçma birşey yok ama yapılıyor.

    hackerranker ben yararı buluyorum veya codewars.com. Ama bunu sudoku çözmek gibi görüyorum. Keyif ve egzersiz için yapıyorum.



    < Bu mesaj bu kişi tarafından değiştirildi mahoni_38 -- 7 Mayıs 2018; 12:49:53 >




  • quote:

    Orijinalden alıntı: seyfi84

    Güzel, yeni bir tane vereyim sana https://www.hackerrank.com/challenges/king-richards-knights/problem Türkiyeden henüz çözen çıkmamış
    Ben bunu çözdüm, Testcase 0'ı geçiyorum, fakat diğerleri geçilecek gibi değil,

    case 3'te 30milyon x 30milyon luk matris var, 800 terabayt bellek falan lazım, mümkün değil, java Out of Memory hatası verdi,

    case 1'de 200bin rotasyon var, hesapladım, tamamlaması 16 saat sürüyor, in-place matrix rotation yapmama rağmen... hiç boşa uğraşmayın.

    < Bu ileti mini sürüm kullanılarak atıldı >




  • seyfi84 S kullanıcısına yanıt
    Hocam, her 90 derece cevirmede, icerdeki karenin offsetini, simdiye kadar kacinci dondurme oldugunu ve kosesindeki sayiyi tutsak, her cevirmede, o cevirme L tane koordinattan, bu cevirme disinda kalanlarin yerini versek, 4-5 mb hafiza ile halledebiliriz sanirim. Her 90 derece dondurulen kare, bir oncekinin icinde. Burda runtime ve memory complexity N den bagimsiz. S ve L ye bagimli.



    Birsey mi kaciriyorum?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • mghfreud M kullanıcısına yanıt
    Ne dediğini anlamadım. Belki ben birşey kaçırıyorum, in-place cevirme yapan kodum aşağıda (bunun offset'li ve submatrix çeviren versiyonunu da var, çok karışık oldu ama çalışıyor, isteyen olursa onu da yollarım)

     

    public static void cevir(int[][] m) {

    int tmp, n=m.length-1;

    for (int i=0; i < m.length/2; ++i)

    for (int j=i; j < m.length-1-i; ++j) {

    tmp = m[i][j];

    m[i][j] = m[n - j][i];

    m[n - j][i] = m[n - i][n - j];

    m[n - i][n - j] = m[j][n - i];

    m[j][n - i] = tmp;

    }

    }



    Test case 3 input dosyasının ilk 25 satırı şöyle,
     
    29911111
    200000
    161 215 29910863
    211 216 29910812
    232 227 29910780
    242 236 29910769
    246 241 29910764
    524 290 29910454
    530 294 29910399
    599 598 29910070
    723 607 29909810
    776 627 29909751
    801 680 29909680
    819 690 29909652
    910 911 29909412
    936 943 29909351
    1094 1144 29908967
    1101 1172 29908935
    1106 1173 29908924
    1145 1182 29908872
    1151 1195 29908857
    1165 1247 29908793
    1233 1267 29908669
    1235 1271 29908614
    1367 1419 29908416



    < Bu mesaj bu kişi tarafından değiştirildi seyfi84 -- 8 Mayıs 2018; 12:15:48 >
    < Bu ileti mini sürüm kullanılarak atıldı >




  • seyfi84 S kullanıcısına yanıt
    Bütün tabloyu çevirmekle uğraşmaya gerek yok galiba

    mgfreud’un dediği de böyle galiba

    Commandın dışındaysa direkt yazıyoruz o K nin cevabını içindeyse işlemlerini yapmaya devam ediyoruz. Command’ın Dışında kaldıkça değerini atıyoruz ...

    Böyle bulunabilir sanırım, konudaki yazılanlardan böyle bir sonuç çıkardım



    < Bu mesaj bu kişi tarafından değiştirildi alimmm78 -- 8 Mayıs 2018; 12:40:32 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • alimmm78 kullanıcısına yanıt
    Bütününü çevirmiyorsun zaten, öyle yaparsan yanlış olur.

    Exponential olarak matrisler küçülüyor desek, öyle de değil, işte örnek dosyayı özellikle gönderdim, ilk altmatrisin boyutu 29910863, sonrakinin 29910812, sonraki 29910780 diye devam ediyor.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • seyfi84 S kullanıcısına yanıt
    Yukarıda yazdığınız kod ?*?lik bir tabloyu çevirmiyor mu?

    Burada bütün tablodaki elemanları kullanmış oluyoruz ya



    Bunun yerine K ların ilk yeri belli bunların command’ın içinde yer alıp almamasına göre çevirme işlemi yaparsak daha az işlemde yapabiliriz gibi geldi

    < Bu ileti mini sürüm kullanılarak atıldı >
  • alimmm78 kullanıcısına yanıt
    K muhtemelen altmatris içinde, değilse tamam haklısın.
    K altmatris içindeyse tüm altmatris yerine sadece K yı 200bin defa çevirmek olabilir mi?

    edit: şöyle düzelteyim, ona göre tartışma devam etsin:
    komutları atla, K lara bak önce. K komut içindeyse orjinal matriste yerini bul, komutu uygula(sadece K ya!), yeni yerini bul, sonraki komuta bak, K yine komut içindeyse tekarla... ta ki K komut dışı kalana kadar, ondan sonra komutlara bakmayı bırak, sonucu yaz, bir sonraki K ya geç.

    valla olabilir gibi. buyrun yapın. :))



    < Bu mesaj bu kişi tarafından değiştirildi seyfi84 -- 8 Mayıs 2018; 14:18:47 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • seyfi84 S kullanıcısına yanıt
    ilk komut uygulayarak yaptım gibi fakat süre hatası verdi, python ve programlama bilgim az ondan dolayı bazı işlemler çok zaman harcıyor galiba, hangi yol verimli olur bilgim yok

    K'lere bak, dışındaysa bunları elleme
    içindeyse komutu uygula, sonraki komut için içindeyse uygula dışındaysa kalsın ....

    https://paste.ubuntu.com/p/Ykvx9SXzrq/
    bu şekilde yazmıştım, ama direkt süre aşımı hatası veriyor

    çözümü merak ettim
    hızlandırmak için neler yapılabilir fikri olan paylaşabilirse sevinirim
    edit:pastebin linki bozulmuş, başka siteden attım



    < Bu mesaj bu kişi tarafından değiştirildi alimmm78 -- 8 Mayıs 2018; 20:2:10 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • alimmm78 kullanıcısına yanıt
    rotate() fonksiyonunda hata var gibi geldi.

    K'nın bir komut/altmatris içinde olduğunu tespit ettikten sonra onu döndürmenin 4 farklı yolu yok mu? kare düşün, left-top-right-bottom, K noktası kenarlardan birinin üzerinde, left ise top, top ise right, right ise bottom, bottom ise left olacak şekilde 4 farklı rotasyon, yani önce hangi kenar üzerine düştüğünü bulmak gerekmiyor mu?

    < Bu ileti mini sürüm kullanılarak atıldı >
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.