İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Algoritma Sorusu - ihan3t

ihan3t - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
02/2012
Mesajlar:
5.005
Konular:
255
Teşekkür (Etti):
291
Teşekkür (Aldı):
1833
Ticaret:
(0) %
22-04-2017 22:32
#1
Algoritma Sorusu - ihan3t
Merhabalar, beyin fırtınası yapmak ve ortaya neler çıkacağını görmek adına böyle bir konu açıyorum.

Python bölümüne açtım, fakat istediğiniz programlama dili ile veya sadece algoritmayı söyleyerek cevaplayabilirsiniz.

Soru şöyle :

"Bir sayının 2 nin üssel kuvveti olup olmadığını nasıl hesaplarsın ?"

Örneğin 32 = 2^5 gibi..

En iyi algoritmayı kuran arkadaşı hep beraber tebrik ederiz...

Amaç düşünmeye sevk etmek, farklı düşünce tarzları görmek..

Saatim 00:00 a geldiğinde kendi cevabımı yazacağım.

---- cevap aşağıda ----

Arkadaşlar birçok kişi cevapladı.. Uğraşanlara teşekkürler..

Genelde verilen cevap şu şekilde : "sayıyı sürekli 2 ye böl, kalan 2 ye eşitse o sayı 2 nin kuvvetidir"

evet bu doğru bir algoritma.. Fakat ilk akla gelen yol ve uzun bir yol..

Bir kişi logaritma ile hesaplanan cevabı verdi, o başka bir yöntem ve o da doğru..

Şimdi cevabı birde benden dinleyin..

Bir sayıyı binary tabanlı yazdığımızda sayı 0 ve 1 lerden oluşur.. Ve eğer binary yazılmış bir değerde set edilmiş bitlerin sayısı 1 e eşitse o sayı 2 nin kuvvetidir.

Nasıl yani ?

Örneğin 6 ve 8 sayılarını ele alalım :

6 = 0110 , set edilmiş bit sayısı = 2
8 = 1000 , set edilmiş bit sayısı = 1

8 = 2^3 tür , 6 ise 2 nin kuvveti değildir.

Şimdi bu algoritmanın python koduna bakalım:

cevap = lamda x: bin(x).count('1') == 1
print cevap(32)

çıktımız True olacaktır. Çünkü 32 = 2^5 tir. 32 nin binary yazılışı = 100000 şeklindedir ve set edilmiş bit sayısı 1 dir...

Binary yazılmış bir sayıda sadece 1 adet bit set edilmiş ise o sayı 2 nin kuvvetidir...

Buna benzer algoritma soruları sorup beyin fırtınası yapmaya devam edeceğim.. Böylelikle optimize cevaplar görürüz..


---------------------
Computer Engineer.

Senior Software Engineer.
Konu ihan3t tarafından (23-04-2017 00:09 Saat 00:09 ) değiştirilmiştir.
Sessizer Teşekkür etti.
Vysion1453 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2016
Nereden:
of Darkness.
Mesajlar:
357
Konular:
9
Teşekkür (Etti):
114
Teşekkür (Aldı):
66
Ticaret:
(0) %
22-04-2017 22:42
#2
Hocam afedersinde ben soruyu anlamadım =) üssel kuvvet ? ve nasıl hesaplandığını bilmediğim için algoritmasınıda yazamam
---------------------
R6v9Bq8fsPM
DeSTuRSuZz_ - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
12/2015
Nereden:
Kocaeli
Yaş:
9
Mesajlar:
3.309
Konular:
332
Teşekkür (Etti):
783
Teşekkür (Aldı):
914
Ticaret:
(0) %
22-04-2017 22:46
#3
Alıntı:
Vysion1453´isimli üyeden Alıntı Mesajı göster
Hocam afedersinde ben soruyu anlamadım =) üssel kuvvet ? ve nasıl hesaplandığını bilmediğim için algoritmasınıda yazamam
Asal Sayı mı Değilmi Ona Bakıcaz, Bende Yeni Anladım Googlede "Asal Sayı Nedir" Diye Aratarak Başladım
---------------------
Çakallık Yapanı Kurt Boğar!
sifaci194 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2016
Nereden:
Adana
Mesajlar:
369
Konular:
141
Teşekkür (Etti):
14
Teşekkür (Aldı):
13
Ticaret:
(0) %
22-04-2017 22:46
#4
algoritmal halde yazamıyorum ama 2 nin üssü bir sayıyı mesela 64... Karşımıza bölüm kısmında 2 çıkana kadar sürekli 64 ü ikiye bölerek 2 nin üssel kuvveti olduğunu bulabiliriz.
64//2=32
32//2=16
16//2=8
8//2=4
4//2=2 ve karşımıza bölüm kısmında 2 çıktı demekki 64 sayısı 2 nin üseel değeridir
Nurullah44 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2016
Nereden:
Malatya
Mesajlar:
894
Konular:
46
Teşekkür (Etti):
274
Teşekkür (Aldı):
220
Ticaret:
(0) %
22-04-2017 22:48
#5
Alıntı:
Vysion1453´isimli üyeden Alıntı Mesajı göster
Hocam afedersinde ben soruyu anlamadım =) üssel kuvvet ? ve nasıl hesaplandığını bilmediğim için algoritmasınıda yazamam
Kısaca ... Sayısı ... Sayısının üssü müdür?
--------------------- PC Hızlandırma & Bakım v2 (EFSANE): Tıkla
PC Hızlandırma & Bakım v3 hk: Tıkla

