質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

6回答

3325閲覧

プログラミングの良問があれば教えてください

退会済みユーザー

退会済みユーザー

総合スコア0

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

3グッド

7クリップ

投稿2017/12/29 04:43

プログラミング歴1年です。
いくつかの言語に振れたり、アプリを作ったりしていたのですが、
それは主に「フレームワークの使い方」に重点を当てていた気がします。

そこで、最近新しい言語を始めたのですがそれの処理速度が速く、
ベンチマークも意識するようになってきました。
その言語では「何が作りたい」というのはないのですが、これを学んでいく上でプログラミングのロジックの組む力を付けたいと思っています。

そこで、
「意外と簡単に組めるけど、実行時間などを考えるともっと奥深い」
「基本的なことを一通り使う、入門者が解くと色々勉強になる」
のような有名(ググれば答えが出てくるような)な問題があれば教えて欲しいです。

例えば
最近知ったものに「入力値が素数かどうかを判定する問題」というのがありました。
簡単な回答だと、forで2からその数まで回して割り切れなかったら素数です。のようにもできますが、もっと工夫をするなら平方根を用いたり、事前に偶数を省いたりとすることもできます。

そういった奥深く、考えに考える必要があり、沢山学ぶことがある。様な問題を思いつく限り教えて頂けると嬉しいです。

競プロの問題でも良いのですが、汎用性のある問題だと嬉しいです。

よろしくおねがいします。

LLman, aaaaaaaa👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

ベストアンサー

「基本的なことを一通り使う、入門者が解くと色々勉強になる」

アルゴリズムの本に載っている、ソートや探索とかが定番ですが、
正直なところ、素っ気ない問題だという印象はあります。

私がオススメするのは、「トランプ」です。
(米大統領選をシミュレートするとかじゃなく(笑)、もちろんカードゲームの方です)


トランプをプログラミングの題材にすると、いろいろメリットがあります。

  1. 普及しているので、誰でもルールを知っている
  2. 難易度が、易し過ぎず、難し過ぎない
  3. ルールのバリエーションが豊富

上記は説明しなくても、何となく分かると思いますが、もう少し言うと、
なぜ、リバーシとかじゃなくて、トランプなのかというと、
上の内の「バリエーション」が豊富だからです。

「七並べ」「神経衰弱」「ブラックジャック」「ポーカー」「大富豪」など、
トランプのゲームはいろいろあります。

だから、カードをシャッフルしたりする部分は、
ライブラリで共通化しようとか、設計的な要素も含めた、
総合的で実用的なソフト開発の練習にうってつけです。

トランプには、ソートなどのアルゴリズムは含められますし、
CUIでもGUIでも両方できますし、ゲームやAIに応用が利きますし、
作ったものをそのままアプリとして発表することもできますし、
いろいろな要素があって、想像するより、間口が広くて奥が深いです。

もし、トランプだと簡単過ぎるなら、将棋や麻雀でもいいですが、
トランプはシンプルではあっても、意外とやりごたえがあります。

たとえば、大富豪で「数字では2が一番強い」「革命で逆転する」ことを、
ちゃんと表現するだけでも、アルゴリズム的な要素があると思います。

その一方で、実装が想像もできないほど、難しくはないことも、
予備知識が不要でとっつきやすくて、良いと思います。

投稿2017/12/29 17:33

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

非常にありきたりですが、ソートのアルゴリズムをいろいろ実装して試してみてはどうでしょうか。

Sorting algorithm - Wikipedia
ソート - Wikipedia

投稿2017/12/29 08:50

karamarimo

総合スコア2551

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

万人向けではないかもしれませんが個人的に好きなものに「Conway's Game of Life」というものがあります。

  • 2状態の格子状のセル(升目)の変化をアニメーションして眺めるだけのもの
  • セルの変化規則(仕様)は極めて単純
  • セルのパターンによって実に様々な変化が起こる
  • 現代の計算機にとっても必要とする計算機資源は「充分重い」
  • プログラマーの知識や経験に応じたプログラミングができる(ごく簡単にも高度にも書ける)
  • 入力用の豊富なデータが比較的手軽に入手できる

ということでアルゴリズムの練習としては簡単には終わらない奥深さを持っていると思います。

Wikipedia:
https://ja.wikipedia.org/wiki/ライフゲーム
このゲームだけのWiki(様々なパターンがダウンロードできます)
http://www.conwaylife.com/

投稿2017/12/29 10:02

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2017/12/29 10:27

魅力に満ち溢れていますよね。 チューリング完全だから、ライフゲームでライフゲームをプログラミング出来る!というような動画を見て畏怖に近い何かを感じた記憶があります。
KSwordOfHaste

2017/12/29 10:53

自分もそうでした。またほんの20~30行でもかけるしハッシュアルゴリズムなど高速なものを作ろうとすると結構大きくて難しくなるという難易度の幅も題材として面白い点だと思います。 ライフゲームでライフゲームを計算するパターンもそうですが興味深いパターンは巨大なものが多いので、自分で書いたプログラムでそういう巨大なパターンを高速に動かすことはなかなか挑戦的です。
guest

0

質問の方向性で言うと「競技プログラミング」でググると、いろいろ情報が出てきます。
個人的に非常に面白く、ハマってしまいましたが、実務では思っている以上に役に立ちませんでしたw
でも、脳みそが活動しているのがわかるので楽しいです!

投稿2017/12/29 08:43

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

では円周率=πを計算してみましょう。
いろいろな計算方法がありますが、
π/4=1-1/3+1/5-1/7…という計算です。
有効数字7桁や13桁の単精度、倍精度で計算できれば、20桁、30桁と計算しましょう。
各桁の数字を持つ配列a[]を持ち、割り算も掛け算も手計算。
なかなか収束しませんので3.14159265あたりまで計算するのも大変ですよw。

投稿2017/12/29 08:00

maiko0318

総合スコア876

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

最近ちょっとご無沙汰だけどこのサイト

CODE IQ

それなりにチューニングしないと通りません
総当たり的なやり方だと大概タイムアウトします

投稿2017/12/29 09:09

KazuhiroHatano

総合スコア7802

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問