|
Konu Başlığı: Algoritma sorusu Gönderen: wizofwor üzerinde Ocak 29, 2013, 18:42:20 ÖS Bir algoritma sorusu. Aslında matematik sorusuydu ama ben bunu çözen bir algoritma yazmanın güzel bir egsersiz olacağını düşündüm. Biraz vBasic'te uğraştım mamafih başarılı olamadım. Her hangi bir dilde yapabilecek olan var mı?
Örneğin n=8 olsun. Bir kağıda bir'den 8'e kadar sayıları yazıyoruz. 1,2,3,4,5,6,7,8 1'den başlayarak ikinci sayıyı iptal ediyoruz. 1,2,3,4,5,6,7,8 Sonra başa dönüyoruz ve aynı işlemi kalan diziyle yapıyoruz. 1,2,3,4,5,6,7,8 Sonra tekrar başa dönüyoruz 1,2,3,4,5,6,7,8 ve f(8) = 1'dir diyoruz. İkinci bir örnek de 9 için yapalım. 1,2,3,4,5,6,7,8,9 1,2,3,4,5,6,7,8,9 İşte karışıklık yaratan kısım burası. En son 9'u saydığımız için bu sefer 1'i iptal ederek başlıyoruz. 1,2,3,4,5,6,7,8,9 1,2,3,4,5,6,7,8,9 ve f(9)=3'tür diyoruz. Amaç her n değeri için aynı mantıkla sonuç veren bir f(n) fonksiyonu yazmak. Konu Başlığı: Ynt: Algoritma sorusu Gönderen: Mathman üzerinde Ocak 29, 2013, 18:51:41 ÖS 9 u saydığından dolayı 1 i neden iptal ediyorsun .. oradaki mantığı anlamadım
Konu Başlığı: Ynt: Algoritma sorusu Gönderen: Atacan üzerinde Ocak 29, 2013, 19:05:00 ÖS Ben komple anlamadım :D
Konu Başlığı: Ynt: Algoritma sorusu Gönderen: wizofwor üzerinde Ocak 29, 2013, 19:38:57 ÖS Eleme yaparken son rakama geldiğinde başa geri dönüyor.
Aslında resimle daha kolay anlaşılıyor. Aşağıda n=5 için resimli anlatım var. 1'i atlayarak başlıyoruz. 2 iptal. 3 kalıyor, 4 iptal. 5 kalıyor, 1 iptal. 3 kalıyor, 5 iptal. Mantık bu şekilde. Elimizde en son 1 rakam kalana kadar bir atlayarak iptal ediyoruz. Konu Başlığı: Ynt: Algoritma sorusu Gönderen: Mathman üzerinde Ocak 29, 2013, 19:55:19 ÖS n=10 için cevap 5 mi mesela?
Konu Başlığı: Ynt: Algoritma sorusu Gönderen: nightlord üzerinde Ocak 29, 2013, 22:44:41 ÖS sanirim soyle bisey. biraz aceleye geldi. su an lineer cozumden iyisini goremedim. belki sabit zamanli bir cozum de matematiksel olarak cikarilabilir (hatta ihtimalen oyle).
Kod: int SonrakiDaireselIndex(int i, int n){Konu Başlığı: Ynt: Algoritma sorusu Gönderen: wizofwor üzerinde Ocak 30, 2013, 09:22:32 ÖÖ Aslında matematik sorusu zaten. Yani matematiksel bir çözümü var. Ben bu şekilde uğraşmak istedim ama dizinin sonundaki sayıyı tutup 1'i iptal ettiği yerde takıldım. Sanıyorum C ile çözmüşsün. Bunu vbasic'e adapte edip excel'e ekleyebilecek miyim bakalım.
@mathman evet f( 10) = 5 oluyor. Konu Başlığı: Ynt: Algoritma sorusu Gönderen: wizofwor üzerinde Ocak 30, 2013, 18:18:17 ÖS @nightlord:
Senin kodu vbasic'e tercüme ettim. Excel dosyasını ilgilenen arkadaşlar için bu yazının ekine koydum. Çok süper oldu. Olay dairesel index fikrinde. Bunu akıl edebilseydim gerisi kolaymış. Tecrübe de bu demek oluyor herhalde. Kodu ise şöyle Kod: Function nightlordF(n As Integer) As Integer Konu Başlığı: Ynt: Algoritma sorusu Gönderen: nightlord üzerinde Ocak 30, 2013, 23:10:28 ÖS dairesel index fikri de zaten senin verdigin problem tanimindan geliyor aslinda. Ama cok da kolay bir soru sayilmaz bu. Guzel bir yazilim muhendisi interview sorusu olur.
Sorunun orjinalini nerede buldugunu sorabilir miyim? Konu Başlığı: Ynt: Algoritma sorusu Gönderen: wizofwor üzerinde Ocak 30, 2013, 23:22:06 ÖS Bu bir iş arkadaşımın sorduğu bir matematik sorusuydu. Matematiksel çözümü de excel formulü olarak "=2*X-(2^(INT(LOG(X;2))+1)-1)" imiş.
Konu Başlığı: Ynt: Algoritma sorusu Gönderen: kaptan akgun üzerinde Şubat 02, 2013, 12:37:17 ÖS İlginç bir soruymuş
Konu Başlığı: Ynt: Algoritma sorusu Gönderen: AmigaMan üzerinde Şubat 07, 2013, 12:27:42 ÖS Algoritma Sorusunu çözdüm java,python, c# ve VBA dillerinde kodları hazırladığımda foruma göndereceğim
Konu Başlığı: Ynt: Algoritma sorusu Gönderen: wizofwor üzerinde Şubat 07, 2013, 16:51:30 ÖS Aynı mantıkla mı yoksa farklı bir yoldan mı çözdün?
Konu Başlığı: Ynt: Algoritma sorusu Gönderen: AmigaMan üzerinde Şubat 08, 2013, 02:42:57 ÖÖ Dizi Mantığıyla ama C kodunu incelemedim.
|