2010-08-15 81 views
5

Estoy buscando ejemplos de problemas de pseudocódigos que se le pueden haber preguntado en una entrevista o se le ha pedido que represente como parte de su trabajo o educación. No busco ejemplos de ningún dominio en particular, por lo que puede estar relacionado con patrones de diseño, algoritmos, estructuras de datos, estrategias de almacenamiento en caché, todo lo relacionado con la Ingeniería de Software y Desarrollo, simple o complejo.Preguntas comunes de pseudocódigo, acertijos y desafíos

Por ejemplo, algunas de las más comunes que he encontrado están principalmente relacionadas con la ordenación y búsqueda técnicas:

Bubblesort:

procedure bubbleSort(A : list of sortable items) defined as: 
    do 
    swapped := false 
    for each i in 0 to length(A) - 2 inclusive do: 
     if A[i] > A[i+1] then 
     swap(A[i], A[i+1]) 
     swapped := true 
     end if 
    end for 
    while swapped 
end procedure 

Insertion sort:

insertionSort(array A) 
begin 
    for i := 1 to length[A]-1 do 
    begin 
     value := A[i]; 
     j := i - 1; 
     done := false; 
     repeat 
      if A[j] > value then 
      begin 
       A[j + 1] := A[j]; 
       j := j - 1; 
       if j < 0 then 
        done := true; 
      end 
      else 
       done := true; 
     until done; 
     A[j + 1] := value; 
    end; 
end; 

Binary search:

BinarySearch(A[0..N-1], value, low, high) { 
     if (high < low) 
      return -1 // not found 
     mid = low + ((high - low)/2) 
     if (A[mid] > value) 
      return BinarySearch(A, value, low, mid-1) 
     else if (A[mid] < value) 
      return BinarySearch(A, value, mid+1, high) 
     else 
      return mid // found 
    } 

Es posible que podamos crear una lista decente de algoritmos y problemas de pseudocódigo, si muchas personas comparten sus pensamientos y experiencias.

Estoy buscando la representación de pseudocódigo, como práctica. Así que incluso si no puede encontrar un ejemplo de pseudocódigo, pero cree que sería un concepto ideal para representar de esta manera, eso ayudaría también.

que también tienen una serie de preguntas relacionadas con el tema demasiado:

  • Qué pseudocódigo se te ha pedido que escriba en una entrevista antes?
  • ¿Estas preguntas tienden a relacionarse con algoritmos cortos y simples que tienen una o dos funciones de longitud?
  • ¿Deben evitarse las construcciones específicas del lenguaje al escribir el seudocódigo? Como la representación pretende ser independiente del lenguaje, ¿es más seguro no usar términos como Dispose y foreach que no existen en cada idioma?

Gracias


Editar:

Unos pocos ejemplos de algunos más que he encontrado, voy a seguir de edición como encuentro más:


escribir una función que toma una sola cuerda para invertir el orden de las palabras dentro de una oración, sin invertir las palabras:

Entrada: "¡El gato se sentó en la alfombra, con otro gato!"

salida: "! Gato otra con la estera, el sobre se sentó gato El"


escribir una función que toma una sola cadena que devolverá la palabra que se produce la mayor parte dentro de esa cadena, ignorando mayúsculas y minúsculas y puntuacion . Si más de una palabra tiene el mismo número de ocurrencias, devuelva la que ocurrió primero:

Entrada: "¡El gato se sentó en la estera, con otro gato!"

de salida: la


escribir una función para encontrar el personaje que tiene el mayor número de ocurrencias dentro de una determinada cadena, ignorando mayúsculas y minúsculas Si hay más de un carácter con igualdad de las ocurrencias más altas, de retorno. el personaje que apareció por primera vez dentro de la cadena

de entrada:. "el carácter"

salida: c


escribir una función que invierte una cadena

de entrada: "inverso"

salida: "esrever"

+0

Si va a escribir pseudocódigo, usted debe estar tratando de representar el algoritmo como de forma clara y concisa como puedas. Eso generalmente significa ignorar la administración explícita de recursos, pero usar cosas como "elemento foreach en alguna colección", incluso si no hay un análogo directo en algunos idiomas. –

Respuesta

1

no he yo jamás ha pedido que escriba pseudo-código en una entrevista (siendo una estudiante), pero a un amigo que solicitó un empleo de verano en Google se le pidió que escribiera un analizador de expresiones regulares que pudiera tratar con un subconjunto de expresiones regulares (iirc, entrada alfanumérica solamente y con la notación *, + y {x, y})) Estoy considerando postularme para el próximo año para un trabajo de verano y estoy aterrorizado por la idea de intentar escribir algo así en el lugar XD.

Creo que lo resolvió usando dos funciones que se repiten una de la otra. No estoy seguro de cómo.

Oh, no se le pidió que escribiera pseudo-código para esto, por cierto. Se le pidió que escribiera el código real de C++, en el lugar, que compilaría. (En un documento de Google Docs, también).

3

No me lo han preguntado aún, pero está la pregunta clásica de FizzBuzz.

