Re: [cs-lisp] Re: Bram Cohen'in İşe Alma Sorusu (Merhaba Liste)

2007-08-14 Başlik Mehmet Yavuz Selim Soyturk
On 8/14/07, Aycan iRiCAN [EMAIL PROTECTED] wrote:
 Alp Özmert yazmış:
  Selam!
 
  Selem [EMAIL PROTECTED] yazmış:
 
 
  -- What is the exponent of the largest power of two whose base seven
  representation doesn't contain three zeros in a row?
 
 
  Hiç de optimal olmayan bir çözüm:
 
  (do ((i 1 (1- i)))
   ((not (search 000 (write-to-string (expt 2 i) :base 7)))
   i))
 
  Bu soru ile uğraşırken çözemediğim bir problem ile karşılaştım. Bu
  betiği onbin değil de yüzbinden geri saydırınca tabii ki de zaman
  alıyor. Ben de bir kaç kere bölüp nerelerde olduğuna bakmak istedim
  ama beceremedim. (Bölüp değişkenlerin değerlerine işlev çağrılarına
  falan bakabiliyorum ama i'nin değerini bulamadım.) Yardımcı
  olabilecek olursa sevinirim.
 
  Saygılar,
  Alp Özmert
 
 http://hpaste.org/2240

 Acemi bir programcı olarak ben de aynı deneme yanılma çözümünü haskell
 ile denedim. İlginç bir problemmiş, üzerinde düşünmesi bile eğitici.
 Teşekkürler.

 Sevgiler...
 --
 aycan

Ben de sizin koddan yola cikarak ussun degil de exponent'in kendisinin
bulunmasini sagladim. En son 8833 buldu. Bu iletiyi gonderirken acik
unutmusum programi, bilgisayarin hafizasini doldurdu. Ayni programi
baska dilde (mesela C'de) yazsaydik boyle hafiza kullanilmazdi. Ya
hafizayi dogru kullanan Haskell programi yazmayi bilmiyorum, ya da
programi interpreter'dan calistirdigim icin bazi optimizasyonlar
yapilmiyor. Denemek icin programi derleyeyim dedim, fakat bu sefer de
monadlara takildim.

   main = map (putStrLn . show) setC
veya
   main = foldl1 () $ map (putStrLn . show) setC

gibi seyler denedim, olmadi. En sonunda

   main = foldr1 () $ map (putStrLn . show) setC

seklinde oldu. Ve evet, bu sekilde hafiza problemi yok :)


Haskell'de kod yazmak aslinda zevkli (fonksiyonlari manipule etmek
falan), yalniz okunakli kod yazmasi zor gibi (kendi kodumdan
bahsediyorum).

Bir de asagida tanimladigim parallel fonksiyonu gibi calisan standard
bir fonksiyon yok mu Haskell'de? Soyle bir baktim, bulamadim.

(Afedersiniz, yukaridaki yazi ugrastigim seyleri aninda buraya
yazdigim icin biraz karisik oldu sanirim, uzun zaman sonra Haskell'e
tekrar bakan birinin karsilastigi problemler olarak
degerlendirebilirsiniz).

module Main where

import Numeric
import Char
import List
import Data.List

parallel :: (x - a, y - b) - (x, y) - (a, b)
parallel (f, g) (x, y) = ((f x), (g y))

setA = iterate (parallel ((+1), (*2))) (0, 1)
setB = [ (x, showIntAtBase 7 (intToDigit) y ) | (x, y) - setA]
setC = map fst $ filter (not . isInfixOf 000 . snd) setB

main = foldr1 () $ map (putStrLn . show) setC

-- 
Mehmet
___
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp


Re: [cs-lisp] Re: Bram Cohen'in İşe Alma Sorusu (Merhaba Liste)

2007-08-13 Başlik Aycan iRiCAN
Alp Özmert yazmış:
 Selam!

 Selem [EMAIL PROTECTED] yazmış:

   
 -- What is the exponent of the largest power of two whose base seven
 representation doesn't contain three zeros in a row?
 

 Hiç de optimal olmayan bir çözüm:

 (do ((i 1 (1- i)))
  ((not (search 000 (write-to-string (expt 2 i) :base 7))) 
  i))

 Bu soru ile uğraşırken çözemediğim bir problem ile karşılaştım. Bu
 betiği onbin değil de yüzbinden geri saydırınca tabii ki de zaman
 alıyor. Ben de bir kaç kere bölüp nerelerde olduğuna bakmak istedim
 ama beceremedim. (Bölüp değişkenlerin değerlerine işlev çağrılarına
 falan bakabiliyorum ama i'nin değerini bulamadım.) Yardımcı
 olabilecek olursa sevinirim.

 Saygılar,
 Alp Özmert
   
http://hpaste.org/2240

Acemi bir programcı olarak ben de aynı deneme yanılma çözümünü haskell
ile denedim. İlginç bir problemmiş, üzerinde düşünmesi bile eğitici.
Teşekkürler.

Sevgiler...
--
aycan

___
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp