Duş Alarak Daha İyi Bir Programcı Olun

Sonuç olarak daha iyi bir programcı olacaksınız.

Unsplash'ta Victor Furtuna'nın fotoğrafı

Çoğu fikir gibi, bunu da duşta gördüm. Bu yıl yapmak istediğim şeylerden biri, sadece daha fazla şey değil, daha zor şeyler programlamak için kendime meydan okumak. Bu, üniversitede öğrendiğim ama yıllardır kullanmadığım için hemen unuttuğum birçok kavramı yeniden öğrenmek anlamına geliyor.

Facebook, Google ve diğer büyük teknoloji şirketlerinin ünlü olduğu zor mülakat sorularını okumayı seviyorum. Üniversiteden mezun olmaya hazırlanırken, beyaz tahtaya soracakları zor problemleri okumak beni titretiyordu. Onlara cevap verme görevine gerçekten uygunmuşum gibi hissetmiyordum, bu yüzden kolay yoldan gittim ve temel e-ticaret web geliştirmesi yapan bir işe girdim.

Bunun karşılığını iyi almış ve çok şey öğrenmiş olsam da, her zaman olabileceğim en iyi programcı olmadığımı hissettim. Bu yüzden şimdi kendime daha çok meydan okumak istiyorum, bu da temel beyin jimnastiği problemleriyle başlamak ve çalışmak anlamına geliyor.

Geçen gün bir diziyi nasıl tersine çevireceğimi düşünmeye başladığımda araba kullanıyordum (bu durumda, sayısal olarak dizine alınmış normal bir [0..n] dizisi). Saf çözüm, ikinci bir dizi, b[0..n] oluşturmak ve elemanları ters sırada a'dan b'ye kopyalamaktır. Elbette bu, bir milyon öğelik bir dizi için çok verimli olmayan O(n) uzay karmaşıklığındadır.

Bir sonraki düşünme biçimi, onu yerinde tersine çevirmekti, bu da geçici bir dizi kullanmamak, ancak döngünün sonunda a[0..n]'nin a[n..0] olması anlamına gelir. Cevabı hemen düşünemedim ve gideceğim yere geldiğim için hemen unuttum.

Bu sabah duş alırken sorun aklıma geldi. "a-hah" anımı orada yaşadım. Bir diziyi yerinde nasıl tersine çevireceğimi çözene kadar kendi kendime duşu bitirmeyeceğimi söyledim. Zor bir iş görüşmesine benzer şekilde, duşta savunmasızsınız ve bir bilgisayarınız yok (umarız iş görüşmenizde giyiniksinizdir). Sadece sen ve beynin.

Ben de bunun hakkında düşünmeye başladım. İlk başta, dizide basitçe döngü yapmayı, son öğeyi birinciye ve ilk öğeyi son $i'ye kopyalamayı düşündüm (burada $i döngü sayacıydı) ve bitirdiniz. Ancak, daha fazla inceledikten sonra, bu çözüm hiç de öyle değil, sonunda dizinin bir kısmını kendi üzerine kopyalayacaksınız (acele etsem iyi olur, sıcak su soğumaya başlıyordu).

Ya dizinin sadece yarısını kullandıysanız ve son yarıyı ilk yarıya kopyaladıysanız ve tam tersi? Bu, dizinin herhangi bir bölümünün üzerine yazmaz ve etkili bir şekilde yerinde tersine çevrilir. Bir şey daha ve bitirdiniz: tek uzunluklu dizileri nasıl ele alıyorsunuz? Dizi a[0..10] ise, 5.5. öğeye (Leeloo Dallas Multipass) gidemezsiniz. Yani yukarı mı yuvarlayacaksın yoksa aşağı mı yuvarlayacaksın? Cevap, döngünüzün nasıl kurulduğuna bağlıdır. $i<(n/2) kullanıyorsanız, ceil() kullanmanız gerekir, $i<=(n/2) kullanıyorsanız, floor() kullanmanız gerekir. İşte PHP'de bir çözüm.

<?php
 
$a = range(0, 10); /* 11 elements */
$n = count($a)-1; /* indexed 0..10 */
 
for ( $i=0; $i<ceil($n/2); $i++ ) { /* or: for ( $i=0; $i<=floor($n/2); $i++ ) */
  /* Essentially a swap() function done in place. */
  $x = $a[$i];
  $a[$i] = $a[$n-$i];
  $a[$n-$i] = $x;
}
 
print_r($a);
 
/* or just use array_reverse() */

Şimdi, N boyuttan oluşan çok boyutlu bir diziyi yinelemeli olarak tersine çevirin.

Suggested posts

Alan Adları Hakkında Bilgi Bulma

Brian P. Hogan'ın Küçük, Keskin Yazılım Araçları'ndan bir alıntı

Alan Adları Hakkında Bilgi Bulma

facebook.com'a bir talepte bulunduğunuzda, bilgisayarınız o bağlantıyı kurabilmesi için bu alan adını bir IP adresine çevirmek üzere alan adını arar.

UI Tasarımında D kelimesi ve L kelimesi. Dil Önemlidir. ırkçı olma

UI Tasarımında D kelimesi ve L kelimesi. Dil Önemlidir. ırkçı olma

Dilimiz, düşüncelerimizi, tutumlarımızı ve eylemlerimizi şekillendirebilen güçlü bir araçtır. Görünüşte zararsız terimler bile zararlı önyargıları ve klişeleri devam ettirebilir.

Related posts

Medyayı Yeniden Düşünmek: McChesney'nin Beş Gerçeği ve İletişimin Geleceği

Günümüzün hiper-bağlantılı dünyasında, medya sistemleri kamuoyunun şekillenmesinde ve dolayısıyla demokratik karar vermede çok önemli bir rol oynamaktadır. Bilgin Robert McChesney, iletişimin ekonomi politiğine ilişkin derinlemesine analizinde, geleneksel kanıya meydan okuyor ve medya hakkında kendi deyimiyle "beş gerçek" sunuyor.

Artık parola yok — geçiş anahtarları parolanızın yerini nasıl alacak?

Artık parola yok — geçiş anahtarları parolanızın yerini nasıl alacak?

Belirsizliği önlemek için aşağıdaki terimler kullanılacaktır; Doğrulayıcı; Web sitesine giriş yapmak için kullanılan cep telefonu; Kullanıcının oturum açma isteği Hizmetini yapmak için kullandığı web sitesi veya uygulama; Verilen hizmeti sağlayan satıcı, örn.

Work Week'te Öğrenme sandığınızdan daha önemli

Work Week'te Öğrenme sandığınızdan daha önemli

Çoğu zaman kendimizi, bizim için iyi olduğunu bildiğimiz şeyleri uygulamakta zorlanırken buluruz. Bir başkasına onu sevdiğimizi söylemekten bir korsan gibi konuşmayı hatırlamaya kadar, her zaman bu şeyleri zaten yaptıkları için bir günlük, haftalık veya aylık olaylara gerek olmadığını iddia edenler olacaktır.

Goodreads Okuma Yarışması Zehirlidir

Goodreads Okuma Yarışması Zehirlidir

Elimdeki kaşıntı, yerel kitapçıyla başka bir kitap için pazarlık yaparken yayıldı. Son zamanlarda satın aldığım diğerleri gibi bu kitap da tahtını 'Okunacak' (TBR) yığınımda bulacaktı; ve yine de satın aldım.