Benzersiz bir şekilde çözülebilir bir bulmaca oluşturun…


21

New York Times'ın çapraz bulmacasını ipucu olmadan çözmeyi hayal edebiliyor musunuz? Belki de modern bulmacalarda görünen tüm yaratıcılık ve yeni kelimeler ve deyimlerle değil, sabit bir kelime listesiyle biraz umut var. Bu zorlukta, bunun teorik olarak mümkün olduğu bir bulmaca ızgarası oluşturursunuz.

Meydan okuma

Beyaz ve siyah gölgeli 15x15 bulmaca ızgarasındaki beyaz karelerin sayısını en üst düzeye çıkarın, böylece beyaz kareler benzersiz olabilir harflerle doldurulabilir, böylece her bir uluslararası kelime Scrabble kelime listesinde görünür.

Şebeke inşaatı açıklamaları

ABD gazetelerinde, çapraz ızgaralar genellikle her harfin "kontrol edilmesi" için oluşturulur, yani hem "karşı" kelimesinin hem de "aşağı" kelimesinin bir parçasıdır. İngiltere'de ve başka yerlerde (özellikle şifreli bulmacalarda ), durum böyle olmayabilir: "karşı" veya "aşağı" bir kelime yalnızca bir harf olacaksa, gerçek bir kelime ("A" veya "I "). Bu meydan okuma için daha rahat kuralları uygulayın: tek harfli kelimelerin kelime listesinde görünmesi gerekmez.

