2008-08-27 5 views

Répondre

5

Problème: Insérer signe + ou - n'importe où entre les 123.456.789 chiffres de telle sorte que l'expression évalue à 100. La condition est que l'ordre des chiffres ne doit pas être modifié.

par exemple .: 1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100

Problème de programmation: Ecrivez un programme dans votre langue préférée qui produit toutes les solutions possibles du problème ci-dessus.

0

Tours de Hannoi est idéal pour la pratique sur la récursivité.

Je ferais aussi une recherche sur des questions d'entrevue de programmation d'échantillon.

2

Il existe de bons exemples de questions de programmation simples dans l'article Five Essential Phone Screen Questions de Steve Yegge (sous Area Number One: Coding). Je trouve que ce sont plutôt bons pour le stylo et le papier. En outre, les questions sous OOP Design dans le même article peuvent être faites sur stylo et papier (ou même dans votre tête) et sont, je pense, de bons exercices à faire.

0

Un bon nombre de sites en ligne pour la programmation compétitive sont remplis d'exemples de questions/défis, triés par 'difficulté'. Assez souvent, les catégories plus simples dans les questions «algorithmes» vous conviendraient je pense.

Par exemple, consultez TopCoder (section des algorithmes)!

En dehors de cela, deux échantillons:

  1. vous donne une liste des N points dans le plan par leurs coordonnées (x_i, y_i), et un nombre r> 0. Sortir le nombre maximum des N points donnés qui peuvent être simultanément couverts par un disque de rayon R (pour les points bonus: complexité?).

  2. On vous donne un tableau de N nombres a1 à un, et que vous voulez calculer a1 * a2 * ... * aN/ai pour toutes les valeurs de i (si la sortie est à nouveau un ensemble d'éléments N) sans utiliser la division. Fournir une méthode (non-naïve) (la complexité devrait être dans les multiplications O (N)).

0

Je aime aussi projet euler, mais je voudrais souligner que les questions deviennent vraiment très vite délicate. Après les 20 premières questions, ils commencent à être des problèmes que la plupart des gens n'arriveront pas à comprendre en une demi-heure. Un autre problème est que beaucoup d'entre eux traitent des mathématiques avec de très grands nombres, qui ne rentrent pas dans les types de nombres entiers standard ou même longs.

4

Si vous voulez un stylo et papper type d'exercices, je recommanderais plus de conception que de codage.

En fait, le codage en papier est nul et vous n'apprend presque rien.L'environnement de travail a de l'importance, donc taper sur un ordinateur, compiler, voir quelles erreurs vous avez faites, utiliser un refactor ici et là, ne se compare pas à ce que vous pouvez faire sur un bout de papier et donc, ce que vous pouvez faire sur un Un morceau de papier, tout en étant un exercice mental intéressant n'est pas pratique, cela n'améliorera pas tellement vos capacités de codage. D'autre part, vous pouvez concevoir l'architecture d'une application moyenne ou même complexe à la main dans un papier. En fait, je le fais habituellement. Les outils d'ingénierie (tels que Enterprise Architect) ne sont pas assez bons pour remplacer tous les bons diagrammes.

De bons projets pourraient être, Comment concevez-vous un moteur de jeu? Classes, Threads, Stockage, Physique, les structures de données qui contiendront tout et ainsi de suite. Comment voulez-vous démarrer un moteur de recherche? Comment concevez-vous un système de reconnaissance de formes?

Je trouve ce genre de problèmes beaucoup plus gratifiant que n'importe quel codage papier que vous pouvez faire.

Questions connexes