Javascript, HTML, CSS Code
Copy
<html>
<head>
<script type="text/javascript"> window.addEventListener('error', function(event) { var message = JSON.parse(JSON.stringify(event.message)); var source = event.filename; var lineno = event.lineno; var colno = event.colno; var error = event.error; window.parent.postMessage({ type: 'iframeError', details: { message: message, source: source, lineno: lineno, colno: colno, error: error ? error.stack : '' } }, '*'); }); window.addEventListener('unhandledrejection', function(event) { window.parent.postMessage({ type: 'iframePromiseRejection', details: { reason: event.reason } }, '*'); }); </script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Sudoku Solver</title>
<meta name="description" content="A fun and colorful Sudoku solver that allows you to input the cell values and solves the puzzle for you.">
<meta name="keywords" content="sudoku, solver, puzzle, game, web app">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<!-- Built-In Functions for Apps -->
<script type="text/javascript">
var localStoragePrefix = "ct-168116959844885";
var lastSave = 0;
// save to localstorage
function saveLocal(data) {
if (Date.now() - lastSave < 1000) {
return;
}
// save to cookie
let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict";
cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString();
document.cookie = cookie;
lastSave = Date.now();
}
// load from localstorage
function loadLocal() {
var cookiePrefix = localStoragePrefix + "=";
var cookieStart = document.cookie.indexOf(cookiePrefix);
if (cookieStart > -1) {
let cookieEnd = document.cookie.indexOf(";", cookieStart);
if (cookieEnd == -1) {
cookieEnd = document.cookie.length;
}
var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd);
return JSON.parse(cookieData);
}
}
</script>
<script type="text/javascript">
function isValid(board, row, col, num) {
for (let i = 0; i < 9; i++) {
if (board[row][i] == num || board[i][col] == num) {
return false;
}
}
let startRow = row - row % 3;
let startCol = col - col % 3;
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (board[i + startRow][j + startCol] == num) {
return false;
}
}
}
return true;
}
function sudokuSolver(board) {
let row = -1;
let col = -1;
let isEmpty = true;
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
if (board[i][j] == 0) {
row = i;
col = j;
isEmpty = false;
break;
}
}
if (!isEmpty) {
break;
}
}
if (isEmpty) {
return true;
}
for (let num = 1; num <= 9; num++) {
if (isValid(board, row, col, num)) {
board[row][col] = num;
if (sudokuSolver(board)) {
return true;
} else {
board[row][col] = 0;
}
}
}
return false;
}
function solveSudoku() {
let board = [];
for (let i = 0; i < 9; i++) {
board[i] = [];
for (let j = 0; j < 9; j++) {
board[i][j] = Number($("#cell-" + i + "-" + j).val()) || 0;
}
}
if (sudokuSolver(board)) {
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
$("#cell-" + i + "-" + j).val(board[i][j]);
}
}
} else {
alert("No solution found!");
}
}
function clearSudoku() {
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
$("#cell-" + i + "-" + j).val("");
}
}
}
</script>
<style>
body {
background: linear-gradient(135deg, #f06, #fe9);
font-family: 'Comic Sans MS', sans-serif;
}
#main-container {
margin-top: 50px;
}
input[type="number"] {
max-width: 50px;
height: 50px;
text-align: center;
font-size: 20px;
font-weight: bold;
}
.sudoku-row {
display: flex;
justify-content: center;
}
.sudoku-cell {
margin: 2px;
background-color: #fff;
}
.sudoku-box {
display: inline-block;
border: 3px solid #000;
}
.btn {
font-size: 20px;
font-weight: bold;
margin: 10px;
}
</style>
<link rel="canonical" href="https://calculator.tools/prompt/146/">
<meta charset="utf-8">
</head>
<body>
<div id="main-container" class="container text-center">
<h1 class="my-4">🤖 Sudoku Solver 🧩</h1>
<div id="sudoku-grid">
<div class="sudoku-row">
<div class="sudoku-box">
{% for i in range(3) %}
<div class="sudoku-row">
{% for j in range(3) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
<div class="sudoku-box">
{% for i in range(3) %}
<div class="sudoku-row">
{% for j in range(3, 6) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
<div class="sudoku-box">
{% for i in range(3) %}
<div class="sudoku-row">
{% for j in range(6, 9) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
</div>
<div class="sudoku-row">
<div class="sudoku-box">
{% for i in range(3, 6) %}
<div class="sudoku-row">
{% for j in range(3) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
<div class="sudoku-box">
{% for i in range(3, 6) %}
<div class="sudoku-row">
{% for j in range(3, 6) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
<div class="sudoku-box">
{% for i in range(3, 6) %}
<div class="sudoku-row">
{% for j in range(6, 9) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
</div>
<div class="sudoku-row">
<div class="sudoku-box">
{% for i in range(6, 9) %}
<div class="sudoku-row">
{% for j in range(3) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
<div class="sudoku-box">
{% for i in range(6, 9) %}
<div class="sudoku-row">
{% for j in range(3, 6) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
<div class="sudoku-box">
{% for i in range(6, 9) %}
<div class="sudoku-row">
{% for j in range(6, 9) %}
<input type="number" min="1" max="9" class="sudoku-cell" id="cell-{{i}}-{{j}}">
{% endfor %}
</div>
{% endfor %}
</div>
</div>
</div>
<button class="btn btn-primary" onclick="solveSudoku()">Solve 🔍</button>
<button class="btn btn-warning" onclick="clearSudoku()">Clear 🗑️</button>
</div>
<script type="text/javascript"> var localStoragePrefix = "ct-{{ cachebreaker }}"; var lastSave = 0; function saveLocal(data) { if (Date.now() - lastSave < 1000) { return; } let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict"; cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString(); document.cookie = cookie; lastSave = Date.now(); } function loadLocal() { var cookiePrefix = localStoragePrefix + "="; var cookieStart = document.cookie.indexOf(cookiePrefix); if (cookieStart > -1) { let cookieEnd = document.cookie.indexOf(";", cookieStart); if (cookieEnd == -1) { cookieEnd = document.cookie.length; } var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd); return JSON.parse(cookieData); } } </script>
<script type="text/javascript"> window.addEventListener('load', function() { var observer = new MutationObserver(function() { window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); observer.observe(document.body, {attributes: true, childList: true, subtree: true}); window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); </script>
</body>
</html>