1 pontos por GN⁺ 6 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • JS Crossword é um quebra-cabeça em que o resultado de executar a resposta com eval() vira a dica; por exemplo, 7 pode ser resolvido com 3+4 e [object Object] com []+{}
  • O puzzle usa recursos de JavaScript pouco conhecidos ou difíceis de entender, sendo recomendado para quem já tem alguma familiaridade com JavaScript
  • Os caracteres permitidos são restritos a A-Za-z0-9!"()*+-./<=>[]`{}, não sendo possível usar espaços, vírgulas ou ponto e vírgula, e há distinção entre maiúsculas e minúsculas
  • As respostas são avaliadas em um sandbox de eval(); DevTools, MDN e busca são permitidos, mas não é recomendado resolver com IA
  • O progresso fica salvo localmente e, ao completar todo o tabuleiro, é possível ver um final e usar o recurso de replay; nenhuma estatística é coletada

Regras do puzzle

  • JS Crossword é um quebra-cabeça em que o resultado de executar a resposta do caça-palavras com eval() vira a dica
  • A dica 7 pode ser resolvida com 3+4, e a dica [object Object] com []+{}
  • Como usa recursos de JavaScript pouco conhecidos ou um tanto obscuros, é recomendado para quem já tem alguma familiaridade com JavaScript
  • Os caracteres que podem ser usados são limitados a A-Za-z0-9!"()*+-./<=>[]`{}, e não é possível usar espaços, vírgulas ou ponto e vírgula
  • O caça-palavras diferencia maiúsculas de minúsculas, e as respostas finais são compostas apenas por palavras em inglês, correspondendo a A-Za-z
  • As respostas são avaliadas dentro de um sandbox de eval(), e podem ser testadas diretamente no playground na parte inferior da página
  • Recursos externos como DevTools, MDN e busca são permitidos, mas não é recomendado resolver com IA
  • A direção de entrada pode ser alterada clicando na célula ou pressionando ctrl, e o progresso fica salvo localmente
  • As cores distinguem possibilidade de resposta correta, caractere incorreto, erro e células já preenchidas

Conclusão e compartilhamento

  • A resposta final é exibida como horses gonna answer
  • Ao completar todo o tabuleiro, aparece um final separado, com aviso de que inclui áudio e efeitos visuais intensos
  • Depois de concluir, ao recarregar o navegador e executar replayCapture() no console do JavaScript, é possível ver o replay da partida
  • Os dados de replay ficam todos armazenados apenas localmente, e é informado que nenhum dado ou estatística do caça-palavras é coletado
  • A música de encerramento é revolea - its giving music
  • A criadora é Lyra Rebane, com playtest de Jorian Woltjer
  • Links para compartilhar opiniões: fedi, bsky, twitter

1 comentários

 
GN⁺ 6 시간 전
Opiniões no Lobste.rs
  • Tem umas linhas grossas visíveis, e fiquei curioso sobre o que significavam. É para dividir a string? Nunca tinha visto isso em palavras cruzadas
    Edit: vendo que as casas relacionadas ficam destacadas, parece que é isso mesmo. Agora parece óbvio, mas na primeira pista foi bem confuso

    • Isso mesmo, é uma linha para separar a resposta. Em palavras cruzadas isso é bem padrão e, pelo menos nos quebra-cabeças feitos no meu país, é comum
  • Fiquei um pouco decepcionado com o fato de que a solução não é única. Pela notação tr:nth-child,td:nth-child, as casas isoladas em 2,6, 10,18, 13,14, 16,16, 18,8 têm restrições insuficientes
    Também há pelo menos uma, talvez mais, abordagens diferentes. 38-down parece ter sido pensado para usar this, mas outra pessoa que postou uma captura da solução usou /h/s, e isso também funciona
    Ao editar nas casas de cruzamento, a validação da resposta às vezes falhava ou se comportava de forma estranha, do tipo uma ficava certa e a outra quebrava. Eu precisava digitar o caractere de novo para aparecer em verde
    Ao rejogar depois de recarregar a página, meu 38-down é reconhecido como resolvido, mas na animação final não é. Mais grave: 9-down era a última não resolvida, e eu tinha resolvido 22-across de um jeito incompatível com ela; ao mudar a casa cruzada para corrigir 9-down, 22-across quebrou, mas mesmo assim apareceu “whoaw!!” e foi marcado como concluído. Ao recarregar e jogar de novo, reconhece corretamente que ainda não terminou
    Em alguns momentos tive que pesquisar a biblioteca padrão do JavaScript para encontrar um nome que combinasse com o glob. Se eu não tivesse uma cópia local do MDN para fazer algo como find -name "??x?x.html", não sei como teria resolvido
    29-down ainda parece trapaça. Mesmo assim, foi muito divertido e tomou uma boa parte da minha manhã 🙂

    • Obrigado por jogar ^^!
      As soluções não únicas foram intencionais. O mesmo vale para resolver por vários caminhos. Como é um desafio com espírito hacker, acho certo permitir se você conseguir pensar em outra solução inteligente
      Fico curioso se existe uma forma de reproduzir de maneira consistente essa falha na validação das casas cruzadas
      Você identificou bem o problema das respostas cruzadas. Provavelmente é uma divertida condição de corrida assíncrona em JavaScript, e ainda assim deve ser bem fácil de corrigir
  • Ficou realmente excelente! Levou algumas horas, e no meio do caminho precisei parar algumas vezes para pensar melhor, mas no fim consegui resolver. Gosto desse tipo de experiência, e também gosto muito de palavras cruzadas de regex. Obrigado por criar e compartilhar isso

  • Só consegui resolver mais ou menos a metade, mas aprendi algumas coisas no processo. O JavaScript tem tanto lixo legado quanto casos de borda esquisitos
    As pistas longas eram abertas demais, então era difícil até começar. As que eu gostei foram 1-down e 33-down
    De qualquer forma, é um trabalho impressionante

  • Meu Deus, isso é difícil demais :)

  • Sites que sequestram ou atrapalham o botão Voltar do navegador deveriam ser marcados como spam

    • Edit: Corrigido. Descobri que alguns navegadores tratam atribuição a iframe.src como navegação