İçimden geldi, sayılarda basamak davası

kendimcemotivasyon

3 ay önce 0 yorum

Bazen açık kaynak dünyasına yaptığım katkıları o katkılara yapılan yorumları okuyorum. Bir nevi ego tatmini bir nevi bu işi sevdiren bir şey. Liseden bu yana bir şeyler kodluyorum, aşırı sevdiğim bir şey bu bilgisayar adını verdiğimiz cihaz. İçerisinde aklın akıldan üstünlüğünü tartışıyoruz hep.

Aklıma ne geldi bu yazıyı yazmama sebep, onu belirteyim; JavaScript'de toString(36) prototipi.

Prototipi olduğu Number nesnelerinde 36 argümanıyla kullanıldığında o sayıyı 36'lık tabanda yazıyor. Bunu yıllar önce bir hash fonksiyonu olarak düşünüyordum hahahah. Meğersem sayıyı belirtilen tabana göre stringify yapıyormuş.

Sayı tabanlarını ve toplamayı bulan zâtı tebrik etmek lazım, olağan üstü bir başarı bunu yapabilmesi. Aslında doğal bir şey olması da bir o kadar beni şaşırtıyor. Mesela 5lik tabanda bir sayı yazmak isteyelim, yani bir basamağı göstermek için sadece 5 adet simgeye sahibiz. O halde 10 sayısı nasıl yazılabilir diye düşününce şöyle bi çıkarım yapıyoruz:

// _ simgesi basamakları ifade etsin.
// 10'luk tabanda 10'u göstermek için 2 adet basamağa ihtiyacımız var

1 0
_ _

// peki 5'lik tabanda nasıl olur, birinci basamak 1'ler basamağı
// ikinci basamak 5'ler basamağı olmalı. burdaki anlam ne peki anlayabildik mi?

 2   0
 _   _
(5) (1)

// iki tane 5 10 eder, 10'luk tabanda da onlar basamağında 1 olduğuna göre 1 tane 10 10 eder :)

Yani lafın kısası 36'lık tabanda bir sayı yazmak için çok fazla simge kullanmanız gerekiyor, yani alfabedeki harfleri de içeriyor bu limit dikkatli bakarsak:

0123456789abcdefghijklmnopqrstuvwxyz

burada tam 36 simge var, en soldaki en az değere sahip simge en sağdaki ise en değerli simge, "z" burada 35 değerini temsil ediyor. Yani biz 9999999 diye yazıyoruz ya 36'lık tabanda zzzzzzz diye yazılıyor. 1 eklersek 1000000 olacak :D bayağı büyük bir sayı. 

Burda dikkat çeken bir şey var, biz 99'a da 1 eklesek zz'ye de 1 eklesek ikisinin görünümü de 100 oluyor :) 1 sayısı suyu taşıran son damla gibi aslında. Ancak bardağın taşması söz konusu değil sanki, bardak tamamen bir sonraki bardağa o son damlasını veriyor ve kendinde biriken damlaları hep döküyor. O yüzden bu basamak olayını bardak taşması şeklinde anlamlandıramıyoruz :/ O basamak dolunca bir solundaki değerin ondan 36 kat daha değerli olduğunu biliyor. Yani soldaki bardak önceki bardaktaki tüm değerleri alıp kendine dolduruyor ama kendisi 36 kat daha büyük bir bardak.

Bunu matematiğe döken kişiye hayran kalmamak mümkün değil. Eyyorlamam bu kadar diye kapatayım, bazı küçük detaylar olağan üstü kafa açıyor.

(1248773515117300).toString(36)

Düşündüklerin nedir ?

Abdurrahman Eker

(1010 Eylül 11111001100)

  • Full Stack Developer Turkey/Sivas
  • İnternette Avare Kodcu
  • coffee
  • github
  • instagram
  • linkedin
  • youtube
  • Yeni içeriklerden haberdar olmak ister misin ?