Skip to content

Latest commit

 

History

History
219 lines (177 loc) · 6.15 KB

Python, kata e almorzo _ Python, kata y desayuno - 7ª Edición (Virtual Meetup).md

File metadata and controls

219 lines (177 loc) · 6.15 KB

Python, kata e almorzo / Python, virtual kata y desayuno - 7ª Edición (Virtual Meetup)

¡¡ESTE DOCUMENTO SE ACTUALIZARÁ ANTES Y DURANTE EL EVENTO!!

Hola de nuevo!

Debido a situación actual la sesión la realizaremos de manera virtual.

Y ahora más que nunca, breves instrucciones a continuación para que todo vaya fluido!

  1. Nos juntaremos en la sala virtual que publicaremos minutos antes del evento.
  2. Actualizaremos este documento con un primer ejercicio a realizar de https://leetcode.com/
  3. Nos dividiremos en grupos de 2-3 personas para realizar el ejercicio. Uno de los participantes (driver/conductor) debe compartir pantalla mientra que el resto actuan como navegadores u observadores.
  4. Resolveremos el problema en iteraciones de 10 minutos.
  5. Al final cada iteración decideremos entre todos los grupos si damos finalizado el problema o continuamos iterando para refactorizar.
  6. Finalizado el problema, retomaremos la reunión en la sala principal y copiaremos la solución en este documento en el espacio reservado para cada grupo.
  7. Revisaremos y comentaremos soluciones de cada grupo.
  8. Revisaremos soluciones de otros usuarios en Leetcode en Python, y en otros lenguajes.
  9. Si queda tiempo volvemos al Paso 2.

Además..

  1. Los grupos de 2-3 personas se reunirán en salas independientes y el conductor puede ir rotando en cada ejercicio.
  2. Se puede acompañar de café, te, galletas, desayuno inglés...(recuerda teclear sin chocolate en los dedos)
  3. No importa el nivel o la experiencia individual, lo importante es aprender todos de todos.
  4. La reunión es informal y el objetivo es aprender pasando un buen rato!

Anteriores ediciones:

Datos de acceso

Ejercicios

Grupo 1

Código:

# Work in progress
class Solution:
    def removeDuplicates(self, S: str) -> str:
        if len(S) < 2:
            return S
        while True:
            cambiado = False
            for a in (range(len(S) - 1)):
                c1 = S[a]
                c2 = S[a+1]
                if c1 == c2:
                    S = S[:a] + S[a+2:]
                    cambiado = True
                    break
            if not cambiado:
                break
        return S

Código:

# Work in progress

class Solution:
    def maximum69Number (self, num: int) -> int:
        return int(str(num).replace("6", "9", 1))

Grupo 2

Código:

# Work in progress
class Solution:
    def removeDuplicates(self, S: str) -> str:
      i = 1
      while i < len(S):
        i = 1
        while i < len(S):
            i += 1
            if S[i] == S[i+1]:
                j = i+1
                while S[i] = S[j+1]:
                    j = j+1
                S = S[:min(i-1, 0)] + S[min(j+1, len(S)):]
      return S
class Solution:
    def maximum69Number (self, num: int) -> int:
        return int(str(num).replace('6', '9', 1))

Grupo 3

Alex -> "no me deja veros/hablar en vuestra sala"

Código:

class Solution(object):
    def removeDuplicates(self, S):
        """
        :type S: str
        :rtype: str
        """
        result = " "
        for character in S:
            if (character == result[-1]):
                result = result[:-1]
            else:
                result = result + character
        return result[1:]


class Solution(object):
    def maximum69Number (self, num):
        strNum = str (num)
        posiblesResultados = []
        for x in range (0, len(strNum)):
            tmp = strNum
            if (strNum[x] == '6'):
                tmp = strNum[:x-1] + '9' + strNum[x:]
            else:
                tmp = strNum[:x-1] + '6' + strNum[x:]
            posiblesResultados.append(tmp)
        return int(max(posiblesResultados))

Grupo 4

Código:

# work in progress
# idea: stack 
class Solution(object):
    def removeDuplicates(self, S):
        keep = [' ']
        myList = S.split()
        for c in myList:
            elem = keep.pop()
            if c != elem:
                keep.append(elem)
                keep.append(c)
        return ''.join([str(elem) for elem in keep])
# change first 6 to 9, concat the rest
#
class Solution(object):
    def maximum69Number (self, num):
        """
        :type num: int
        :rtype: int
        """
        result = ""
        S = str(num)
        changed = False
        for character in S:
            if character == '6' and changed == False:
                result += '9'
                changed = True
            else:
                result += character
        return result

class Solution(object):
    def maximum69Number (self, num):
        """
        :type num: int
        :rtype: int
        """
        newNum = 0
        divisor = 1000
        while (divisor != 0):
            numPosition = num // divisor
            if (numPosition == 6):
                newNum = newNum + (9*divisor) + (num%divisor)
                return newNum
            else: 
                newNum = newNum + (numPosition *divisor)
                num = (num%divisor)
                divisor = divisor // 10
        return newNum

FRIKADAS

Otros comentarios