キーボード(ペンと紙など)から離れてスキルを練習したいのですが、Fizz Buzz、最初のN個の素数を印刷するなどの簡単な練習用の質問があります。
あなたの好きな簡単なプログラミングの質問は何ですか?
キーボード(ペンと紙など)から離れてスキルを練習したいのですが、Fizz Buzz、最初のN個の素数を印刷するなどの簡単な練習用の質問があります。
あなたの好きな簡単なプログラミングの質問は何ですか?
問題: 式が100と評価されるように、数字123456789の間の任意の場所に+または-記号を挿入します。条件は、数字の順序を変更してはならないということです。
例:1 + 2 + 3-4 + 5 + 6 + 78 + 9 = 100
プログラミングの問題: 上記の問題のすべての可能な解決策を出力するプログラムを好きな言語で書いてください。
ペンと紙のような演習が必要な場合は、コーディングよりもデザインをお勧めします。
実際、紙にコーディングするのは最悪で、ほとんど何も学べません。作業環境は重要なので、コンピューターで入力すること、コンパイルすること、犯したエラーを確認すること、あちこちでリファクタリングを使用することは、紙の上でできることとは比較になりません。興味深い頭の体操は実用的ではありませんが、コーディングスキルはそれほど向上しません。
一方、中程度のアプリケーションや複雑なアプリケーションのアーキテクチャを紙に手書きで設計することもできます。実際、私は通常そうしています。エンジニアリング ツール (エンタープライズ アーキテクトなど) は、手作業によるすべての優れた図を置き換えるには十分ではありません。
良いプロジェクトは、ゲームエンジンをどのように設計しますか? クラス、スレッド、ストレージ、物理演算、すべてを保持するデータ構造など。どのように検索エンジンを開始しますか? パターン認識システムをどのように設計しますか?
この種の問題は、あなたができる紙のコーディングよりもはるかにやりがいがあると思います.
Steve Yeggeの記事「5つの重要な電話画面の質問」(エリア番号1:コーディングの下)には、単純なプログラミングの質問の良い例がいくつかあります。これらはペンや紙で行うのにかなり適していると思います。また、同じ記事のOOPデザインの質問は、ペンと紙(または頭の中でさえ)で行うことができ、実行するのに適した演習だと思います。
ハノイの塔は再帰の練習に最適です。
プログラミングの面接のサンプルの質問も検索します。
競技プログラミングのかなりの数のオンライン サイトには、「難易度」別に分類されたサンプルの質問/課題がたくさんあります。多くの場合、「アルゴリズム」の質問のより単純なカテゴリが適していると思います。
たとえば、TopCoder (アルゴリズム セクション) をチェックしてください。
それとは別に、2 つのサンプル:
座標 (x_i, y_i) と数値 R>0 によって、平面内の N 点のリストが与えられます。半径 R の円盤で同時にカバーできる N 個の与えられたポイントのうちの最大数を出力します (ボーナス ポイントの場合: 複雑さ?)。
N 個の数値 a1 から aN の配列が与えられ、 division を使用せずに i のすべての値を計算したいa1 * a2 * ... * aN / ai
(したがって、出力は再び N 要素の配列になります) 。(単純ではない) メソッドを提供します (複雑さは O(N) 倍にする必要があります)。
私はプロジェクト euler も好きですが、質問が本当にすぐに難しくなることを指摘したいと思います。最初の 20 問ほどの質問の後、ほとんどの人が 1/2 時間では理解できない問題になり始めます。もう 1 つの問題は、それらの多くが非常に大きな数を扱う数学を扱っていることです。これは、標準の整数型や long 型の変数の型には収まりません。