Questions courantes pseudocode, des puzzles et des défis

voix
5

Je cherche des exemples de problèmes de pseudocode que vous avez posées dans une entrevue ou m'a demandé de représenter dans le cadre de votre travail ou de l'éducation. Je ne cherche pas des exemples de tous les domaines en particulier, il peut être lié à la conception des modèles, des algorithmes, des structures de données, des stratégies de mise en cache, rien à voir avec génie logiciel et le développement, simple ou complexe.

Par exemple, certains plus courantes que j'ai trouvé sont principalement liés au tri et à des techniques de recherche:

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

Sorte d' insertion :

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;

Recherche binaire :

   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
   }

Nous pouvons être en mesure de construire une bonne liste d'algorithmes de pseudocode et des problèmes, si beaucoup de gens partagent leurs idées et expériences.

Je cherche à trouver la représentation pseudocode moi-même, en tant que pratique. Donc, même si vous ne pouvez pas trouver un exemple pseudocode, mais vous pensez que ce serait un concept idéal pour représenter de cette façon, cela aiderait aussi.

J'ai aussi quelques questions sur le sujet aussi:

  • Ce qui vous ont été pseudocode demandé d'écrire dans une interview avant?
  • Est-ce que ces questions ont tendance à se rapporter à court, des algorithmes simples qui sont une ou deux fonctions de temps?
  • Au cas où des constructions linguistiques spécifiques être évités lors de l'écriture pseudocode? Comme la représentation est censée être la langue agnostique, il est plus sûr de ne pas utiliser des termes comme Dispose et foreach qui n'existent pas dans chaque langue?

Merci


Modifier:

Quelques exemples de quelques-uns plus je l'ai trouvé, je vais garder le montage que je trouve plus:


Écrivez une fonction qui prend une seule chaîne pour inverser l'ordre des mots dans une phrase, pas inverser les mots:

Entrée: « Le chat assis sur le tapis, avec un autre chat! »

Sortie: « chat avec un autre tapis, le chat était assis le »


Écrivez une fonction qui prend une seule chaîne qui renverra le mot qui revient le plus dans cette chaîne, ignorant la casse et la ponctuation. Si plus d'un mot a le même nombre d'occurences retourner celui qui a eu lieu la première:

Entrée: « Le chat assis sur le tapis, avec un autre chat! »

Sortie: le


Ecrire une fonction pour trouver le personnage qui a le plus grand nombre d'occurences dans une certaine chaîne, ignorant la casse. S'il y a plus d'un caractère à l'égalité plus occurences, retourner le caractère qui est apparu en premier dans la chaîne.

Entrée: « Caractère »

Sortie: c


Écrivez une fonction qui inverse une chaîne

Entrée: « inverse »

Sortie: esrever

Créé 15/08/2010 à 11:54
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
1

Je ne me suis pas jamais demandé d'écrire pseudo-code dans une interview (encore étudiant), mais un de mes amis qui a demandé à Google pour un emploi d'été m'a demandé d'écrire un analyseur regexp qui pourrait faire face à un sous-ensemble de regexps ( IIRC, entrée alphanumérique uniquement et en utilisant le *, + et notation {x, y}). J'envisage d'appliquer pour les l'année prochaine pour un emploi d'été moi-même et je suis terrifiée par l'idée d'essayer d'écrire quelque chose comme ça sur place XD.

Je crois qu'il a résolu en utilisant deux fonctions récursifs hors les uns des autres. Je ne sais pas comment.

Oh, il n'a pas seulement été demandé d'écrire pseudo-code pour cela, btw. On lui a demandé d'écrire du code C ++ réelle, sur place, qui regroupent. (Dans un document Google Docs, ainsi).

Créé 15/08/2010 à 11:57
source utilisateur

voix
3

Je n'ai pas encore demandé, mais il y a la question FizzBuzz classique.

Ecrire un programme qui imprime les numéros de 1 à 100. Mais pour les multiples de trois imprimés « Fizz » au lieu du nombre et pour les multiples de cinq print « Buzz ». Pour connaître les numéros qui sont des multiples de trois et cinq print « FizzBuzz ».

