;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Livro bomba no TikTok com páginas fora de ordem e mistério para resolver

Livro "A Mandíbula de Caim" virou fenômeno no TikTok - Reprodução/Editora Intrínseca
Livro 'A Mandíbula de Caim' virou fenômeno no TikTok Imagem: Reprodução/Editora Intrínseca

Jessica Franciele

Colaboração para Splash

17/04/2023 17h46Atualizada em 17/04/2023 17h48

Se você gosta de solucionar enigmas, prepare-se para "A Mandíbula de Caim". Febre no TikTok, o livro de suspense policial lançado em 1934, ganhou sua primeira edição no Brasil.

Publicado na Inglaterra há 89 anos, o quebra-cabeça literário aguça o lado investigativo dos leitores da melhor forma.

O livro foi escrito por Edward Powys Mathers sob o pseudônimo de "Torquemada".

Na trama, o mistério gira em torno do assassinato de seis pessoas.

As páginas são numeradas fora de sequência.

Para resolver os casos, é preciso destacar as páginas e organizá-las.

O objetivo é descobrir a ordem correta dos fatos e identificar vítimas e assassinos.

Segundo o "The Guardian", o número de possíveis combinações de páginas da obra, que leva o nome de uma icônica cena de Hamlet de Shakespeare, a dos 158 dígitos.

O que dificulta a resolução dos assassinatos é que frases de uma página têm ligação com outras páginas, não permitindo uma conexão simples entre elas.

A mandíbula de Caim - Intrínseca

caim - Divulgação - Divulgação
A Mandíbula de Caim
Imagem: Divulgação

Preço: R$ 34,99

Quem já resolveu?

Diz a lenda que apenas quatro pessoas foram capazes de resolver o quebra-cabeça. Foram duas pessoas na década de 30, cada uma ganhou 25 libras. Depois disso, o livro ficou anos fora de circulação até uma cópia ser apresentada à associação Laurence Sterne Trust. Lá, o curador do museu Shandy Hall, Patrick Wildgust, conseguiu resolvê-lo.

Quando a editora Unbound relançou o título em 2019 com um prêmio de mil libras esterlinas (o equivalente a R$ 6.320 na cotação atual) a única pessoa que conseguiu desvendar o enigma foi John Finnemore, um escritor e comediante britânico da BBC.

Ascensão no TikTok

Graças a uma série de postagens no TikTok, Sarah Scannell, uma assistente de comunicação em São Francisco, nos Estados Unidos, trouxe o livro ao centro das atenções.

@saruuuuuuugh too early to tell but i fear i may have girlbossed a bit too close to the sun #fyp #mystery #cainsjawbone ? Knives Out! (String Quartet in G Minor) - Nathan Johnson

O primeiro vídeo de Sarah sobre "A Mandíbula de Caim", publicado em novembro de 2021, tem 6,7 milhões de visualizações. Em dezembro de 2022, ela contou aos seguidores que ainda não conseguiu solucionar o quebra-cabeça literário.

  • Hashtag original do livro, CainsJawbone, tem 99 milhões de visualizações.
  • No Brasil, o número a dos 11 milhões no TikTok.
  • Após viralizar nos EUA, livro esgotou na Amazon e nas livrarias.
  • Na plataforma, os leitores mostram suas táticas para solucionar o quebra-cabeça.

@gabigabits_ o dia que eu fingi ser detetive @julianahippler @melissapatez @herronsbeer #mandibuladecaim #cainsjawbone #booktok #scoobydoo #fyp #foryou ? What's New Scooby-Doo? - Simple Plan

Rodapé content commerce -  -