workspace/knowledge-base/reference/erp-inmobiliaria-legacy/gamilit/database/crossword-from-image-final.py
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- Configure workspace Git repository with comprehensive .gitignore
- Add Odoo as submodule for ERP reference code
- Include documentation: SETUP.md, GIT-STRUCTURE.md
- Add gitignore templates for projects (backend, frontend, database)
- Structure supports independent repos per project/subproject level

Workspace includes:
- core/ - Reusable patterns, modules, orchestration system
- projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.)
- knowledge-base/ - Reference code and patterns (includes Odoo submodule)
- devtools/ - Development tools and templates
- customers/ - Client implementations template

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 10:44:23 -06:00

175 lines
4.9 KiB
Python

#!/usr/bin/env python3
"""
Crucigrama basado en la imagen "Distribución real.jpg"
Implementando las palabras visibles + inferidas
"""
# Palabras CLARAMENTE visibles en la imagen:
# 1. SORBONA (horizontal)
# 2. NOBEL (horizontal)
# 3. RADIOACTIVIDAD (horizontal)
# 4. RADIO (vertical)
# Palabras que DEBEN estar según las pistas pero no las veo claramente:
# 5. POLONIA (vertical - "País natal de Marie")
# 6. POLONIO (vertical - "Elemento nombrado por Polonia")
# 7. PIERRE (vertical - "Esposo de Marie")
# Basándome en el layout de la imagen, voy a crear un diseño coherente:
words = [
# Horizontales (visibles claramente)
{
"id": "h1",
"number": 1,
"direction": "horizontal",
"clue": "Universidad donde estudió",
"answer": "SORBONA",
"startRow": 1,
"startCol": 1,
"length": 7
},
{
"id": "h2",
"number": 2,
"direction": "horizontal",
"clue": "Premio recibido en 1903 y 1911",
"answer": "NOBEL",
"startRow": 2,
"startCol": 2,
"length": 5
},
{
"id": "h3",
"number": 3,
"direction": "horizontal",
"clue": "Fenómeno de emisión espontánea de radiación descubierto por Marie",
"answer": "RADIOACTIVIDAD",
"startRow": 4,
"startCol": 1,
"length": 14
},
# Verticales
{
"id": "v1",
"number": 4,
"direction": "vertical",
"clue": "Segundo elemento descubierto",
"answer": "RADIO",
"startRow": 4,
"startCol": 0,
"length": 5
},
{
"id": "v2",
"number": 5,
"direction": "vertical",
"clue": "País natal de Marie",
"answer": "POLONIA",
"startRow": 0,
"startCol": 2,
"length": 7
},
{
"id": "v3",
"number": 6,
"direction": "vertical",
"clue": "Elemento químico nombrado en honor a Polonia",
"answer": "POLONIO",
"startRow": 1,
"startCol": 5,
"length": 7
},
{
"id": "v4",
"number": 7,
"direction": "vertical",
"clue": "Esposo de Marie",
"answer": "PIERRE",
"startRow": 1,
"startCol": 3,
"length": 6
},
]
# Crear grid
grid = [[' ' for _ in range(16)] for _ in range(12)]
# Colocar palabras
for word in words:
answer = word['answer']
row = word['startRow']
col = word['startCol']
direction = word['direction']
for i, letter in enumerate(answer):
if direction == 'horizontal':
grid[row][col + i] = letter
else:
grid[row + i][col] = letter
# Mostrar grid
print("=" * 75)
print("CRUCIGRAMA FINAL - Basado en imagen + pistas")
print("=" * 75)
print(" ", end="")
for c in range(16):
print(f"{c:2}", end=" ")
print()
for r in range(12):
print(f"{r:2}: ", end="")
for c in range(16):
cell = grid[r][c]
if cell == ' ':
print(" . ", end="")
else:
print(f" {cell} ", end="")
print()
# Encontrar intersecciones
print("\n" + "=" * 75)
print("INTERSECCIONES:")
print("=" * 75)
intersections = []
for i, word1 in enumerate(words):
for j, word2 in enumerate(words):
if i >= j or word1['direction'] == word2['direction']:
continue
# Calcular posiciones
positions1 = []
positions2 = []
for k, letter in enumerate(word1['answer']):
if word1['direction'] == 'horizontal':
positions1.append((word1['startRow'], word1['startCol'] + k, letter))
else:
positions1.append((word1['startRow'] + k, word1['startCol'], letter))
for k, letter in enumerate(word2['answer']):
if word2['direction'] == 'horizontal':
positions2.append((word2['startRow'], word2['startCol'] + k, letter))
else:
positions2.append((word2['startRow'] + k, word2['startCol'], letter))
# Buscar intersecciones
for pos1 in positions1:
for pos2 in positions2:
if pos1[0] == pos2[0] and pos1[1] == pos2[1]:
if pos1[2] == pos2[2]:
intersections.append(True)
print(f"{word1['id']} ({word1['answer']}) ∩ {word2['id']} ({word2['answer']}) en ({pos1[0]},{pos1[1]}): {pos1[2]} = {pos2[2]}")
else:
print(f"✗ CONFLICTO: {word1['id']} ({word1['answer']}) ∩ {word2['id']} ({word2['answer']}) en ({pos1[0]},{pos1[1]}): {pos1[2]}{pos2[2]}")
print(f"\nTotal de intersecciones válidas: {len(intersections)}")
# Generar JSON para SQL
print("\n" + "=" * 75)
print("JSON PARA SQL:")
print("=" * 75)
import json
print(json.dumps(words, indent=2, ensure_ascii=False))