Bu meydan okumada hiçbirinin takip edilmesi gerekmeyen (ABD'de ve başka yerlerde) çeşitli başka gelenekler vardır. Örneğin, kelimeler sadece iki harf uzunluğunda olabilir, kelimelerin tekrarlanmasına izin verilir ve ızgaranın (dönme) simetrisine sahip olması gerekmez.

Bu mümkün mü?

Evet! Soldaki aşağıdaki boş ızgaraya benzersiz çözümün sağdaki doldurulmuş ızgara olduğunu doğrulamak için kısa bir komut dosyası yazılabilir:

Dördüncü ve beşinci harflerinde dört 15 harfli kelime içeren 15x15 ızgara

Doldurulmuş ızgara aşağıdaki gibi bilgisayar tarafından okunabilir bir formatta görüntülenebilir:

###CH##########
###YE##########
###AM##########
CYANOCOBALAMINE
HEMOCHROMATOSES
###CH##########
###OR##########
###BO##########
###AM##########
###LA##########
###AT##########
###MO##########
###IS##########
###NE##########
###ES##########

Çözümünüz

Yukarıdaki ızgara, 15x15 ızgaradaki toplam 225 kareden 56 beyaz karesine sahiptir. Bu, bu zorluğun temelini oluşturur. Daha az beyaz kareye sahip ızgaralar, puanları dışındaki nedenlerle de ilginç olabilir, örneğin yukarıda belirtilen estetik geleneklerin bazılarını karşılarlarsa.

Lütfen çözümünüzü yukarıdaki bilgisayar tarafından okunabilir taban çizgisiyle aynı biçimde gönderin. Lütfen ağınıza benzersiz bir çözüm olduğunu doğrulayan kodu ekleyin.

İlginç kod snippet'leri (örneğin, olasılıkların alanını aramak için) ve şebekenizi nasıl bulduğunuzun tartışılması takdir edilmektedir.

Kelime listesi

Uluslararası Scrabble kelime listesi daha önce SOWPODS olarak biliniyordu ve şimdi Collins Scrabble Words (CSW) olarak adlandırılıyor. Çoğu ülkede (özellikle ABD hariç) kullanılır. Bu listeyi kullanmayı tercih ediyoruz çünkü İngiliz yazımları içeriyor ve genellikle Amerikan kelime listesinden çok fazla kelime içeriyor. Bu listenin biraz farklı olan birden fazla sürümü vardır. Bu listenin Wikipedia'dan , Github'da , Peter Norvig'in Doğal Dil Corpus'unda ve başka yerlerde, genellikle "SOWPODS" olarak adlandırılan farklı sürümlerini bulabilirsiniz .

Bu zorluk, kelime listesi seçiminin geniş doğasına karşı oldukça hassastır, ancak daha küçük ayrıntılara daha az duyarlıdır. Örneğin, yukarıdaki temel örnek herhangi bir CSW sürümünde çalışır, ancak CHAmerikan Scrabble kelime listesinde bir sözcük değildir. Bir tutarsızlık durumunda, CSW'nin en son sürümü olan CSW19'u kullanmayı tercih ediyoruz. (Bu yıl yayınlanan bu listeyi kullanırsak, bu soruna cevapların daha uzun süre geçerli kalmasını bekleyebiliriz). Bu listeyi resmi Scrabble kelime bulucu sitesinde etkileşimli olarak sorgulayabilir veya Board & Card Games Stack Exchange veya Reddit'in r / scrabble'ından indirebilirsiniz (önceki sürüm CSW15'in yanı sıra). .

TLDR : Bu meydan okuma için yetkili kelime listesi, Board & Card Games Stack Exchange'de düz metin dosyası (her satırda bir tane olmak üzere 279.496 kelime) olarak kullanılabilir .

Daha fazla tartışma

Erken bir cevap ve yorumda ortaya çıkan bir sorun, mevcut bulmacaların (örneğin NYT'de) neden bu soruya cevap vermemesidir. Özellikle, yayınlanmış bir NYT bulmaca için en az sayıda siyah karenin (ve dolayısıyla en fazla beyaz karenin) kaydı zaten bulmacalardaki en ünlü kayıttır. Neden kayıt ızgarasını kullanamıyoruz ? Birkaç sorun var:

  • NYT bulmacalarındaki cevapların çoğu kelime listemizde görünmüyor. Örneğin, kayıt ızgarasında PEPCID(bir marka adı),APASSAGETOINDIA (bir film ve roman için, boşluksuz yazılmış dört kelimelik uygun bir ad) ve STE("Sainte" için bir kısaltma) içerir. Kayıt ızgarasının Scrabble kelimeleriyle çözülemeyeceği anlaşılıyor.

  • Sadece kelime listesini daha fazla kelime içerecek şekilde genişletmek bu zorluğa yardımcı olmak zorunda değildir: kayıt kılavuzundaki tüm kelimeler kelime listemizde görünse bile, çözüm ipucu olmadan benzersiz olmaz. Her şeyi bir kelime olarak tutarken cevapların sonunda bazı harfleri değiştirmek genellikle mümkündür. (Örneğin, alt-en sağdaki harfi değiştirilebilir Dbir etmek R.), Bir bulmaca yazma "daha iyi" sözlerini almaya çalışırken Aslında bu (insan) inşaat sürecinin bir parçasıdır.

    Sıradan bulmacaların (genellikle) benzersiz bir çözüme sahip olmasının nedeni, ipuçlarının doğru cevapları daraltmasına yardımcı olmasıdır. Sadece sözlerle ızgara doldurmaya çalışırsanız olmadan ipuçlarını kullanarak, ya hiç ihtimal veya olacağı muhtemeldir birçok olasılık. Aynı ızgara için (NYT'de nispeten sık kullanılan bir tane) üç farklı dolgunun bir örneği (bu meydan okuma için kelime listesini kullanarak!):

Scrabble kelimeleriyle üç farklı şekilde doldurulmuş en yaygın NYT bulmaca ızgarası.

  • Yorumlarda dile getirilen bir başka konu, bu sorunun kodlayıcı bir meydan okuma olduğuna bir miktar inançsızlıktır . Belki de hemen açık değildir, ancak bu zorluğa tek bir geçerli cevap bulmak bile zordur . Yukarıdaki referans noktasını bulmak, bir cevap bulması garanti edilmeyen, özel hazırlanmış çok sayıda arama programını içeriyordu. Eğer cevabı makul bir zamanda istiyorsanız, şahsen keyfi bir ızgarayı çözmenin genel bir yolunu bile bilmiyorum . Mevcut bulmaca inşaat programları yardımcı olabilir, ancak olasılıkları tam olarak aramadıklarını (belki de yanlış) varsayıyorum. (Yukarıdaki üç yan yana ızgara için böyle bir program kullandım; bu işe yaradı çünkü bu ızgara birçok çözüme izin veriyor.)

2
Bu genel soru türü ile ilgili meta yayın: codegolf.meta.stackexchange.com/questions/18117/…
A. Rex

3
1. Estetik seçeneği (" Grids with fewer white squares may also be interesting for reasons other than their score, for example if they satisfy some of the aesthetic traditions mentioned above.") bırakın - kod golf ikramiye kaçınmaya benzer, ben sadece bir şey hakkında bir kod meydan okuma istiyorum. Bu, tüm cevapların benzer şekilde karşılaştırılabileceği anlamına gelir. Ayrıca, oyları yeniden açmaya yardımcı olacak şekilde açıkça objektif hale getirir.
trichoplax

4
2. Tek bir kelime listesi seçin ve tüm cevaplar için üzerinde ısrar edin. Tldr otoriter bir kelime listesinden bahseder, ancak önceden yapılan tartışma insanları bahsedilenlerden herhangi birini seçebileceklerini düşünmeye yönlendirebilir. Sıkı gereklilikleri yazının üst kısmına yakın tutmak ve diğer ayrıntıların meydan okuma şartnamesinin bir parçası olmadığını açıkça belirtmek yardımcı olabilir. İdeal olarak, direği kısa ve hemen açık tutmak için spesifikasyona gereksiz herhangi bir şeyi atlayın.
trichoplax

2
3. Çözümü bulmak için kullanılan kodun dahil edilmesini geçerli bir cevap için bir gereklilik haline getirin.
trichoplax

3
Bu, insanların yaklaşımları tartışmaları için bir sohbet odasından yararlanabilecek tür bir zorluktur. Bir sohbet odası kurar ve spesifikasyonun sonundan bağlantı kurarsanız, orada ilk mesajlar olarak tartışma yayınlayabilir ve daha fazla bilgi edinmek isteyen insanlar için bu zorluktan bahsedebilirsiniz.
trichoplax

Yanıtlar:


9

180 beyaz kareler

Boş ızgara Çözüm

Stratejim, siyah kareleri olmayan daha küçük bir dikdörtgen bulmaktı, böylece benzersiz bir şekilde doldurulabiliyordu. Tüm 2×kdikdörtgenlerin birden fazla çözümü vardır. İçin 3×kdikdörtgen, birden çok çözümler vardır k3 ile 14, ancak tam bir çözüm için orada k=15.

Daha sonra ızgaraya bu tür 4 dikdörtgen yerleştiriyorum. Bu, her kelimenin çözümde 4 kez göründüğü anlamına gelir, bu da genellikle bulmaca yapımında kaşlarını çatmış, ancak bu meydan okuma için tamamdır. Öte yandan, bu çözüm hem sol / sağ hem de yukarı / aşağı simetrisine sahiptir!

Bilgisayar tarafından okunabilir ızgara:

HETERONORMATIVE
OVEROPINIONATED
POSSESSEDNESSES
###############
HETERONORMATIVE
OVEROPINIONATED
POSSESSEDNESSES
###############
HETERONORMATIVE
OVEROPINIONATED
POSSESSEDNESSES
###############
HETERONORMATIVE
OVEROPINIONATED
POSSESSEDNESSES

İşte belirli bir ızgara boyutu için tüm çözümleri bulmak için kullandığım R kodu. 15 harfli kelimelerin tüm üçlüleri üzerinde döngü yapmak çok yavaştır. Bunun yerine, dikdörtgenleri

  • ilk iki sütunu ayarlama (iki 3 harfli kelime)
  • daha sonra, yerleşmiş olan ilk iki harfle başlayarak 15 harfli kelimelerin tümü arasında döngü.
  • 15 harfli kelimelerin olası her seçimi için, oluşturulan 3 harfli kelimelerin sözlükte olup olmadığını doğrularım.

Örneğin, nihai çözüm için, kod ilk koymak HOPve EVOdaha sonra içine tamamlanmış HETERNORMATIVE, OVEROPINIONATEDve POSSESSEDNESSES(ve son olarak 3 harfli kelimeleri doğrulanmadı HOP, EVO, TES, ERS, ROE, OPS, NIS, ONE, RID, MON, ANE,TAS , ITS, VEE,EDS ).

R kodu

library(fastmatch)
f = "scrabble-wordlist.txt"
d = read.table(f, skip=2, as.is=T, na.strings=NULL)

d$l = apply(d, 2, nchar)
d3 = d[d$l==3, 1]

sp = function(s) strsplit(s, "")[[1]]
cm = function(v) paste0(v, collapse="")
d3s = sapply(d3, sp)

f3 = function(l){
  m = matrix("", 3, l)

  md = sapply(d[d$l == l, 1], sp)
  nf = 0

  a1 = seq(1, 3*l, by=3); a2 = a1 + 1; a3 = a1 + 2

  for(i in 1:ncol(d3s)){
    m[, 1] = d3s[, i]

    id1 = as.matrix(md[, md[1, ] == m[1, 1]])
    id2 = as.matrix(md[, md[1, ] == m[2, 1]])
    id3 = as.matrix(md[, md[1, ] == m[3, 1]])

    if(any(ncol(id1) == 0, ncol(id2) == 0, ncol(id3) == 0)) next

    for(j in 1:ncol(d3s)){
      m[, 2] = d3s[, j]

      jd1 = as.matrix(id1[, id1[2, ] == m[1, 2]])
      jd2 = as.matrix(id2[, id2[2, ] == m[2, 2]])
      jd3 = as.matrix(id3[, id3[2, ] == m[3, 2]])

      if(any(ncol(jd1) == 0, ncol(jd2) == 0, ncol(jd3) == 0)) next

      for(k1 in 1:ncol(jd1)){
        m[1, ] = jd1[, k1]

        for(k2 in 1:ncol(jd2)){
          m[2, ] = jd2[, k2]

          for(k3 in 1:ncol(jd3)){
            m[3, ] = jd3[, k3]

            w = paste0(m[a1], m[a2], m[a3])
            if(all(w %fin% d3)){
              nf = nf + 1
              print(m)
            }
            if(nf >= 2){
              print(c(l, nf))
              return()
            }
          }
        }
      }
    }
  }

  return(nf)
}

Olarak adlandırıldı f3(15). Kişisel bilgisayarımda birkaç saat sürdü.


@downvoter Yorum yapabilir misiniz?
Robin Ryder

Cevabım da reddedildi. 🤷
A. Rex

1

182 beyaz kareler

Dört 3x15 bölge daha birkaç beyaz kareyle birbirine bağlı.

İlham alan Robin Ryder'ın cevabından , birkaç beyaz kareye daha sıkmaya çalıştım. Bu çözümün benzersiz olduğuna inanıyorum ve yakında doğrulama kodunu da göndereceğim.

Bilgisayar tarafından okunabilir ızgara:

HETERONORMATIVE
OVEROPINIONATED
POSSESSEDNESSES
B##############
INCOMMUNICATIVE
NEUROANATOMICAL
DETERMINATENESS
###############
HETERONORMATIVE
OVEROPINIONATED
POSSESSEDNESSES
B##############
INCOMMUNICATIVE
NEUROANATOMICAL
DETERMINATENESS

184 beri mon? Karyolası monokot ile benzersiz bir şekilde tamamlanabilir
Jonathan Allan

... bunu "belki ..." yap, çünkü tahtadaki tekliği kırmayacağını doğrulamamıştım!
Jonathan Allan

Doğrulama kodunuzu görmek isterdim. Şebekenizi doğrulamak için yaptığım tüm girişimler korkunç derecede yavaş.
Robin Ryder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.