--------
C: %40
ihan3t - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
02/2012
Mesajlar:
5.005
Konular:
255
Teşekkür (Etti):
291
Teşekkür (Aldı):
1833
Ticaret:
(0) %
22-04-2017 22:49
#6
Alıntı:
DeSTuRSuZz_´isimli üyeden Alıntı Mesajı göster
Asal Sayı mı Değilmi Ona Bakıcaz, Bende Yeni Anladım Googlede "Asal Sayı Nedir" Diye Aratarak Başladım
Hayır yahu asal sayılık bir durum yok..

Örnek verdim ya mesela 32 = 2 üzeri 5... Yani 32 , 2 nin üssel kuvveti sonucu oluşan bir sayı...

Örneğin 16 = 2 üzeri 4 gibi... Yani evet 16 geçerli bir sayı.

Yani bir x sayısı düşünün. Bu sayı 2 üzeri bir tam sayı olarak yazılabiliyor mu bunu hesaplayan bir algoritma..
---------------------
Computer Engineer.

Senior Software Engineer.
Neria - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2013
Nereden:
İstanbul
Mesajlar:
43
Konular:
3
Teşekkür (Etti):
5
Teşekkür (Aldı):
7
Ticaret:
(0) %
22-04-2017 22:51
#7
2^x=32
her iki tarafında logunu 2 tabanında alırız
x=log 2 tabanında 32=5 olur

>>> math.log(2, 32)
Konu Neria tarafından (22-04-2017 22:54 Saat 22:54 ) değiştirilmiştir.
DeSTuRSuZz_ - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
12/2015
Nereden:
Kocaeli
Yaş:
9
Mesajlar:
3.309
Konular:
332
Teşekkür (Etti):
783
Teşekkür (Aldı):
914
Ticaret:
(0) %
22-04-2017 22:52
#8
Alıntı:
ihan3t´isimli üyeden Alıntı Mesajı göster
Hayır yahu asal sayılık bir durum yok..

Örnek verdim ya mesela 32 = 2 üzeri 5... Yani 32 , 2 nin üssel kuvveti sonucu oluşan bir sayı...

Örneğin 16 = 2 üzeri 4 gibi... Yani evet 16 geçerli bir sayı.

Yani bir x sayısı düşünün. Bu sayı 2 üzeri bir tam sayı olarak yazılabiliyor mu bunu hesaplayan bir algoritma..
Hayda Ben Bodoslama Konuya Yanlış Dalmışım

Edit: Olayı Şimdi Anladım ^^
---------------------
Çakallık Yapanı Kurt Boğar!
Konu DeSTuRSuZz_ tarafından (22-04-2017 22:53 Saat 22:53 ) değiştirilmiştir.
Nurullah44 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2016
Nereden:
Malatya
Mesajlar:
894
Konular:
46
Teşekkür (Etti):
274
Teşekkür (Aldı):
220
Ticaret:
(0) %
22-04-2017 22:54
#9
Bize verilen sayı x olsun:

1-)
Y=2
Y>=x olana kadar y*2 işlemini yap
Y=x ise x sayısı y sayısının yani ikinin üssel kuvvetidir.


2-(
Bize verilen sayı x olsun
Y=2
X<=y olana kadar y/2 işlemini yap.
X=y ise x sayısı y sayısının üssüdür.
--------------------- PC Hızlandırma & Bakım v2 (EFSANE): Tıkla
PC Hızlandırma & Bakım v3 hk: Tıkla

--------
C: %40
``Falcone - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
06/2016
Nereden:
l1ackerone
Mesajlar:
3.548
Konular:
230
Teşekkür (Etti):
2339
Teşekkür (Aldı):
1231
Ticaret:
(0) %
22-04-2017 22:55
#10
Kod:
Dim a as integer
dim b as integer
dim sonuc as integer
a = textbox1.text
b = textbox2.text
sonuc = a^b
normal kare alma bu fakat tersini yapamadım

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı