web-dev-qa-db-ja.com

プログラミングスキルを向上させるための非常に小さなプログラムですか?

より良いプログラマーになるためには、プログラムする必要があることを理解しています!だから明らかに、練習すればするほど良くなります。

私の問題はこれです。私は現在大学に在籍していますが、コースの負荷は少々気が遠く、暇な時間はあまりありません。私は本当に大きなプロジェクトを引き受けることができるとは思わない、特に私はそれを見るために動機付けをする必要がないとは思わない。学校。

しかし、私はまだ練習したいです。それで、私はかなり短い時間で完了することができるプログラミングの課題があるリソースを探しています。理想的には、私が10時間未満の仕事で終わらせることができる(毎日1時間以上の仕事)ことができます。

Google Code Jamのことを聞いたことがありますが、指定されているプログラムの長さやスキルレベルはわかりません。

誰か提案がありますか?おそらく、さまざまな機能に関するチュートリアルの大要が役立つかもしれません。たとえば、ファイルIOについてのチュートリアルは、それがかなり小さなトピックであったとしても、価値があります(まだ知らなかった場合)。

64
Blackbinary

code katas を調べる必要があります。彼らはあなたが話していることを正確に行います。コーディング/思考能力を完璧にするように設計された短い演習。

その他の参照:

  1. http://kata.coderdojo.com/wiki/Overview_of_Learning_Resources
33
Nix

Project Euler には、非常に興味深く、簡単なものから非常に難しいものまでさまざまな数学/数値関連の問題があります。選択する言語を選択し、ソリューション(大きな整数)のみを送信できます。正しいソリューションを送信すると、他のユーザーがコメントやソリューションを投稿したフォーラム/コメントページにアクセスできます。

20
schnaader

経験から、繰り返し行うタスクを見つけて、それをプログラムに変えることをお勧めします。真剣に、プログラミングの練習をするために車輪を再発明することもお勧めします。既に存在しているという理由だけで何かをしないように人々に言わせないでください。仕組みがわからない場合は、自分で書いてみてください。

私はあなたがどのプログラミングレベルにいるのかを正確に知りませんが、バットから狂ったことをしようとしないでください、それは単なる動機付けです(PS3用のゲームを書くなど)。

IOを使用して既に方法をナビゲートできる場合は、コレクションを効果的に使用する方法を実際に学習してみてください。私がこれまでに行ったベストプラクティスの割り当ての1つは、Java TreeMapクラスを書き直すことでした。それは大きな挑戦であり、それを行うことで多くのことを学びました。


練習課題のいくつかの提案は次のとおりです。

かなりの量の情報が含まれるテキストファイルを取得し、何でも取得します。必要に応じて、ここから何かを取得できます。 http://www.gutenberg.org/ そしてプログラムを作成しますそれは次のことを行います:

  1. ファイルを読み込む
  2. 単語とその出現のコレクションを作成する
  3. アナグラムのコレクションを作成する
  4. 単語のコレクションとそれらが出現する位置(行番号、単語の位置)を作成します
  5. ファイル内の単語に関する統計を作成します-意味-各単語を個人として扱う-どの単語が前後に出現するか。
  6. ファイルからすべての空白を削除します
  7. 上記のすべてのデータを独自のファイルに書き込みます

私がやりたいことの1つは、Webデータをいじり、ポーリングWebサイトにアクセスし、ポーリングデータが表形式になっているページを見つけて、次のことを行うことです。

  1. データをダウンロードする
  2. データを解析し、表形式のデータをCSVファイルに変換します
  3. エラーなしでExcelで開きます

または、任意のサイトを探してそこからデータを抽出し、そのサイトがロボットに優しいことを確認してください http://www.robotstxt.org/ 、1つのサイトがそのように感じられたくない攻撃を受けています。ほとんどの場合、これは通常、問題ではありません。サイトの利用規約を読むと、販売するつもりがない限り、表示しているもののコピーを1つダウンロードできることが明確に示されているからです。もちろん、これはすべてのサイトで変わります。


Webサイトにアクセスし、プログラムからページのすべてのリンクを取得します。


ここに楽しいものがあります。SusanProgram(なぜSusanという名前なのか覚えていません)は、最初にCプログラムとUnix環境で2つのBourne Shellスクリプトを使用して作成しました。このプログラムのアイデアは、4つの子プロセスをフォークし、それぞれに次のようなタスクを与えることです。

子1:ファイルを読み取り、各Wordの辞書とファイル内の位置を作成します。これはファイルに出力されます。

子2:子1の出力を取得してドキュメントを再構築します。これはファイルに出力されます。

子3:子2の出力を取得し、子1が再び行ったことを実行します

子4:子3の出力を取得し、子2が再び行ったことを行います

ここでの目標は、Child 4が出力した元のファイルの正確なレプリカを作成することです。これはやりがいがあり、やや無意味ですが、この演習のポイントは練習をすることです。

あなたの場合、このために異なるスレッドを使用する必要があるとは思わないでください。2つの異なる関数を持つ単一のプログラムを使用し、それらを順番に呼び出すことができます。


繰り返しますが、まだこのレベルにいるのかどうかはわかりませんが、プログラムの「for」ループまたは「foreach」ループを練習と同じように再帰に置き換えてみてください。再帰はお尻の痛みですが、知って理解することは価値があります。

これらはあなたのスキルを磨くのに本当に役立つと思ういくつかの提案です。

楽しい

17
dyslexicanaboko

[〜#〜] spoj [〜#〜]Project Euler を使用すると、プログラミングの課題と演習をすばやく行うことができます。

9
Fábio Perez

Code Jamは優れたプログラミングコンテストですが、あなたが言ったように、ほとんどの問題は初心者向けではありません。

過去のトップコーダーアルゴリズムの競合から問題の良い選択があります。 (彼らはほぼ10年間、月に2回まで開催されているので、かなりたくさんあります。)
難易度の範囲は、2番目の部門の 非常に単純な (しかしまだ興味深い)問題から非常に難しいものまであります。さらに、コードを送信およびテストできるソリューションとライブ環境を備えた editorials があります。他の人からの提出物から学ぶこともできます。

問題のリスト を確認してください。
topcoderのもう1つの利点は、定期的なオンラインコンテストです。リアルタイムで他の人と競争することは、モチベーションの大きな後押しになると思います。

[〜#〜] spoj [〜#〜][〜など、さらに多くの問題のアーカイブがあります#〜] uva [〜#〜] および Timus 、ただし、解決策やヒントさえほとんど提供しません。

5
Nikita Rybak

http://codegolf.stackexchange.com は、あなたの好みに合わせてプログラミング上の課題があるかもしれません。そのサイトでの回答の多くはゴルフです(彼らは最小限のキャラクターでプログラムを実装しています)が、学ぶべき興味深い例がいくつかあります。

3
Kevin Stricker

次のWebサイトのITコースに登録してみてください。

これらのWebサイトでは、有名な学校の無料の教育ITプログラムを提供しており、プログラミングスキルを磨くためのやりがいのあるエクササイズがたくさんあります。このため、パーコレーション、パターン認識、跳ねるボールなど、もっと多くの興味深いことをプログラムすることを学びました。演習の完了時にプログラムをアップロードし、それに応じて採点されます(基本的にはプログラムがチェックされます)。

各コースの終わりに、修了証も受け取ります。かっこいい?

3
newbie

それは言語に依存しますが、過去には http://rubyquiz.comhttp://pythonchallenge.com は私にとって素晴らしいことでした。また、オープンソースイニシアチブ。通常、コードレビューの機会を増やすのに役立ちます。

2
MexicanHacker

私はいつも、サンプルのインタビュー質問で練習することは、スキルを磨き、通常は解決できないタイプの問題にさらされる素晴らしい方法だと思っていました。さらに、仕事を探している場合は、さらに役立ちます。

これは、先日私が楽しみのためにやった非常に簡単なものです。

ループを使用せずに、1から100までの数値を出力し、再び1に戻すルーチンを作成します。

Glassdoor.comには、実際にインタビューを受けた人から多くの良いインタビューの質問が寄せられています。

2
Zach B

あなたは大学にいてコーディングスキルを向上させたいと考えているので、ハードコピーの本 コーディングインタビューをクラックする はあなたにぴったりかもしれません。一般的なプログラミングに関する素晴らしい質問と、ハイテク業界のトップ企業とのインタビューについてのちょっとしたアドバイスがあります。すばらしい質問があるだけでなく、適切な問題の内訳もあります。

[開示:私は本を所有していますが、それ以外の場合は関連がありません。]

1
Silence Dogood

プログラミングが好きで、プログラマーのスキルを向上させたい場合は、 cocode.co を試す必要があります。 StackOverflowに似ていますが、質問をしたり答えたりするのではなく、プログラミングの課題を投稿して解決することに基づいたソーシャルな若いサイトです。非常に簡単なチャレンジから非常に難しいチャレンジまで。

http://cocode.co

1
sgmonda

ACMの問題の解決を試みることができます。そこには何千もの問題があり、難易度を見つけることができるので、最初に行うべき問題を選択できます。これの公式サイトは次のとおりです。

http://uva.onlinejudge.org/ 。そこからもっと学ぶことができます。

よろしくお願いします

0
stinepike

少し明白に思えるかもしれませんが、最近Stack Overflowで正規表現の質問に答えることで、正規表現のスキルが本当に向上したことに気付きました。教えることは、問題を簡単に説明可能な部分に分割することを強制し、解決策のすべてではないがほとんどを知っている機会にあなたの研究を導くでしょう。

この種のことは初心者向けのチュートリアルほど良くないので、あなたがすでにある程度熟練しているトピックを見つけることをお勧めします。 SOそのトピックでタグ付けされた質問を検索し、答えを見つけようとします。頭の中でそれらをコーディングするだけでなく、先に進み、書き、テストし、説明してください。答えが正しいかどうかわからないので、投稿せずに書いてください。

0
Justin Morgan