İ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 Yarışması 3 - 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ı):
1831
Ticaret:
(0) %
08-10-2017 19:02
#1
Algoritma Yarışması 3 - ihan3t
Merhaba arkadaşlar, uzun zamandır yeni konu açamıyordum iş hayatı ve projelerden fırsat bulupta..

Biraz vaktim var ve şimdi size yeni bir algoritma sorusu soruyorum.

Bu sefer soru çok kısa olacak.

Soru şu şekilde:

"x ve y adında iki adet integer değişkeni, başka hiçbir değişken kullanmadan yer değiştirin."

Yani öyle bir işlem yapın ki, bu işlemin sonunda x ile y nin değerleri birbiri ile yer değişmiş olsun.

Soruyu çözmek için katılan, düşünmeyi ve gelişmeyi seven arkadaşlara başarılar..

Gene her sorunun altına koyduğum gibi önemli dipnot : başka hiçbir harici değişken kullanmayın, dosya yazma okuma işlemi (daha genel konuşacak olursak io işlemi) yapmayın, sadece bu iki değişkeni kullanın.

Cevabı açıklıyorum :

(kondanta isimli üyemiz beklediğim cevabı verdi, başka doğru yaklaşımlarda oldu)

Alıntı:
ihan3t´isimli üyeden Alıntı Mesajı göster
Tebrikler.. Beklediğim cevap buydu.

Xor Swap diye de geçer.

Basitçe anlatmak gerekirse şöyle ki :

x = 001
y = 010

x = x XOR y

yani

001
010
=
011 // 3

y = x XOR y

yani

011
010
=
001 // 1

x = x XOR y

yani

011
001
=
010 // 2

x = 2
y = 1

olmuş oldu.

Xor işleminde, aynı bitler 0 farklı bitler 1 değerini alır.
Ve bilinmesi gereken bir diğer kural :

x XOR y = z ise
z XOR x = y
z XOR y = x

değerlerini verir.

Xor birçok şifreleme ve deşifreleme işlemlerinde de kullanılır.




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

Senior Software Engineer.
Konu ihan3t tarafından (08-10-2017 20:01 Saat 20:01 ) değiştirilmiştir.
Phoique 7 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Mesajlar:
462
Konular:
23
Teşekkür (Etti):
37
Teşekkür (Aldı):
139
Ticaret:
(0) %
08-10-2017 19:08
#2
Hocam ben böyle bişey yaptım anladığım kadarıyla,

Kod:
x = 10
y = 20
print("x =",x)
print("y =",y)
x,y = y,x
print("\nx =",x)
print("y =",y)
---------------------
JavaScript Developer
snorkinow - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2007
Mesajlar:
2
Konular:
0
Teşekkür (Etti):
0
Teşekkür (Aldı):
0
Ticaret:
(0) %
08-10-2017 19:08
#3
x,y=y,x
snorkinow - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2007
Mesajlar:
2
Konular:
0
Teşekkür (Etti):
0
Teşekkür (Aldı):
0
Ticaret:
(0) %
08-10-2017 19:10
#4
Konu madem algoritma x, y ve z değişkenleri oluşturup
x=1
y=2
z=x

x=y
y=z ile sorun çözülebilir Bir yöntem daha var ama çetrefilli
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ı):
1831
Ticaret:
(0) %
08-10-2017 19:14
#5
Alıntı:
Phoique 7´isimli üyeden Alıntı Mesajı göster
Hocam ben böyle bişey yaptım anladığım kadarıyla,

Kod:
x = 10
y = 20
print("x =",x)
print("y =",y)
x,y = y,x
print("\nx =",x)
print("y =",y)
Bu soruyu python bölümüne açmak uygun olmadı sanırım.. Böyle bir şey geleceğini bekliyordum. Fakat algoritma sorusu olduğu için yapmazlar dedim

Algoritma ile bulunması gerekli dostum.


Alıntı:
snorkinow´isimli üyeden Alıntı Mesajı göster
Konu madem algoritma x, y ve z değişkenleri oluşturup
x=1
y=2
z=x

x=y
y=z ile sorun çözülebilir Bir yöntem daha var ama çetrefilli
Böyle cevaplara yönelik, özellikle belirtiyorum harici bir değişken kullanmayın diye. Acaba sadece soruyu okuyup geçiyor musunuz?

Hayır öyle bile olsa, algoritma sorusu bu sonuçta. Çözümün böyle olması beklenemez değil mi.
---------------------
Computer Engineer.

Senior Software Engineer.
VirtualSystem - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
08/2017
Mesajlar:
412
Konular:
11
Teşekkür (Etti):
0
Teşekkür (Aldı):
51
Ticaret:
(0) %
08-10-2017 19:20
#6
Kod:
def yerdegis(x,y):
    x,y = y,x
    return y,x
print(yerdegis(0,1))
İlk çözüm olması dileğiyle diyelim (:
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ı):
1831
Ticaret:
(0) %
08-10-2017 19:26
#7
Alıntı:
VirtualSystem´isimli üyeden Alıntı Mesajı göster
Kod:
def yerdegis(x,y):
    x,y = y,x
    return y,x
print(yerdegis(0,1))
İlk çözüm olması dileğiyle diyelim (:
Bir üstteki yorumumu tekrar oku dostum...
---------------------
Computer Engineer.

Senior Software Engineer.
vatansever001 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2012
Mesajlar:
998
Konular:
81
Teşekkür (Etti):
697
Teşekkür (Aldı):
95
Ticaret:
(0) %
08-10-2017 19:33
#8
X=1
1=x
y=2
2=y

2,1
--------------------- 151 Site HaCKeD !
ALcatraz' - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2013
Nereden:
İstanbul
Mesajlar:
4.266
Konular:
1022
Teşekkür (Etti):
968
Teşekkür (Aldı):
1757
Ticaret:
(0) %
08-10-2017 19:39
#9
Kod:
int a = 15, b = 13;
printf("%d %d\n", a , b); 
a = a - b; 
b = b + a; 
a = b - a; 
printf("%d %d", a, b); 
return 0;
---------------------
En çok ne zoruma gidiyor biliyor musun? "Ülkem" diye kaydetmiştin beni telefonuna. Kalbimi parçalara ayırdın, hani vatan bölünmezdi?

Yokluğun bilinç altımdayken , varlığın kimin altında merak ediyorum.
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ı):
1831
Ticaret:
(0) %
08-10-2017 19:42
#10
Alıntı:
ALcatraz'´isimli üyeden Alıntı Mesajı göster
Kod:
int a = 15, b = 13;
printf("%d %d\n", a , b); 
a = a - b; 
b = b + a; 
a = b - a; 
printf("%d %d", a, b); 
return 0;
Doğru bir yaklaşım, fakat geliştirilebilir.

Birkaç cevap daha gelsin bende kafamdakini yazayım
---------------------
Computer Engineer.

Senior Software Engineer.

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ı