Crie palavras cruzadas exclusivamente solucionáveis ​​... sem pistas


21

Você pode imaginar resolver as palavras cruzadas do New York Times sem pistas? Talvez não com toda a criatividade e novas palavras e frases que aparecem nas palavras cruzadas modernas, mas com uma lista fixa de palavras, há alguma esperança. Nesse desafio, você cria uma grade de palavras cruzadas na qual isso é teoricamente possível.

O desafio

Maximize o número de quadrados brancos em uma grade de palavras cruzadas 15x15 sombreada em branco e preto, de modo que os quadrados brancos possam ser exclusivamente preenchidos com letras, para que todas as palavras cruzadas e descendentes apareçam na lista internacional de palavras do Scrabble.

Esclarecimentos de construção da grade

Nos jornais dos EUA, as grades de palavras cruzadas são geralmente construídas para que todas as letras sejam "marcadas", o que significa que faz parte de uma palavra "transversal" e "inativa". No Reino Unido e em outros lugares (especialmente em palavras cruzadas enigmáticas ), esse não é necessariamente o caso: se uma palavra "transversal" ou "inativa" for apenas uma letra, ela não precisará ser uma palavra real (como "A" ou "I" "). Para esse desafio, siga as regras mais flexíveis: palavras de uma letra não precisam aparecer na lista de palavras.

Existem várias outras tradições (nos EUA e em outros lugares), nenhuma das quais precisa ser seguida neste desafio. Por exemplo, as palavras podem ter apenas duas letras, é permitido repetir as palavras e a grade não precisa ter simetria (rotacional).

Isso é possível?

Sim! Pode-se escrever um script curto para verificar se a solução exclusiva para a seguinte grade em branco à esquerda é a grade preenchida à direita:

Grade 15x15 com quatro palavras de 15 letras cruzadas na quarta e quinta letras

Pode-se exibir a grade preenchida em um formato legível por computador da seguinte maneira:

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

Sua solução

A grade acima tem 56 quadrados brancos do total de 225 quadrados na grade 15x15. Isso serve como uma linha de base para esse desafio. As grades com menos quadrados brancos também podem ser interessantes por outras razões que não a pontuação, por exemplo, se satisfizerem algumas das tradições estéticas mencionadas acima.

Envie sua solução no mesmo formato da linha de base legível por computador acima. Inclua um código que verifique se há uma solução exclusiva para sua grade.

Trechos de código interessantes (por exemplo, para pesquisar o espaço de possibilidades) e a discussão de como você encontrou sua grade são apreciados.

A lista de palavras

A lista internacional de palavras em Scrabble era anteriormente conhecida como SOWPODS e agora é chamada de Collins Scrabble Words (CSW). É usado na maioria dos países (exceto principalmente nos EUA). Preferimos usar essa lista porque ela inclui ortografia britânica e geralmente tem muitas palavras significativamente mais que a lista de palavras americana. Existem várias edições desta lista que diferem ligeiramente. Você pode encontrar diferentes versões desta lista no Wikipedia , no Github , no Natural Language Corpus de Peter Norvig e em outros lugares, muitas vezes ainda chamadas de "SOWPODS".

Esse desafio é altamente sensível à natureza ampla da escolha da lista de palavras, mas menos aos detalhes menores. Por exemplo, o exemplo da linha de base acima funciona com qualquer edição do CSW, mas CHnão é uma palavra da lista de palavras do Scrabble americano. Em caso de discrepância, preferimos usar o CSW19, a edição mais recente do CSW. (Se usarmos esta lista, lançada este ano, podemos esperar que as respostas para esse desafio permaneçam válidas por mais tempo). Você pode consultar esta lista interativamente no site oficial do localizador de palavras do Scrabble ou baixá-lo (assim como a edição anterior, CSW15) do Board & Card Games Stack Exchange ou r / scrabble do Reddit .

Tldr : a lista autorizada de palavras para este desafio está disponível como um arquivo de texto sem formatação (279.496 palavras, uma por linha) no Exchange Board de Cartas e Jogos de Cartas .

Discussão adicional

Uma questão levantada em uma resposta e comentário iniciais é o motivo pelo qual as palavras cruzadas existentes (por exemplo, no NYT) não respondem a essa pergunta. Especificamente, o registro para o menor número de quadrados pretos (e, portanto, o maior número de quadrados brancos) de palavras cruzadas publicadas no NYT já é o registro mais famoso em palavras cruzadas. Por que não podemos usar a grade de registros ? Existem alguns problemas:

  • Muitas das respostas nas palavras cruzadas do NYT não aparecem em nossa lista de palavras. Por exemplo, a grade de registros inclui PEPCID(um nome de marca), APASSAGETOINDIA(um nome próprio de quatro palavras para um filme e romance, escrito sem espaços) e STE(uma abreviação de "Sainte"). Parece que a grade de registro não é solucionável com palavras do Scrabble.

  • Apenas expandir a lista de palavras para incluir mais palavras não ajuda necessariamente nesse desafio: mesmo que todas as palavras na grade de registros apareçam em nossa lista de palavras, a solução não seria única sem as pistas. Muitas vezes, é possível alterar algumas letras no final das respostas, mantendo tudo uma palavra. (Por exemplo, a letra no canto inferior direito pode ser alterada de um Dpara um R.) De fato, isso faz parte do processo de construção (humano) ao escrever palavras cruzadas, tentando obter palavras "melhores".

    A razão pela qual as palavras cruzadas comuns (geralmente) têm uma solução exclusiva é que as pistas ajudam a restringir as respostas corretas. Se você simplesmente tentar preencher a grade com palavras sem usar pistas, é provável que não haja possibilidades ou muitas possibilidades. Aqui está um exemplo de três preenchimentos diferentes (usando a lista de palavras para este desafio!) Para a mesma grade (que é usada com relativa frequência no NYT):

A grade de palavras cruzadas mais comum do NYT, preenchida de três maneiras diferentes com palavras do Scrabble.

  • Outra questão levantada nos comentários é uma certa descrença de que essa questão seja um desafio de codificação . Talvez não esteja imediatamente claro, mas é difícil encontrar uma única resposta válida para esse desafio . A localização da linha de base acima envolveu vários programas de pesquisa especialmente criados que não garantiam a resposta. Pessoalmente, nem sequer conheço uma maneira geral de resolver uma grade arbitrária, se você quiser a resposta em tempo razoável. Os programas de construção de palavras cruzadas existentes podem ajudar, mas presumo (talvez incorretamente) que eles não fazem uma pesquisa completa das possibilidades. (Eu usei esse programa para as três grades lado a lado acima; isso funcionou porque essa grade específica permite muitas soluções.)

2
Meta post relacionado a esse tipo geral de perguntas: codegolf.meta.stackexchange.com/questions/18117/…
A. Rex

3
1. Abandone a opção estética (" 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.") - da mesma forma que para evitar bônus no código de golfe, eu prefiro que um desafio de código seja apenas uma coisa. Isso significa que todas as respostas podem ser comparadas entre si. Também o torna claramente objetivo, o que ajudará a reabrir os votos.
trichoplax 25/09

4
2. Escolha uma lista de palavras e insista nela para obter todas as respostas. O tldr menciona uma lista autoritária de palavras, mas a discussão prévia pode levar as pessoas a pensar que podem escolher qualquer uma das mencionadas. Pode ajudar a manter os requisitos rígidos próximos à parte superior da publicação e deixar bem claro que outros detalhes não fazem parte da especificação do desafio. Idealmente, omita qualquer coisa supérflua nas especificações para manter o post curto e imediatamente inequívoco.
trichoplax 25/09

2
3. Faça da inclusão do código usado para encontrar a solução um requisito para uma resposta válida.
trichoplax 25/09

3
Esse é o tipo de desafio que poderia se beneficiar de uma sala de bate-papo para as pessoas discutirem abordagens. Se você configurar uma sala de bate-papo e criar um link para ela a partir do final da especificação, poderá postar uma discussão como as postagens iniciais e mencionar isso no desafio para pessoas que desejam saber mais.
trichoplax 25/09

Respostas:


9

180 quadrados brancos

Grade em branco Solução

Minha estratégia era simplesmente encontrar um retângulo menor sem quadrados pretos, de modo que ele pudesse ser preenchido de maneira exclusiva. Todos os 2×kretângulos têm várias soluções. Para 3×kretângulos, existem várias soluções kentre 3 e 14, mas existe exatamente uma solução para k=15.

Depois, encaixo 4 desses retângulos na grade. Isso significa que cada palavra aparece 4 vezes na solução, que geralmente é desaprovada na construção de palavras cruzadas, mas aceita esse desafio. Por outro lado, esta solução possui simetria esquerda / direita e superior / inferior!

Grade legível por computador:

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

Aqui está o código R que eu usei para encontrar todas as soluções para um determinado tamanho de grade. O loop de todas as triplas palavras de 15 letras é muito lento. Em vez disso, tento preencher retângulos

  • definindo as duas primeiras colunas (duas palavras de três letras)
  • em seguida, percorrer todas as palavras de 15 letras que começam com as duas primeiras letras que estão definidas.
  • para cada escolha possível das palavras de 15 letras, verifico se todas as palavras de 3 letras geradas estão no dicionário.

Por exemplo, para a solução final, o código colocado no primeiro HOPe EVO, em seguida, preenchido em HETERNORMATIVE, OVEROPINIONATEDe POSSESSEDNESSES, e, finalmente, verifica todas as palavras de 3 letras ( HOP, EVO, TES, ERS, ROE, OPS, NIS, ONE, RID, MON, ANE, TAS, ITS, VEE, EDS).

Código R

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)
}

Chamado como f3(15). Demorou algumas horas no meu computador pessoal.


@downvoter Você poderia comentar?
Robin Ryder

Minha resposta também foi reduzida. 🤷
A. Rex

1

182 quadrados brancos

Quatro regiões 3x15 conectadas por mais alguns quadrados brancos.

Inspirado pela resposta de Robin Ryder , tentei espremer mais alguns quadrados brancos. Acredito que esta solução seja única e em breve publicarei o código de verificação.

Grade legível por computador:

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

? 184 desde mon berço pode ser concluída exclusivamente com monocot
Jonathan Allan

... faça com que "talvez ...", já que eu não verifiquei que não quebrará a singularidade em geral!
Jonathan Allan

Gostaria de ver seu código de verificação. Todas as minhas tentativas de verificar sua grade são terrivelmente lentas.
Robin Ryder
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.