{!! (function($V) {
$gart = function($slug) { $m = ['best-wordle-starting-words' => ['S','L','A','T','E'], 'wordle-hard-mode-five-guess-system' => ['H','A','R','D','!'], 'connections-purple-group-first' => ['P','U','R','P','L'], 'connections-red-herrings' => ['R','E','D','H','E'], 'strands-hints-and-spangram' => ['S','P','A','N','G'], 'crossword-clue-types' => ['C','L','U','E','S']]; $cols = ['#6aaa64','#c9b458','#787c7e','#ba81c5','#f8d15b','#ffb27a']; $L = $m[$slug] ?? ['G','A','M','E','S']; $o = ''; };
$GAMES = ['wordle'=>['Wordle','/wordle-answers','/wordle','W','wordle.svg','Guess the five-letter word in six tries.','New York Times',0],'connections'=>['Connections','/connections-answers','/connections','C','connections.svg','Sort 16 words into four hidden groups.','New York Times',0],'strands'=>['Strands','/strands-answers','/strands','S','strands.svg','Find the themed words and the spangram.','New York Times',1],'spelling-bee'=>['Spelling Bee','/spelling-bee-answers','/spelling-bee','B','spelling-bee.svg','Make words from seven letters, always using the centre.','New York Times',1],'letter-boxed'=>['Letter Boxed','/letter-boxed-answers','/letter-boxed','L','letter-boxed.svg','Connect letters around a square to use them all.','New York Times',0],'nyt-mini'=>['The Mini','/nyt-mini-crossword-answers','/nyt-mini-crossword','M','','A five-by-five crossword in a few minutes.','New York Times',0],'nyt-midi'=>['The Midi','/nyt-midi-crossword-answers','/nyt-midi-crossword','M','','A mid-size themed crossword, 9x9 to 11x11.','New York Times',0],'nyt-crossword'=>['NYT Crossword','/nyt-crossword-answers','/nyt-crossword','N','','The full 15x15 daily crossword, 21x21 on Sundays.','New York Times',0],'pips'=>['Pips','/pips-answers','/pips','P','pips.svg','Place dominoes so every region meets its rule.','New York Times',0],'pinpoint'=>['Pinpoint','/pinpoint-answers','/pinpoint','P','pinpoint.svg','Guess the category from five clues.','LinkedIn',0],'crossclimb'=>['Crossclimb','/crossclimb-answers','/crossclimb','C','crossclimb.svg','Solve clues, then order the words into a ladder.','LinkedIn',0],'la-times'=>['LA Times Crossword','/la-times-crossword-answers','/la-times-crossword','L','','The syndicated daily crossword from the Los Angeles Times.','Daily crosswords',0],'newsday'=>['Newsday Crossword','/newsday-crossword-answers','/newsday-crossword','N','','Stan Newman\'s daily crossword, home of the Saturday Stumper.','Daily crosswords',0],'wsj'=>['WSJ Crossword','/wsj-crossword-answers','/wsj-crossword','W','','The Wall Street Journal\'s daily crossword and Friday contest.','Daily crosswords',0],'usa-today'=>['USA Today Crossword','/usa-today-crossword-answers','/usa-today-crossword','U','','The free daily crossword edited by Erik Agard.','Daily crosswords',0],'crosswords-with-friends'=>['Crosswords With Friends','/crosswords-with-friends-answers','/crosswords-with-friends','F','','Zynga\'s pop-culture daily crossword with weekday themes.','Daily crosswords',0],'7-little-words'=>['7 Little Words','/7-little-words-answers','/7-little-words','7','','Seven clues, seven answers, built from letter tiles.','Word games',0],'jumble'=>['Jumble','/jumble-answers','/jumble','J','','Unscramble four words, then solve the cartoon pun.','Word games',0],'word-salad'=>['Word Salad','/word-salad-answers','/word-salad','W','word-salad.webp','Find every themed word in a 4x4 letter grid.','Word games',0],'wordscapes'=>['Wordscapes','/wordscapes-daily-answers','/wordscapes-daily','W','wordscapes.webp','Swipe letters to fill the daily crossword grid.','Word games',0],'codycross'=>['CodyCross Password','/codycross-password-answers','/codycross-password','C','','The daily password hidden in CodyCross\'s puzzles.','Word games',0],'monkey-wrench'=>['Monkey Wrench','/monkey-wrench-answers','/monkey-wrench','M','','Find themed words in a honeycomb of letters.','Word games',0],'quordle'=>['Quordle','/quordle-answers','/quordle','Q','','Four Wordles at once, nine guesses.','Word games',0],'hurdle'=>['Hurdle','/hurdle-answers','/hurdle','H','','Five Wordle rounds where each answer seeds the next.','Word games',0],'contexto'=>['Contexto','/contexto-answers','/contexto','C','contexto.png','Guess the secret word by how close its meaning is.','Word games',0],'waffle'=>['Waffle','/waffle-answers','/waffle','W','','Swap letters to fix six crossing words in a waffle grid.','Word games',0],'minute-cryptic'=>['Minute Cryptic','/minute-cryptic-answers','/minute-cryptic','M','minute-cryptic.png','One cryptic crossword clue a day, explained.','Word games',0],'catalogues'=>['Catalogues','/catalogues-answers','/catalogues','C','','Put seven items in order under The New Yorker\'s hidden theme.','Word games',0],'clueless'=>['Clueless','/clueless-answers','/clueless','?','','Guess the secret word with no clues, only distances.','Guessing games',0],'framed'=>['Framed','/framed-answers','/framed','F','','Guess the movie from six frames.','Guessing games',0],'box-office-game'=>['Box Office Game','/box-office-game-answers','/box-office-game','B','','Name the top five films from a past weekend.','Guessing games',0],'byrdle'=>['Byrdle','/byrdle-answers','/byrdle','B','','Wordle for choral music terms.','Guessing games',0],'costcodle'=>['Costcodle','/costcodle-answers','/costcodle','C','','Guess the Costco price within five percent.','Guessing games',0],'countryle'=>['Countryle','/countryle-answers','/countryle','C','','Guess the country from hemisphere, continent and climate clues.','Guessing games',0],'genshindle'=>['Genshindle','/genshindle-answers','/genshindle','G','','Guess the Genshin Impact character in four modes.','Guessing games',0],'heardle-decades'=>['Heardle Decades','/heardle-decades-answers','/heardle-decades','H','','Name the song from its opening seconds, by decade.','Guessing games',0],'moviedle'=>['Moviedle','/moviedle-answers','/moviedle','M','','Guess the movie from its cast, one name at a time.','Guessing games',0],'stardewdle'=>['Stardewdle','/stardewdle-answers','/stardewdle','S','','Five Stardew Valley guessing modes every day.','Guessing games',0],'sumplete'=>['Sumplete','/sumplete-answers','/sumplete','S','','Delete numbers so every row and column sums to its target.','Guessing games',0],'yeardle'=>['Yeardle','/yeardle-answers','/yeardle','Y','','Guess the year from three historical events.','Guessing games',0]];
$GUIDES = [['best-wordle-starting-words','Wordle','The best Wordle starting words, ranked by 10,000 games','wordle',7],['wordle-hard-mode-five-guess-system','Wordle','Hard mode without the panic: a five-guess system','wordle',6],['connections-purple-group-first','Connections','Spotting the purple group first, every time','connections',8],['connections-red-herrings','Connections','How to read red herrings before they trap you','connections',6],['strands-hints-and-spangram','Strands','How Strands hints work, and when to use them','strands',5],['crossword-clue-types','Crosswords','Crossword clue types every solver should know','nyt-midi',7]];
$e = function($s) { return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); };
$g = function($r, $k, $d = '') { if ($r === null) return $d; if (is_array($r)) { return (array_key_exists($k, $r) && $r[$k] !== null && $r[$k] !== '') ? $r[$k] : $d; } if (is_object($r)) { $val = null; try { $val = $r->{$k}; } catch (\Throwable $x) { $val = null; } if (($val === null || $val === '') && ($r instanceof \ArrayAccess)) { try { if ($r->offsetExists($k)) { $val = $r[$k]; } } catch (\Throwable $x) {} } return ($val === null || $val === '') ? $d : $val; } return $d; };
$J = function($x) { if (is_string($x)) { $t = trim($x); if ($t === '') return []; $d = json_decode($t, true); return is_array($d) ? $d : []; } if (is_array($x)) return $x; if (is_object($x)) { $d = json_decode(json_encode($x), true); return is_array($d) ? $d : []; } return []; };
$tz = new \DateTimeZone('America/New_York'); $todayNY = (new \DateTime('now', $tz))->format('Y-m-d');
$D = function($d) { if (is_object($d) && method_exists($d, 'toDateTime')) { return $d->toDateTime()->format('Y-m-d'); } if (is_object($d) && method_exists($d, 'format')) { return $d->format('Y-m-d'); } $s = trim((string)$d); if ($s !== '' && is_numeric($s) && strlen($s) >= 12) { return gmdate('Y-m-d', (int)($s / 1000)); } return substr($s, 0, 10); };
$F = function($d, $f = 'F j, Y') use ($D) { $s = $D($d); $ts = $s ? strtotime($s.' 12:00:00 UTC') : 0; return $ts ? gmdate($f, $ts) : (string)$d; };
$SL = function($d) use ($D) { $s = $D($d); $ts = $s ? strtotime($s.' 12:00:00 UTC') : 0; return $ts ? strtolower(gmdate('F-j-Y', $ts)) : ''; };
$rel = function($d) use ($D, $todayNY, $F) { $s = $D($d); if ($s === $todayNY) return 'Today'; $y = (new \DateTime($todayNY.' 12:00:00 UTC'))->modify('-1 day')->format('Y-m-d'); if ($s === $y) return 'Yesterday'; return $F($s, 'l'); };
$tiles = function($word, $cls = 'ga-tile', $blur = true) use ($e) { $o = ''; foreach (preg_split('//u', (string)$word, -1, PREG_SPLIT_NO_EMPTY) as $ch) { $o .= ''.$e($ch).''; } return $o.''; };
$chips = function($arr, $cls = 'ga-pill', $blur = true, $special = [], $sep = '') use ($e) { $o = ' '; };
$spoil = function($id, $kicker, $title, $inner, $light = false) { return ''.$kicker.' '; };
$facts = function($pairs) use ($e) { $o = '
'; } return ''.$e($gm[3]).''; };
$crumb = function($items, $light = false) use ($e) { $o = ''; };
$byline = function($meta) { return ''; };
$aside = function($guideKey = '') use ($GAMES, $GUIDES, $ico, $e, $gart) { $o = ''; return $o; };
$others = function($exclude, $keys = []) use ($GAMES, $ico, $e) { if (!count($keys)) $keys = ['wordle','connections','strands','spelling-bee','nyt-mini','pinpoint']; $o = ' '; };
$col = \App\Models\Collection::find(331);
$params = $V['params'] ?? []; $dateSlug = (string)($params['date_slug'] ?? '');
$item = $V['item'] ?? null; if (!$item || $g($item, 'date') === '') { if ($col && $dateSlug !== '') { $item = $col->items()->where('date_slug', $dateSlug)->first(); } }
if (!$item) { return $notFound('We don’t have this Moviedle puzzle yet', 'There is no Moviedle puzzle in our archive for that date. It may not be published yet, or the date may be outside the range we cover.', '/moviedle-answers', 'Moviedle'); }
$rows = [$item]; $v = function($k, $d = '') use ($g, $item) { return $g($item, $k, $d); };
$date = $D($v('date')); if ($dateSlug === '') $dateSlug = (string)$v('date_slug') ?: $SL($date);
if ($date !== '' && $date > $todayNY) { return $notFound('The Moviedle for '.$e($F($date)).' isn’t out yet', 'This puzzle unlocks on '.$e($F($date, 'l, F j')).'. Come back then for hints and the answer, or open the hub for the latest puzzle.', '/moviedle-answers', 'Moviedle'); }
$dp = $F($date); $dshort = $F($date, 'F j'); $isToday = ($date === $todayNY);
$num = (function($r) use ($g) { $n = trim((string)$g($r, 'puzzle_number')); return ($n !== '' && is_numeric($n)) ? number_format((int)$n) : $n; })($item);
$R = ['facts' => [], 'board' => '', 'hints' => '', 'answer' => '', 'extra' => '', 'faq' => [], 'summary' => ''];
$title = trim((string)$v('title')); $year = trim((string)$v('year')); $cast = $J($v('cast')); if (!count($cast)) $cast = array_values(array_filter(array_map('trim', explode('|', (string)$v('cast')))));
$cast = array_map(function($x){ return is_array($x) ? (string)($x['name'] ?? reset($x)) : (string)$x; }, $cast);
$dirs = $J($v('directors')); if (!count($dirs)) $dirs = array_values(array_filter(array_map('trim', explode('|', (string)$v('directors'))))); $dirs = array_map(function($x){ return is_array($x) ? (string)reset($x) : (string)$x; }, $dirs);
$gen = $J($v('genres')); if (!count($gen)) $gen = array_values(array_filter(array_map('trim', explode('|', (string)$v('genres'))))); $gen = array_map(function($x){ return is_array($x) ? (string)reset($x) : (string)$x; }, $gen);
$R['facts'] = [['#'.$num, 'Puzzle'], [$e($year ?: '-'), 'Year'], [count($cast), 'Cast clues'], [$e(implode(', ', array_slice($gen,0,2)) ?: '-'), 'Genre']];
$hh = ''; foreach (array_slice($cast, 0, 6) as $i => $c) { $hh .= $hintRow($i+1, 'Cast member '.($i+1), $e($c)); } if (count($dirs)) $hh .= $hintRow(count(array_slice($cast,0,6))+1, 'Director', $e(implode(', ', $dirs))); $R['hints'] = $hh;
$R['answer'] = $spoil('answer', 'Spoiler', 'Moviedle answer today', ''.$e($title).($year?' ('.$e($year).')':'').''.$btn('Reveal the movie'));
$R['faq'] = [['What is the Moviedle answer today?', 'The movie for Moviedle #'.$num.' on '.$dp.' is '.$e($title).($year?' ('.$e($year).')':'').'.']];
$R['summary'] = 'Moviedle #'.$num.' answer for '.$dp.': the cast revealed one name at a time, then the film behind a reveal.';
$prev = $col ? $col->items()->where('date', '<', $date)->orderBy('date', 'desc')->first() : null;
$next = $col ? $col->items()->where('date', '>', $date)->where('date', '<=', $todayNY)->orderBy('date', 'asc')->first() : null;
$prevRaw = $col ? $col->items()->where('date', '<', $date)->orderBy('date', 'desc')->limit(8)->get() : [];
$seenP = []; $prevList = []; foreach ($prevRaw as $r) { $pd = $D($g($r, 'date')); $ps = (string)$g($r, 'date_slug') ?: $SL($pd); if ($pd === '' || isset($seenP[$ps])) continue; $seenP[$ps] = 1; $prevList[] = ['d' => $pd, 's' => $ps, 'r' => $r]; if (count($prevList) >= 5) break; }
$numOf = function($r) use ($g, $D) { return (function($r) use ($g) { $n = trim((string)$g($r, 'puzzle_number')); return ($n !== '' && is_numeric($n)) ? number_format((int)$n) : $n; })($r); };
$h1 = ($isToday ? 'Today’s ' : '').'Moviedle hints and answer for '.$e($isToday ? $dshort : $dp).'';
$h = ' ';
$h .= $R['answer'].$R['extra'];
$h .= '';
$h .= ' ';
$faq = $R['faq']; $faq[] = ['How does Moviedle work?', 'Guess the film from its cast list, revealed one actor at a time from least to most famous.']; $faq[] = ['Where can I find past Moviedle answers?', 'Every date in our archive has its own page on GameAnswers.com with the film and its cast.'];
$h .= ' ';
$h .= ' ';
$h .= ' ';
$h .= '';
$h .= ' '.$aside('moviedle').' ';
$h .= '';
$ldq = []; foreach ($faq as $q) { $ldq[] = [$AT.'type' => 'Question', 'name' => $strip($q[0]), 'acceptedAnswer' => [$AT.'type' => 'Answer', 'text' => $strip($q[1])]]; }
$h .= $ld([$AT.'context' => 'https://schema.org', $AT.'graph' => [[$AT.'type' => 'Article', 'headline' => $strip('Moviedle hints and answer for '.$dp.($num !== '' ? ' (#'.$num.')' : '')), 'description' => $strip($R['summary']), 'datePublished' => $date, 'dateModified' => $date, 'mainEntityOfPage' => 'https://gameanswers.com/moviedle/'.$dateSlug, 'author' => [$AT.'type' => 'Person', 'name' => 'Maya Chen', 'url' => 'https://gameanswers.com/author/maya-chen'], 'publisher' => [$AT.'type' => 'Organization', 'name' => 'GameAnswers.com', 'url' => 'https://gameanswers.com']], [$AT.'type' => 'BreadcrumbList', 'itemListElement' => [[$AT.'type' => 'ListItem', 'position' => 1, 'name' => 'Home', 'item' => 'https://gameanswers.com/'], [$AT.'type' => 'ListItem', 'position' => 2, 'name' => 'Moviedle', 'item' => 'https://gameanswers.com/moviedle-answers'], [$AT.'type' => 'ListItem', 'position' => 3, 'name' => $dp, 'item' => 'https://gameanswers.com/moviedle/'.$dateSlug]]], [$AT.'type' => 'FAQPage', 'mainEntity' => $ldq]]]);
return $h;
})(get_defined_vars()) !!}
'; $i = 0; foreach ($arr as $w) { if ($i++ && $sep !== '') $o .= ''.$sep.''; $o .= ''.$e($w).''; } return $o.'
'; };
$btn = function($label, $sel = 'all', $cls = 'ga-btn--peach') { return ''; };
$hintRow = function($n, $label, $text) use ($e) { return ''.$n.'
'; };
$sec = function($id, $title, $inner, $cls = 'ga-sec') { return ''.$label.''.$text.'
'.$title.'
'.$inner.''.$title.'
'.$inner.''; foreach ($pairs as $p) { $o .= '
'; };
$faqHtml = function($faq) { $o = ''.$p[1].''.$p[0].'
'; } return $o.''; foreach ($faq as $q) { $o .= ''; } return $o.'
'; };
$ld = function($obj) { return ''; };
$strip = function($s) { return trim(html_entity_decode(strip_tags((string)$s), ENT_QUOTES, 'UTF-8')); };
$AT = chr(64);
$ico = function($key, $size = '') use ($GAMES, $e) { $gm = $GAMES[$key] ?? null; if (!$gm) return ''; $cls = 'ga-ico'.($size ? ' ga-ico--'.$size : ''); if ($gm[4] !== '') { return ''.$q[0].'+
'.$q[1].'
'; $n = 0; foreach ($keys as $k) { if ($k === $exclude || !isset($GAMES[$k])) continue; if ($n++ >= 6) break; $gm = $GAMES[$k]; $o .= ''.$ico($k, '30').''.$e($gm[0]).' answer'.$e($gm[6]).''; } return $o.'
'; };
$similar = function($keys) use ($GAMES, $ico, $e) { $o = ''; foreach ($keys as $k) { if (!isset($GAMES[$k])) continue; $gm = $GAMES[$k]; $o .= ''.$ico($k).''.$e($gm[0]).' hints'.$e($gm[5]).''; } return $o.'
'; };
$guideCards = function($gkey = '', $max = 3) use ($GUIDES, $e, $gart) { $o = ''; $n = 0; $list = $GUIDES; usort($list, function($a, $b) use ($gkey) { return ($b[3] === $gkey ? 1 : 0) - ($a[3] === $gkey ? 1 : 0); }); foreach ($list as $gd) { if ($n++ >= $max) break; $o .= ''.$gart($gd[0]).''.$e($gd[1]).''.$e($gd[2]).''.$gd[4].' min read'; } return $o.'
'; };
$notFound = function($title, $text, $hub, $hubName) { return ''.$crumb([['Home','/'],['Moviedle','/moviedle-answers'],[($num !== '' ? '#'.$e($num) : $e($dp)),'']], true).'
';
if (count($R['facts'])) $h .= $facts($R['facts']);
$toc = [['Hints', '#hints'], ['Answer today', '#answer'], ['How to solve it', '#solve'], ['Tips for tomorrow', '#tips'], ['Previous puzzles', '#previous'], ['FAQ', '#faq']];
$h .= '';
$h .= ''.$h1.'
The cast one name at a time, in the order the game reveals them, then the movie if you need it. Nothing is revealed until you tap.
'.$byline('Updated '.$e($F($date, 'M j, Y')).' · 2 min read').'Moviedle hints for '.$e($isToday ? 'today' : $dp).($num !== '' ? ' (#'.$e($num).')' : '').'
Cast members in the order the game reveals them, least famous first. Open one at a time and stop as soon as it clicks.
'.$R['hints'].'How to solve Moviedle'.($num !== '' ? ' #'.$e($num) : '').'
Read the first cast member, type a film title and pick it from the suggestions. Wrong guesses reveal more of the cast. Six guesses in total.
Want the full method? Read our Moviedle strategy and tips, or check how to play Moviedle on the hub.
'; $h .= 'Moviedle tips for tomorrow
- Pair the first two names. Two supporting actors together often narrow things to a single film.
- Think of ensembles. Big casts with many recognisable names are usually franchise entries or prestige dramas.
- Use the year when it appears. A release year plus one star is normally enough.
Done for today? Try Framed, Box Office Game, Heardle Decades, all with hints first and answers behind a reveal.
Previous Moviedle puzzles
';
foreach ($prevList as $p) { $pn = $numOf($p['r']); $h .= ''.($pn !== '' ? '#'.$e($pn) : $e($F($p['d'], 'D'))).''.$e($F($p['d'], 'l, F j, Y')).'Hints & answer →'; }
if (!count($prevList)) $h .= '
This is the earliest puzzle in our archive.
'; $h .= ''.($prev ? '← '.$e($F($g($prev, 'date'), 'M j')).'' : '').($next ? ''.$e($F($g($next, 'date'), 'M j')).' →' : '').'Full Moviedle archive →