###### tags `python-kata`
# Python, kata e almorzo / Python, kata y desayuno - 2º Edición
Hola!
Breves instrucciones a continuación para que todo vaya fluido!
1. Nos juntaremos en grupos de 2-3 personas
1. Elegiremos conjuntamente y al "azar" un ejercicio de https://leetcode.com/ o https://www.hackerrank.com/
1. Resolveremos el problema en iteraciones de 10 minutos.
1. Al final cada iteración decideremos entre todos los grupos si damos finalizado el problema o continuamos iterando para refactorizar u optimizar.
1. Finalizado el problema, copiaremos la solución en este documento en el espacio reservado para cada grupo.
1. Revisaremos y comentaremos soluciones de cada grupo.
1. Revisaremos soluciones de otros usuarios en Leetcode o Hackerank en Python, y en otros lenguajes.
1. Si queda tiempo volvemos al _Paso 2_.
Además..
1. No es necesario que todo el mundo traiga portatil (1 de cada 2 o 3 es suficiente) ni es necesario instalar nada.
1. Se puede acompañar de café, te, galletas, desayuno inglés...(recuerda teclear sin chocolate en los dedos)
2. No importa el nivel o la experiencia individual, lo importante es aprender todos de todos.
3. La reunión es informal y el objetivo es aprender pasando un buen rato!
Anteriores ediciones:
- [Primera Edición](https://hackmd.io/imuIhPbvRHugi0ocWmckUQ?edit)
## Ejercicios:
* Defanging an IP Address / https://leetcode.com/problems/defanging-an-ip-address/
* Goat Latin / https://leetcode.com/problems/goat-latin/
### Grupo 1 - Componentes:
- David
- Mireia
_Código:_
```python
class Solution:
def defangIPaddr(self, address: str) -> str:
return address.replace(".", "[.]")
```
_Código:_
```python
class Solution:
def toGoatLatin(self, S: str) -> str:
new_words = []
for n, word in enumerate(S.split(" ")):
if word[0].lower() not in {"a", "e", "i", "o", "u"}:
word = word[1:] + word[0]
word += "ma" + ("a" * (n + 1))
new_words.append(word)
return " ".join(new_words)
class Solution2:
def toGoatLatin(self, S: str) -> str:
new_words = []
for n, word in enumerate(S.split(" ")):
# not in 'aeiou'
if word[0].lower() not in {"a", "e", "i", "o", "u"}:
word = word[1:] + word[0]
new_words.append(f"{word}ma{'a' * (n + 1)}")
return " ".join(new_words)
```
### Grupo 2 - Componentes:
- Luis
- Alex
- Dani
_Código:_
```python
class Solution:
def defangIPaddr(self, address: str) -> str:
# return address.replace('.', '[.]')
result: str = ""
for char in address:
if char == '.':
result += '[.]'
else:
result += char
return result
```
_Código:_
```python
class Solution:
def toGoatLatin(self, sentence: str) -> str:
tail = 'a'
def translate(word: str, position: int):
if word[0] not in 'aeiouAEIOU':
word = word[1:] + word[0]
word += 'maa' + tail * position
return word
return " ".join(
[translate(word, position)
for position, word in enumerate(sentence.split())]
)
```
### Grupo 3 - Componentes:
_Código:_
Jose
Sergio
### Grupo 4 - Componentes:
_Código:_
Xurxo
Félix
_Código:_
```python
import re
class Solution:
def defangIPaddr(self, address: str) -> str:
#return address.replace('.','[.]')
# return re.sub(r"\.",'[.]' , address)
return ''.join(a if a !='.' else '[.]' for a in address)
class Solution:
def toGoatLatin(self, S: str) -> str:
vowels ='aeiouAEIOU'
newwords = []
for i, word in enumerate (S.split(' '), 1):
if word[0] in vowels:
word += 'ma'
else:
word = word[1:] + word[0] + 'ma'
word += ('a' * i)
newwords.append (word)
return ' '.join(newwords)
```
## FRIKADAS
* https://leetcode.com/problems/sudoku-solver/
* https://en.wikipedia.org/wiki/Sudoku_solving_algorithms