Skip to content

Commit 8c4e9e7

Browse files
committed
Merge branch 'dev'
2 parents f8142c9 + b7942fb commit 8c4e9e7

File tree

17 files changed

+1014
-13
lines changed

17 files changed

+1014
-13
lines changed

.github/workflows/tests-gwa-ci-cd.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,5 @@ jobs:
6868

6969
- name: Check lint with Ruff
7070
run: |
71-
poetry run ruff --format=github
71+
poetry run ruff check --fix
7272
continue-on-error: true

docs/user_guide/dojos-resolvidos.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88

99
---
1010

11-
142 dojos resolvidos
11+
144 dojos resolvidos
1212

1313
---
1414

1515

1616

1717
### 2024
1818

19+
- [Dojo20241211 — Crie número válidos para CNPJ](https://github.com/incolume-jedi/coding-dojo/tree/dev/incolume/py/coding_dojo_jedi/dojo20241211/README.md){:target="_blank"}
20+
- [Dojo20241128 — Sudoku válido](https://github.com/incolume-jedi/coding-dojo/tree/dev/incolume/py/coding_dojo_jedi/dojo20241128/README.md){:target="_blank"}
1921
- [Dojo20241127 — Criar dígitos verificadores para CNPJ](https://github.com/incolume-jedi/coding-dojo/tree/dev/incolume/py/coding_dojo_jedi/dojo20241127/README.md){:target="_blank"}
2022
- [Dojo20241126 — New in Python 3.13: Replace](https://github.com/incolume-jedi/coding-dojo/tree/dev/incolume/py/coding_dojo_jedi/dojo20241126/README.md){:target="_blank"}
2123
- [Dojo20241125 — Reverse Only Letters](https://github.com/incolume-jedi/coding-dojo/tree/dev/incolume/py/coding_dojo_jedi/dojo20241125/README.md){:target="_blank"}
@@ -172,3 +174,4 @@
172174
---
173175

174176
Copyrigth © **Incolume.com.br** since 2010
177+

incolume/py/coding_dojo_jedi/README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88

99
---
1010

11-
142 dojos resolvidos
11+
144 dojos resolvidos
1212

1313
---
1414

15+
- [Dojo20241211 — Crie número válidos para CNPJ](dojo20241211/README.md)
16+
- [Dojo20241128 — Sudoku válido](dojo20241128/README.md)
1517
- [Dojo20241127 — Criar dígitos verificadores para CNPJ](dojo20241127/README.md)
1618
- [Dojo20241126 — New in Python 3.13: Replace](dojo20241126/README.md)
1719
- [Dojo20241125 — Reverse Only Letters](dojo20241125/README.md)
@@ -156,3 +158,4 @@
156158
---
157159

158160
Copyrigth © **Incolume.com.br** since 2010
161+

incolume/py/coding_dojo_jedi/dojo20220721/test_20220721.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@pytest.mark.webtest
1212
def test_saudacao(capsys) -> None:
1313
"""Test saudacao."""
14-
timeout = float(environ.get('TIMEOUT', 9))
14+
timeout = float(environ.get('TIMEOUT', '9'))
1515
saudacao(timeout)
1616
output = capsys.readouterr()
1717
assert output.out.strip() == 'Hello, Luke Skywalker!'

incolume/py/coding_dojo_jedi/dojo20220722/test_20220722.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ class TestCase:
117117
)
118118
def test_research(self, entrance, expected) -> None:
119119
"""Test research."""
120-
timeout = float(environ.get('TIMEOUT', 0.8))
120+
timeout = float(environ.get('TIMEOUT', '0.8'))
121121
assert research(entrance, timeout=timeout) == expected
122122

123123
@pytest.mark.parametrize(
@@ -144,5 +144,5 @@ def test_research_mock(self, entrance, expected) -> None:
144144

145145
m_req.side_effect = [objreq, objreq2]
146146

147-
timeout = float(environ.get('TIMEOUT', 0.8))
147+
timeout = float(environ.get('TIMEOUT', '0.8'))
148148
assert research(entrance, timeout=timeout) == expected

incolume/py/coding_dojo_jedi/dojo20220725/test_20220725.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@
152152
)
153153
def test_research(entrance, expected) -> None:
154154
"""Test research."""
155-
timeout = float(environ.get('TIMEOUT', 0.8))
155+
timeout = float(environ.get('TIMEOUT', '0.8'))
156156
assert research(entrance, timeout=timeout) == expected
157157

158158

@@ -328,7 +328,7 @@ def test_research_mock(entrance, expected) -> None:
328328
] # Especificando comportamentos diferentes em chamadas consecutivas do mock.
329329

330330
timeout = float(
331-
environ.get('TIMEOUT', 0.8),
331+
environ.get('TIMEOUT', '0.8'),
332332
) # Convertendo valor de TIMEOUT para float.
333333
assert (
334334
research(entrance, timeout=timeout) == expected

incolume/py/coding_dojo_jedi/dojo20220727/test_20220727.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@
177177
)
178178
def test_research(entrance, expected) -> None:
179179
"""Test research."""
180-
timeout = float(environ.get('TIMEOUT', 0.8))
180+
timeout = float(environ.get('TIMEOUT', '0.8'))
181181
assert research(entrance, timeout=timeout) == expected
182182

183183

@@ -359,5 +359,5 @@ def test_research_mock(entrance, expected) -> None:
359359
objreq2.json.return_value = {'detail': 'Not found'}
360360

361361
with mock.patch('requests.get', side_effect=[response_mock, objreq2]):
362-
timeout = float(environ.get('TIMEOUT', 0.8))
362+
timeout = float(environ.get('TIMEOUT', '0.8'))
363363
assert research(entrance, timeout=timeout) == expected

incolume/py/coding_dojo_jedi/dojo20220730/test_20220730.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class TestCase:
182182
)
183183
def test_research(self, entrance, expected) -> None:
184184
"""Test research."""
185-
timeout = float(environ.get('TIMEOUT', 0.8))
185+
timeout = float(environ.get('TIMEOUT', '0.8'))
186186
assert research(entrance, timeout=timeout) == expected
187187

188188
@pytest.mark.parametrize(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Coding Dojo
2+
3+
**Guilda JEDI Incolume - Grupo Python Incolume**
4+
5+
- _[Seja membro da Guilda JEDI Incolume](https://discord.gg/eBNamXVtBW)_
6+
7+
---
8+
9+
## Problema
10+
11+
**Sudoku válido**
12+
13+
Determine se um 9 x 9tabuleiro de Sudoku é válido. Apenas as células preenchidas precisam ser validadas de acordo com as seguintes regras :
14+
15+
1. Cada linha deve conter os dígitos 1-9 sem repetição.
16+
1. Cada coluna deve conter os dígitos 1-9 sem repetição.
17+
1. Cada uma das nove 3 x 3 subcaixas da grelha deve conter os dígitos 1-9 sem repetição.
18+
19+
20+
Observação:
21+
22+
- Um tabuleiro de Sudoku (parcialmente preenchido) pode ser válido, mas não é necessariamente solucionável.
23+
- Apenas as células preenchidas precisam ser validadas de acordo com as regras mencionadas.
24+
25+
26+
## Exemplos
27+
28+
Entrada:
29+
```
30+
Exemplo 1:
31+
32+
placa =
33+
[["5","3",".",".","7",".",".",".","]
34+
,["6",".",".","1","9","5",".",".","]
35+
,[".","9","8",".",".",".","6","."]
36+
,["8",".",".",".","6",".",".","3"]
37+
,["4",".",".","8",".","3",".",".","1"]
38+
,["7",".",".",".","2",".",".","6"]
39+
,[".","6",".",".",".","2","8","."]
40+
,[".",".",".","4","1","9",".",".","5"]
41+
,[".",".",".",".","8",".","7","9"]]
42+
```
43+
Saída: verdadeiro
44+
45+
Exemplo 2:
46+
47+
Entrada:
48+
```
49+
placa =
50+
[["8","3",".",".","7",".",".",".","]
51+
,["6",".",".","1","9","5",".",".","]
52+
,[".","9","8",".",".",".","6","."]
53+
,["8",".",".",".","6",".",".","3"]
54+
,["4",".",".","8",".","3",".",".","1"]
55+
,["7",".",".",".","2",".",".","6"]
56+
,[".","6",".",".",".","2","8","."]
57+
,[".",".",".","4","1","9",".",".","5"]
58+
,[".",".",".",".","8",".","7","9"]]
59+
```
60+
Saída: false
61+
62+
Explicação:
63+
64+
Igual ao Exemplo 1, exceto com o 5 no canto superior esquerdo sendo modificado para 8 . Como há dois 8 na subcaixa 3x3 superior esquerda, é inválido.
65+
66+
67+
Restrições:
68+
-
69+
class Solution:
70+
def isValidSudoku(self, board: List[List[str]]) -> bool:
71+
72+
- board.length == 9
73+
- board[i].length == 9
74+
- board[i][j]é um dígito 1-9 ou '.'
75+
76+
77+
<details>
78+
<summary>Spoiler?</summary>
79+
Considerar em caso de fatoração:
80+
81+
> modo pythônico
82+
> sem condicionais
83+
> estruturas performáticas
84+
> redução de complexidade ciclomática
85+
> análise assintótica de algoritmos (big O)
86+
87+
</details>
88+
89+
N/A - Exemplos de solução e resposta do problema. Geralmente utilizado para validar os testes do TDD.
90+
91+
## Artefatos
92+
93+
- [dojo](__init__.py)
94+
- [tests](test_20241128.py)
95+
96+
97+
## Referências
98+
- [Sudoku válido](https://leetcode.com/problems/valid-sudoku/)
99+
N/A - Referências para o dojo, o problema ou para elicidações extras.
100+
101+
---
102+
103+
Copyright &copy; **incolume.com.br** since 2010

0 commit comments

Comments
 (0)