que l'on trouve à http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

Il est conçu comme une simple question de dépistage, et de ne pas poser de difficulté majeure à même de très nouveaux programmeurs.

Créé 15/08/2010 à 11:58
source utilisateur

voix
1

On m'a demandé d'écrire une solution pseudo-code pour ce lors d'une interview pour un stage il y a quelques années:

Ecrire un algorithme qui, étant donné un chemin de répertoire, peut compter le nombre total de fichiers qui relèvent de ce répertoire et tous les sous-répertoires.

Être en mesure de résoudre cela démontre une compréhension de traversal des arbres.

Créé 20/08/2010 à 13:22
source utilisateur

voix
0

Il m'a fallu beaucoup de temps pour comprendre, mais voici ma solution Excel VBA au problème d'inversion de phrase.

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
Créé 12/07/2015 à 18:22
source utilisateur

voix
0

Je ne sais pas si cela est l'approche la plus élégante, mais voici une solution pour trouver le mot qui se produit le plus souvent. Voici comment je l'ai approché.

  1. Trouvez le nombre de mots par une boucle à travers la phrase et incrémenter un nombre de mots variable si vous trouvez un espace ou vous arrivez à la fin de la phrase. Créer un tableau de mots de cette longueur.
  2. En utilisant une variable pour le début de chaque mot et une autre variable de la longueur de chaque mot, une boucle à travers la phrase à nouveau et attribuer les caractères précédents à un élément de la matrice de mots.
  3. Pour chaque mot de l'élément de tableau, boucle à travers chaque élément du tableau de texte, et comparer (boucle imbriquée). S'il y a un match, incrémenter la valeur de cette position d'un tableau de comptage qui montre combien de fois chaque mot apparaît.
  4. Boucle à travers le réseau de comptage et de comparer la valeur dans chaque champ à la valeur maximale trouvée à ce jour. Cela donne le nombre maximum et donc le mot le plus commun. Sortie ce mot.

    Sous FindCommonWord (public)

    Dim Insentence As String Dim WordArray () As String Dim CountArray As Integer Dim () p As Integer 'Démarrer Word Dim q As Integer' Longueur de mot Dim w As Integer 'Nombre de mots Dim tw As String' Cette Parole Dim R Comme Position » Integer de mot le plus commun

    p = 1 w = 1

    Insentence = ActiveSheet.Range ( « A1 »). Valeur « Attribuer la phrase à une chaîne

    « Boucle à travers tous les caractères et compter le nombre de mots pour h = 2 à Len (Insentence) + 1 » boucle à travers tous les caractères de la phrase d'entrée Si (Mid (Insentence, h, 1) = « » Ou h = Len ( Insentence) + 1) Then « ce caractère est un espace ou c'est la fin de la phrase w = w + 1 End If Next h

    w = w - 1

    ReDim WordArray (w) ReDim CountArray (w)

    w = 1 « une boucle sur tous les caractères et attribuer des mots aux éléments d'un tableau Pour i = 2 à Len (Insentence) + 1 » Boucle à travers tous les caractères de la phrase d'entrée Si (Mid (Insentence, i, 1) = « » ou i = Len (Insentence) + 1) Then « ce caractère est un espace ou c'est la fin de la phrase q = i - p » Régler la longueur de mot au nombre de cette position moins la position du début de mot WordArray (w) = Mid (Insentence, p, q) p = i + 1 'Position du mot suivant w = w + 1' mot suivant End If Next iw = w - 1 « le dernier mot atteint

    « Boucle à travers le réseau pour travailler sur chaque mot Pour j = 1 w » boucle à travers le réseau et compter le nombre de fois ce mot apparaît pour k = 1 w Si UCase (WordArray (k)) = UCase (WordArray (j )) Alors CountArray (j) = CountArray (j) + 1 Next Suivant k j

    R = 1

    « Trouver la valeur maximale dans le tableau de comptage pour n = 1 à w Si CountArray (n)> R alors R = n Next n MsgBox ( "Le mot le plus commun est" & WordArray (R) et "en position" et R & "")

    End Sub

Créé 12/07/2015 à 19:58
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more