My omnium-gatherom of scripts and source code.
at main 500 lines 14 kB view raw
1{ 2 "cells": [ 3 { 4 "cell_type": "code", 5 "execution_count": null, 6 "metadata": { 7 "id": "JG_hN7bpagj4" 8 }, 9 "outputs": [], 10 "source": [] 11 }, 12 { 13 "cell_type": "code", 14 "execution_count": 40, 15 "metadata": { 16 "colab": { 17 "base_uri": "https://localhost:8080/" 18 }, 19 "executionInfo": { 20 "elapsed": 6, 21 "status": "ok", 22 "timestamp": 1742185915188, 23 "user": { 24 "displayName": "Michael Alvarez", 25 "userId": "11187554060649581142" 26 }, 27 "user_tz": 240 28 }, 29 "id": "E5G5fu1hPWsV", 30 "outputId": "3fc33ab7-19dd-44b4-8a74-848b1560bee0" 31 }, 32 "outputs": [ 33 { 34 "name": "stdout", 35 "output_type": "stream", 36 "text": [ 37 "\n", 38 " Sudoku dificultad facil: \n", 39 "\n", 40 ". 6 8 | . 2 7 | 9 . 1 \n", 41 ". . . | 9 1 . | . . 8 \n", 42 "1 . 7 | . . 3 | . 4 . \n", 43 "------+-------+------\n", 44 "4 7 . | 2 . 6 | . . . \n", 45 ". 5 1 | 3 4 9 | 7 . . \n", 46 ". 2 . | 8 7 . | 3 5 . \n", 47 "------+-------+------\n", 48 ". 1 9 | . 6 . | . . . \n", 49 ". 3 . | 5 . . | . . 6 \n", 50 "6 . 5 | . . . | 4 . 7 \n", 51 "\n", 52 " Sudoku dificultad media: \n", 53 "\n", 54 ". . 2 | 4 . . | . . . \n", 55 "5 . . | 1 . . | 7 . . \n", 56 ". 6 . | . 8 3 | . . . \n", 57 "------+-------+------\n", 58 "9 . . | . . 8 | . 4 2 \n", 59 ". . 7 | . . . | 5 . 8 \n", 60 "6 . 3 | 2 . . | . . . \n", 61 "------+-------+------\n", 62 ". 4 9 | 7 . 2 | . 5 . \n", 63 "8 . . | . 5 . | 9 . 6 \n", 64 ". . . | 8 . . | . 7 3 \n", 65 "\n", 66 " Sudoku dificultad dificil: \n", 67 "\n", 68 ". 1 . | 5 4 . | . . 8 \n", 69 ". . 7 | 8 3 . | 9 4 . \n", 70 ". 8 . | 6 . . | 1 . . \n", 71 "------+-------+------\n", 72 ". . 2 | 1 . 7 | . . . \n", 73 "7 . . | . . 6 | . . 2 \n", 74 "1 . 6 | 2 . . | . . . \n", 75 "------+-------+------\n", 76 "3 . . | 4 1 5 | . . . \n", 77 ". 2 9 | . . . | 5 . . \n", 78 ". 6 . | . . . | . . 3 \n" 79 ] 80 } 81 ], 82 "source": [ 83 "def imprimir_sudoku_cuadricula(sudoku):\n", 84 " for fila in range(9):\n", 85 " if fila % 3 == 0 and fila != 0: # separar cada 3 filas\n", 86 " print(\"------+-------+------\")\n", 87 "\n", 88 " for columna in range(9):\n", 89 " if columna % 3 == 0 and columna != 0: # separar columnas\n", 90 " print(\"|\", end=\" \")\n", 91 "\n", 92 " num = sudoku[fila][columna]\n", 93 " print(num if num != 0 else \".\", end=\" \") # cambio el 0 por .\n", 94 "\n", 95 " print()\n", 96 "\n", 97 "# Ejemplo de Sudoku dificultad facil\n", 98 "print(\"\\n Sudoku dificultad facil: \\n\")\n", 99 "sudoku_facil = [\n", 100 " [0, 6, 8, 0, 2, 7, 9, 0, 1],\n", 101 " [0, 0, 0, 9, 1, 0, 0, 0, 8],\n", 102 " [1, 0, 7, 0, 0, 3, 0, 4, 0],\n", 103 " [4, 7, 0, 2, 0, 6, 0, 0, 0],\n", 104 " [0, 5, 1, 3, 4, 9, 7, 0, 0],\n", 105 " [0, 2, 0, 8, 7, 0, 3, 5, 0],\n", 106 " [0, 1, 9, 0, 6, 0, 0, 0, 0],\n", 107 " [0, 3, 0, 5, 0, 0, 0, 0, 6],\n", 108 " [6, 0, 5, 0, 0, 0, 4, 0, 7]\n", 109 "]\n", 110 "imprimir_sudoku_cuadricula(sudoku_facil)\n", 111 "\n", 112 "# Ejemplo de Sudoku dificultad media\n", 113 "print(\"\\n Sudoku dificultad media: \\n\")\n", 114 "sudoku_media = [\n", 115 " [0, 0, 2, 4, 0, 0, 0, 0, 0],\n", 116 " [5, 0, 0, 1, 0, 0, 7, 0, 0],\n", 117 " [0, 6, 0, 0, 8, 3, 0, 0, 0],\n", 118 " [9, 0, 0, 0, 0, 8, 0, 4, 2],\n", 119 " [0, 0, 7, 0, 0, 0, 5, 0, 8],\n", 120 " [6, 0, 3, 2, 0, 0, 0, 0, 0],\n", 121 " [0, 4, 9, 7, 0, 2, 0, 5, 0],\n", 122 " [8, 0, 0, 0, 5, 0, 9, 0, 6],\n", 123 " [0, 0, 0, 8, 0, 0, 0, 7, 3]\n", 124 "]\n", 125 "imprimir_sudoku_cuadricula(sudoku_media)\n", 126 "\n", 127 "# Ejemplo de Sudoku dificultad dificil\n", 128 "print(\"\\n Sudoku dificultad dificil: \\n\")\n", 129 "sudoku_dificil = [\n", 130 " [0, 1, 0, 5, 4, 0, 0, 0, 8],\n", 131 " [0, 0, 7, 8, 3, 0, 9, 4, 0],\n", 132 " [0, 8, 0, 6, 0, 0, 1, 0, 0],\n", 133 " [0, 0, 2, 1, 0, 7, 0, 0, 0],\n", 134 " [7, 0, 0, 0, 0, 6, 0, 0, 2],\n", 135 " [1, 0, 6, 2, 0, 0, 0, 0, 0],\n", 136 " [3, 0, 0, 4, 1, 5, 0, 0, 0],\n", 137 " [0, 2, 9, 0, 0, 0, 5, 0, 0],\n", 138 " [0, 6, 0, 0, 0, 0, 0, 0, 3]\n", 139 "]\n", 140 "imprimir_sudoku_cuadricula(sudoku_dificil)" 141 ] 142 }, 143 { 144 "cell_type": "code", 145 "execution_count": 41, 146 "metadata": {}, 147 "outputs": [ 148 { 149 "data": { 150 "text/plain": [ 151 "[1, 5, 4, 8]" 152 ] 153 }, 154 "execution_count": 41, 155 "metadata": {}, 156 "output_type": "execute_result" 157 } 158 ], 159 "source": [ 160 "row = [0, 1, 0, 5, 4, 0, 0, 0, 8]\n", 161 "list(filter(lambda x: x != 0, row))" 162 ] 163 }, 164 { 165 "cell_type": "code", 166 "execution_count": 49, 167 "metadata": {}, 168 "outputs": [], 169 "source": [ 170 "def empty_sudoku():\n", 171 " t = []\n", 172 " for i in range(9):\n", 173 " arr = []\n", 174 " for j in range(9):\n", 175 " arr.append(0)\n", 176 " t.append(arr)\n", 177 " return t" 178 ] 179 }, 180 { 181 "cell_type": "code", 182 "execution_count": 53, 183 "metadata": {}, 184 "outputs": [ 185 { 186 "ename": "SyntaxError", 187 "evalue": "expected ':' (107217274.py, line 20)", 188 "output_type": "error", 189 "traceback": [ 190 "\u001b[0;36m Cell \u001b[0;32mIn[53], line 20\u001b[0;36m\u001b[0m\n\u001b[0;31m if not is_valid_row(row)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m expected ':'\n" 191 ] 192 } 193 ], 194 "source": [ 195 "def is_valid_row(sdk):\n", 196 " for row in sdk:\n", 197 " row1 = list(filter(lambda x: x != 0, row))\n", 198 " if len(set(row1)) != len(row1):\n", 199 " return False\n", 200 " return True\n", 201 "\n", 202 "def transpose(sdk):\n", 203 " t = empty_sudoku()\n", 204 " for i in range(9):\n", 205 " for j in range(9):\n", 206 " t[i][j] = sdk[j][i]\n", 207 " return t\n", 208 "\n", 209 "def is_valid(sdk: list[list[int]]):\n", 210 " for row in sdk:\n", 211 " if not is_valid_row(row):\n", 212 " return False\n", 213 " for row in transpose(sdk):\n", 214 " if not is_valid_row(row):\n", 215 " return False\n", 216 " for i in range(3):\n", 217 " for " 218 ] 219 }, 220 { 221 "cell_type": "code", 222 "execution_count": 51, 223 "metadata": {}, 224 "outputs": [ 225 { 226 "name": "stdout", 227 "output_type": "stream", 228 "text": [ 229 ". . 1 | 4 . . | . . 6 \n", 230 "6 . . | 7 5 2 | 1 3 . \n", 231 "8 . 7 | . 1 . | 9 . 5 \n", 232 "------+-------+------\n", 233 ". 9 . | 2 3 8 | . 5 . \n", 234 "2 1 . | . 4 7 | 6 . . \n", 235 "7 . 3 | 6 9 . | . . . \n", 236 "------+-------+------\n", 237 "9 . . | . 7 3 | . . 4 \n", 238 ". . 4 | . . 5 | . . . \n", 239 "1 8 . | . . . | . 6 7 \n", 240 "\n", 241 ". 6 8 | . 2 7 | 9 . 1 \n", 242 ". . . | 9 1 . | . . 8 \n", 243 "1 . 7 | . . 3 | . 4 . \n", 244 "------+-------+------\n", 245 "4 7 . | 2 . 6 | . . . \n", 246 ". 5 1 | 3 4 9 | 7 . . \n", 247 ". 2 . | 8 7 . | 3 5 . \n", 248 "------+-------+------\n", 249 ". 1 9 | . 6 . | . . . \n", 250 ". 3 . | 5 . . | . . 6 \n", 251 "6 . 5 | . . . | 4 . 7 \n" 252 ] 253 } 254 ], 255 "source": [ 256 "imprimir_sudoku_cuadricula(transpose(sudoku_facil))\n", 257 "print()\n", 258 "imprimir_sudoku_cuadricula(sudoku_facil)" 259 ] 260 }, 261 { 262 "cell_type": "code", 263 "execution_count": 2, 264 "metadata": { 265 "colab": { 266 "base_uri": "https://localhost:8080/" 267 }, 268 "executionInfo": { 269 "elapsed": 42, 270 "status": "ok", 271 "timestamp": 1742185993532, 272 "user": { 273 "displayName": "Michael Alvarez", 274 "userId": "11187554060649581142" 275 }, 276 "user_tz": 240 277 }, 278 "id": "FkfGR2kPRqTk", 279 "outputId": "3476ebc9-91dd-4aa4-8d44-93f5acd0d2ec" 280 }, 281 "outputs": [ 282 { 283 "ename": "NameError", 284 "evalue": "name 'resolver_sudoku' is not defined", 285 "output_type": "error", 286 "traceback": [ 287 "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 288 "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", 289 "Cell \u001b[0;32mIn[2], line 10\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;66;03m# Ejecutar la función\u001b[39;00m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m10\u001b[39m):\n\u001b[0;32m---> 10\u001b[0m \u001b[43mresolver_sudoku\u001b[49m(sudoku_facil)\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# Medir tiempo transcurrido\u001b[39;00m\n\u001b[1;32m 13\u001b[0m end_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n", 290 "\u001b[0;31mNameError\u001b[0m: name 'resolver_sudoku' is not defined" 291 ] 292 } 293 ], 294 "source": [ 295 "import time\n", 296 "\n", 297 "# Facil\n", 298 "\n", 299 "# Iniciar tiempo\n", 300 "start_time = time.time()\n", 301 "\n", 302 "# Ejecutar la función\n", 303 "for k in range(10):\n", 304 " resolver_sudoku(sudoku_facil)\n", 305 "\n", 306 "# Medir tiempo transcurrido\n", 307 "end_time = time.time()\n", 308 "elapsed_time = (end_time - start_time)/10\n", 309 "\n", 310 "print(f\"Tiempo promedio de ejecución: {elapsed_time*1e3:.3f} milisegundos\")\n", 311 "\n", 312 "\n", 313 "# Media\n", 314 "\n", 315 "# Iniciar tiempo\n", 316 "start_time = time.time()\n", 317 "\n", 318 "# Ejecutar la función\n", 319 "for k in range(10):\n", 320 " resolver_sudoku(sudoku_media)\n", 321 "\n", 322 "# Medir tiempo transcurrido\n", 323 "end_time = time.time()\n", 324 "elapsed_time = (end_time - start_time)/10\n", 325 "\n", 326 "print(f\"Tiempo promedio de ejecución: {elapsed_time*1e3:.3f} milisegundos\")\n", 327 "\n", 328 "\n", 329 "# Dificil\n", 330 "\n", 331 "# Iniciar tiempo\n", 332 "start_time = time.time()\n", 333 "\n", 334 "# Ejecutar la función\n", 335 "for k in range(10):\n", 336 " resolver_sudoku(sudoku_dificil)\n", 337 "\n", 338 "# Medir tiempo transcurrido\n", 339 "end_time = time.time()\n", 340 "elapsed_time = (end_time - start_time)/10\n", 341 "\n", 342 "print(f\"Tiempo promedio de ejecución: {elapsed_time*1e3:.3f} milisegundos\")" 343 ] 344 }, 345 { 346 "cell_type": "code", 347 "execution_count": null, 348 "metadata": { 349 "colab": { 350 "base_uri": "https://localhost:8080/" 351 }, 352 "executionInfo": { 353 "elapsed": 46, 354 "status": "ok", 355 "timestamp": 1742186205363, 356 "user": { 357 "displayName": "Michael Alvarez", 358 "userId": "11187554060649581142" 359 }, 360 "user_tz": 240 361 }, 362 "id": "dmko6uSjY4pq", 363 "outputId": "54e00e01-c7ed-45cf-9960-5416825bee96" 364 }, 365 "outputs": [ 366 { 367 "name": "stdout", 368 "output_type": "stream", 369 "text": [ 370 "5 6 8 | 4 2 7 | 9 3 1 \n", 371 "3 4 2 | 9 1 5 | 6 7 8 \n", 372 "1 9 7 | 6 8 3 | 2 4 5 \n", 373 "------+-------+------\n", 374 "4 7 3 | 2 5 6 | 8 1 9 \n", 375 "8 5 1 | 3 4 9 | 7 6 2 \n", 376 "9 2 6 | 8 7 1 | 3 5 4 \n", 377 "------+-------+------\n", 378 "2 1 9 | 7 6 4 | 5 8 3 \n", 379 "7 3 4 | 5 9 8 | 1 2 6 \n", 380 "6 8 5 | 1 3 2 | 4 9 7 \n" 381 ] 382 } 383 ], 384 "source": [ 385 "imprimir_sudoku_cuadricula(sudoku_facil)" 386 ] 387 }, 388 { 389 "cell_type": "code", 390 "execution_count": null, 391 "metadata": { 392 "colab": { 393 "base_uri": "https://localhost:8080/" 394 }, 395 "executionInfo": { 396 "elapsed": 5, 397 "status": "ok", 398 "timestamp": 1742186208566, 399 "user": { 400 "displayName": "Michael Alvarez", 401 "userId": "11187554060649581142" 402 }, 403 "user_tz": 240 404 }, 405 "id": "higAJ5-JY7md", 406 "outputId": "0a1b09d2-d145-40b9-c9c2-838373afdd6f" 407 }, 408 "outputs": [ 409 { 410 "name": "stdout", 411 "output_type": "stream", 412 "text": [ 413 "1 3 2 | 4 9 7 | 6 8 5 \n", 414 "5 9 8 | 1 2 6 | 7 3 4 \n", 415 "7 6 4 | 5 8 3 | 2 1 9 \n", 416 "------+-------+------\n", 417 "9 1 5 | 6 7 8 | 3 4 2 \n", 418 "4 2 7 | 9 3 1 | 5 6 8 \n", 419 "6 8 3 | 2 4 5 | 1 9 7 \n", 420 "------+-------+------\n", 421 "3 4 9 | 7 6 2 | 8 5 1 \n", 422 "8 7 1 | 3 5 4 | 9 2 6 \n", 423 "2 5 6 | 8 1 9 | 4 7 3 \n" 424 ] 425 } 426 ], 427 "source": [ 428 "imprimir_sudoku_cuadricula(sudoku_media)" 429 ] 430 }, 431 { 432 "cell_type": "code", 433 "execution_count": null, 434 "metadata": { 435 "colab": { 436 "base_uri": "https://localhost:8080/" 437 }, 438 "executionInfo": { 439 "elapsed": 42, 440 "status": "ok", 441 "timestamp": 1742186158030, 442 "user": { 443 "displayName": "Michael Alvarez", 444 "userId": "11187554060649581142" 445 }, 446 "user_tz": 240 447 }, 448 "id": "g7IlCnnQYwqy", 449 "outputId": "b680845f-c272-4f40-8501-d5fa6c560ad9" 450 }, 451 "outputs": [ 452 { 453 "name": "stdout", 454 "output_type": "stream", 455 "text": [ 456 "6 1 3 | 5 4 9 | 7 2 8 \n", 457 "2 5 7 | 8 3 1 | 9 4 6 \n", 458 "9 8 4 | 6 7 2 | 1 3 5 \n", 459 "------+-------+------\n", 460 "8 3 2 | 1 5 7 | 6 9 4 \n", 461 "7 4 5 | 3 9 6 | 8 1 2 \n", 462 "1 9 6 | 2 8 4 | 3 5 7 \n", 463 "------+-------+------\n", 464 "3 7 8 | 4 1 5 | 2 6 9 \n", 465 "4 2 9 | 7 6 3 | 5 8 1 \n", 466 "5 6 1 | 9 2 8 | 4 7 3 \n" 467 ] 468 } 469 ], 470 "source": [ 471 "imprimir_sudoku_cuadricula(sudoku_dificil)" 472 ] 473 } 474 ], 475 "metadata": { 476 "colab": { 477 "authorship_tag": "ABX9TyN2ZRE3aWGpVvcivE9NQr6Y", 478 "provenance": [] 479 }, 480 "kernelspec": { 481 "display_name": "Python 3 (ipykernel)", 482 "language": "python", 483 "name": "python3" 484 }, 485 "language_info": { 486 "codemirror_mode": { 487 "name": "ipython", 488 "version": 3 489 }, 490 "file_extension": ".py", 491 "mimetype": "text/x-python", 492 "name": "python", 493 "nbconvert_exporter": "python", 494 "pygments_lexer": "ipython3", 495 "version": "3.12.9" 496 } 497 }, 498 "nbformat": 4, 499 "nbformat_minor": 4 500}