şükela:  tümü | bugün
  • yarı.
  • nonsteril indikasyon materyali.
  • ilhan mansızın arabasının plakasındaki harfler
    nina-ilhan mansız'ı temsil ediyor.
  • 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..)
  • ornek bir de oyun verelim:

    (x1,..,xn) = (1,2,4,8) olsun xor(1,2,4,8)=15 yani 1. oyuncu kazanacak.. bakalim:

    1.1. yukarda anlattigimiza gore y=xor(1,2,4,8)=(0001,0010,0100,1000)=1111
    m=4
    t=4, xt=1000=8 demek ki, (4.biti 1 olan bi o var)
    yeni(x4)=xor(1,2,4)=111=7
    demek ki 4. kuleden 1 tas almamiz lazim.. yeni durum (1,2,4,7)

    1.2. yapacak cok bisey yok (1,2,0,7) yapilir misal..

    2.1. yine m=4, t=4.. hesaplanirsa yeni(x4)=3 cikar.. yeni durum (1,2,0,3)

    2.2. (1,2,0,2)

    3.1. m=1, t=1.. yeni(x1)=0.. yeni durum (0,2,0,2)

    3.2. (0,1,0,2)

    4.1 bundan sonrasi acik zaten.. (0,1,0,1)

    4.2 (0,0,0,1)

    5.1 (0,0,0,0) ilk oyuncu kazanir..
  • bir dosya uzantisi*

    edit: yuxellusun aciklamasi* extension: nim program and/or extension nokia phone game file
  • (bkz: nimrod)
  • binary additionla kolayca oynanabilen, ogreten hocanin "kucuk kardesinizle veya sarhosken muhendis arkadaslarinizla oynarsaniz kolayca paralarini alabilirsiniz " diye acikladigi oyun
  • (bkz: nimmilletimin)