My omnium-gatherom of scripts and source code.
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}