Escriba un programa que imprima los números del 1 al 100. Pero para múltiplos de tres imprima "Fizz" en lugar del número y para los múltiplos de cinco imprima "Buzz". Para números que son múltiplos de tres y cinco, imprime "FizzBuzz".

como se encuentra en http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

Se entiende como una cuestión de selección simple, y no plantea ninguna dificultad significativa incluso a muy nuevos programadores.

1

me pidieron que escribiera una solución pseudo-código para esto durante una entrevista para un puesto de interno hace unos años:

Escribir un algoritmo que, dada una ruta de directorio, se puede contar el número total de archivos que caen bajo ese directorio y todos los subdirectorios.

Ser capaz de resolver esto demuestra una comprensión del cruce de árboles.

+0

Bueno uno. Necesito más ejemplos de problemas de recursión cortos – fletcher

0

Me llevó mucho tiempo darme cuenta, pero esta es mi solución de Excel VBA para el problema de inversión de frases.

Public Sub SentenceReverse() 

Dim InSentence As String 'Input sentence string 
Dim OutSentence As String 'Output sentence string 
Dim p As Integer 'Word Start 
Dim q As Integer 'Word length 

p = 1 

InSentence = ActiveSheet.Range("A1").Value 'Assign the sentence to a string 

For i = 2 To Len(InSentence) + 1 'Loop through all the characters of the input sentence 
    If (Mid(InSentence, i, 1) = " " Or i = Len(InSentence) + 1) Then 'This character is a space or this is the the end of the sentence 
     q = i - p 'Set the word length to the number of this position minus the position of the start of this word 
     OutSentence = Mid(InSentence, p, q) & " " & OutSentence 'Add this word to the start of the output string 
     p = i + 1 'Set the start of the next word as the position of this space + 1 
    End If 
Next i 

MsgBox (OutSentence) 

End Sub 
0

No sé si este es el enfoque más elegante, pero aquí hay una solución para encontrar la palabra que ocurre con más frecuencia. Así es como me acerqué.

  1. Encuentra el número de palabras al recorrer la oración e incrementar una variable de conteo de palabras si encuentras un espacio o llegas al final de la oración. Crea una matriz de palabras de esta longitud.
  2. Usando una variable para el inicio de cada palabra y otra variable para la longitud de cada palabra, recorra nuevamente la oración y asigne los caracteres precedentes a un elemento de la matriz de palabras.
  3. Para cada elemento del conjunto de palabras, recorra cada elemento del conjunto de palabras y compárelo (ciclo anidado). Si hay una coincidencia, incremente el valor para esa posición de una matriz de conteo que muestre cuántas veces aparece cada palabra.
  4. Pasa por la matriz de recuento y compara el valor de cada campo con el valor máximo encontrado hasta ahora. Esto da el número máximo y por lo tanto la palabra más común. Saca esa palabra.

    Public Sub FindCommonWord()

    Dim Insentence como secuencia Dim WordArray() As String Dim CountArray() As Integer Dim p como 'palabra de inicio q Dim As Integer' Entero Longitud de palabra Dim w As Integer 'Número de palabras Dim tw As String' Esta palabra Dim R como la posición de la palabra más común Integer'

    p = 1 w = 1

    Insentence = ActiveSheet.Range ("A1").Valor 'Asignar la sentencia a una cadena

    ' bucle a través de todos los personajes y contar el número de palabras para H = 2 a Len (Insentence) + 1 'en bucle a través de todos los personajes de la frase de entrada Si (Mid (Insentence, h, 1) = "" o h = Len (Insentence) + 1) Entonces 'este personaje es un espacio o este es el final de la frase w = w + 1 End If Siguiente h

    w = w - 1

    ReDim WordArray (w) ReDim CountArray (w)

    w = 1 'bucle a través de todos los caracteres y asignar palabras a elementos de una matriz Para i = 2 Para Len (Insentence) + 1' Loop a través de todos los caracteres de la frase de entrada Si (Mid (Insentence, i , 1) = "" Oi = Len (Insentencia) + 1) Luego 'Este personaje es un espacio o este es el final de la oración q = i - p' Establecer la longitud de la palabra en el número de esta posición menos la posición del inicio de esta palabra WordArray (w) = Mid (Insentence, p, q) p = i + 1 'posición de la siguiente palabra w = w + 1' palabra Siguiente End If Siguiente i w = w - 1 'Última palabra alcanzada

    'bucle a través de la matriz para trabajar en cada palabra Para j = 1 a W ' bucle a través de la matriz y cuente el número de veces que esta palabra aparece Para k = 1 a W Si UCase (WordArray (k)) = UCase (WordArray (j)) Entonces CountArray (j) = CountArray (j) + 1 Siguiente k Siguiente j

    R = 1

    'Encontrar el valor máximo de la matriz de recuento Para n = 1 a w If CountArray (n)> R Then R = n Siguiente n MsgBox ("The mos t palabra común es "& WordArray (R) &" en la posición "R & &" ".)

    End Sub

Cuestiones relacionadas