%p.summary Wittle gives you daily randomly-generated puzzles in the style of those from the 2016 indie game, The Witness. There are three difficulties of puzzles to choose from: %h2#current-date= @normal_puzzle.created_at.localtime.strftime("%B %-d, %Y") %nav#choose-difficulty #normal-link = link_to "Normal", @normal_puzzle - if @normal_solved %p.puzzle-status Solved! - elsif @normal_started %p.puzzle-status Started #hard-link = link_to "Hard", @hard_puzzle - if @hard_solved %p.puzzle-status Solved! - elsif @hard_started %p.puzzle-status Started #expert-link = link_to "Expert", @expert_puzzle - if @expert_solved %p.puzzle-status Solved! - elsif @expert_started %p.puzzle-status Started #new-puzzles - if @normal_puzzle.created_at.localtime.to_date != DateTime.now.localtime.to_date New puzzles are being generated... - else Time until new puzzles: 00:00:00 :javascript function pad(val) { var valString = val + "" if (valString.length < 2) { return "0" + valString } else { return valString } } function setTime() { --totalSeconds if (totalSeconds == 0) { $("#new-puzzles").text("Refresh the page for today's puzzles!") clearInterval(timerInterval) } else { $("#seconds").text(pad(totalSeconds%60)) $("#minutes").text(pad(parseInt(totalSeconds/60)%60)) $("#hours").text(pad(parseInt(parseInt(totalSeconds/60)/60))) } } var totalSeconds = #{(Time.now.tomorrow.beginning_of_day - Time.now).to_i + 1} setTime() var timerInterval = setInterval(setTime, 1000); %p.summary Wittle was created by Hatkirby, with major help from Sigma144 (who wrote the puzzle generation code) and jbzdarkid (who wrote the puzzle solving web interface). The source code is available here. If you encounter any bugs, or have feedback regarding puzzle difficulty level, feel free to contact me! I am hatkirby on Discord, and you can also find me in the Witness Speedrunning server. %p.summary There is an archive of past puzzles for those interested.