• yarı.
  • oynamasi basit ama yine de cekici bir oyun.. oyunda bir nesneden belli miktarlarla belli sayida kuleler olusturuyorsunuz (fasulye taneleriyle ornegin, ya da kagit ustunde cizik atarak, biz tas diyelim buna ama).. misal spesifik hali marienbad oyununda kulelerinizin boyu (1,3,5,7) oluyor..

    oyunu kazanmak icin bir kuraliniz oluyor, son tasi alan kazanacak ya da kaybedecek.. sirasi gelen oyuncu istedigi bir kuleden istedigi miktar tas alabiliyor.. pas gecme secenegi yok ama, en az bir tas almak gerekiyor..

    taslarin sayisina gore oyunu kimin kazanacagi (dogru oynandiginda) bastan belli esasinda, bunu ogrenince de isin matematigine giriyorsunuz zaten.. su adreste java versiyonlarina ve oyun hakkinda baska sayfalara linkler var: http://home.pacbell.net/fransg/nim.htm
  • nim oyunundaki stratejiyi aciklamak gerekirse (en azindan oyun teorisiseverler katlanabilir umarim):

    oncelikle su varsayimlari yapalim:
    - n kule, her kulede de xk, k=1..n tas olsun.. xk=x(k) ayni sey..
    - kazanma kuralini da son tasi alan kisi kazanir seklinde belirleyelim..
    - (xor icin kisa ozet: 1xor1=0, 1xor0=1, 0xor1=1, 0xor0=0; xorlamada tek sayida 1 varsa sonuc 1, cift sayida varsa sonuc 0'dir..)
    - xor(x1,x2,..,xn)'i de "x1 xor x2 xor x3 .. xor xn" olarak tanimlayalim kolaylik icin (yani xk'lerin ikilik duzen* gosterimlerinin xorlanmasi olayi, misal xor(1,2,3)=0, xor(1,2,6)=5 vs.)..
    - "!=", "esit degildir" demek..

    tek cumleyle ozetlemek gerekirse oyunda yapmak istediginiz sey hamlenizi yaptiktan sonra geride kalan taslarin xor(x1,..,xn)=0 kosulunu saglamasi.. gostermemiz gereken iki olay var:

    1. xor(x1,..,xn)=0 iken hamle yapinca xor(x1,..,xn)!=0 olur..
    xorlamanin soyle bi guzelligi var: eger herhangi bir adimda xor(x1,..,xn)=0 ise yapilan hamle sonrasi xor(x1,..,xn)!=0 olmak zorunda, cunku xor islemine giren elemanlarin butununde her bit degeri icin cift sayida 1 vardi, yapacaginiz hamle sonrasi en az bir bit degeri degismek durumunda (hamlenizde hic tas almama opsiyonu yok)..

    2. xor(x1,..,xn)!=0 iken hamle sonrasi xor(x1,..,xn)=0'i saglayacak bir hamle vardir..
    ikinci olarak bi adimda taslarin durumu xor(x1,..,xn)!=0 ise yapilan hamle sonrasi xor(x1,..,xn)=0'i saglayacak en az bir hamle vardir.. (burada isler karisacak biraz, siki tutunun..)
    soyle dusunelim: y=xor(x1,..,xn) olsun.. y'nin en anlamli biti* 1 degerine sahip en bastaki (soldaki) bittir, bu sagdan sayarsak m'inci biti olsun y'nin (yani y=001011 ise m=4).. 1 degerini cikartmak icin xora tek sayida 1 girmesi gerektigini bildigimizden m'inci biti 1 olan tek sayida xk vardir.. bu sayi 3,5,7 vs. oldugunda ileride herhangi birini secebilecegimizden, sadece 1 tanesinin bu kosulu sagladigini farzedelim, o da xt olsun.. simdi bu xt kulesi ustunde oyle bir hamle yapmak istiyoruz ki ardindan xor(x1,..,xn)=0 olsun.. cevap esasinda oldukca basit hamle sonrasi xt = xor(x1,..,x(t-1),x(t+1),..,xn), cunku bir sayiyi kendisiyle xorlamak 0 sonucunu verir..

    simdi burda sorulmasi gereken soru, xt'nin bu yeni degeri eski degerinden kucuk mu? cunku yapacagimiz hamle sadece yeni(xt)<eski(xt)'ye sebep olabilir.. buraya kadar geldigimize gore cevap tabi ki evet.. soyle ki, y'nin en anlamli biti m'inci bit olduguna gore, onun solundaki tum bitler 0'di, ve o 0'lara sebep olan bitleri degistirmeye ihtiyacimiz yok demektir bu.. m'inci bite gelirsek x1,..,xn arasinda tek sayida 1 vardi, ve xt'de bu m'inci biti (degerligi 1 daha once acikladik) degistirdigimizde m'inci bitin xor ifadesi 0 olacak.. peki m'inci 1'den 0'a degistirmek ve soldaki bitleri ellememek ne demek? o sayiyi kucultmek demek.. yani yeni(xt)<eski(xt)..

    ozetleyecek olursak, amacimiz son tasi almak oldugundan (hamle sonrasi xor(0,..,0)=0 olacak yani) eger surekli xor(x1,..,xn)=0'i saglayacak sekilde hamleler yapilirsa oyun kazanilir.. bu da su demek: oyun basindaki tas sayisi xor(x1,..,xn)!=0 kosulunu sagliyorsa oyunu 1. oyuncu, aksi takdirde 2. oyuncu kazanir..

    (http://www.cut-the-knot.org/nim_theory.shtml baya faydali oldu, yalniz olayi genelleyip herseyi 0'dan yazdim, notasyon farkli haliyle..)
  • http://www.archimedes-lab.org/…m/play_nim_game.html adlı sitede 1-3-5-7 versiyonunu bilgisayara karşı oynayabileceğiniz oyun ancak ilk oynarsanız kazanma şansınız yok.

    oyundaki temel amaç ise aslında ilk haliyle ordaki dizi bir düzen içinde ancak ilk hamle yapan bu düzeni bozuyor ve 2. oynayan da bu düzeni tekrar sağlıyor böylece son kibriti alan kaybediyor. düzen ise binary yani ikilik düzen seklinde işte bir örnek oyun:

    oyunun ilk hali:
    1-0001
    3-0011
    5-0101
    7-0111

    ve başlıyoruz,

    a
    1-0001
    2-0010
    5-0101
    7-0111
    b
    0-0000
    2-0010
    5-0101
    7-0111
    a
    0-0000
    1-0001
    5-0101
    7-0111
    b
    0-0000
    1-0001
    5-0101
    4-0100
    a
    0-0000
    1-0001
    4-0100
    4-0100
    b
    0-0000
    0-0000
    4-0100
    4-0100
    a
    0-0000
    0-0000
    3-0011
    4-0100
    b
    0-0000
    0-0000
    3-0011
    3-0011
    a
    0-0000
    0-0000
    2-0010
    3-0011
    b
    0-0000
    0-0000
    2-0010
    2-0010
    a
    0-0000
    0-0000
    1-0001
    2-0010

    ve b oyuncusu 2 alır ve a oyunu kaybeder.
  • bazen ceyregi yatay bolmek. zenon ve dikotomi. liverpool formasiyla bayern kalesine gidemiyorum paradoksal yollarla.

    butun. noksan butun.

    fazla ceyrek.
  • elfçede "beyaz" anlamına gelir.
  • (bkz: nim-lang)
  • "bir nîm neş'e say bu cihânın bahârını"

    nîm neş'e, yarım neş'e, eksik... yarım kalan her şey nasıl da sızlatıyor insanın içini.

    ...yarım sevinç acıdan başka bir şey değil.

    of aman, bunları yazmayacaktım aslında ama, neyse, kalsın böyle. nîm yarım demek işte.

    edit: harf hatası
  • bu sene içinde çıkan bir programlama dilidir. yüksek performanslı garbage collector'e sahip bir dil olmasıyla öne çıkıyor.
  • (bkz: nim hicaz)
    (bkz: nim sofyan)
hesabın var mı? giriş yap