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

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

ただいまの
回答率

88.61%

文字列比較(プログラム)に最適なプログラミング言語は?

解決済

回答 6

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 703

MITTE

score 9

現在、プログラムコードをどのように比較するか悩んでいます。

例えば、Progateさんのサービスにある、プログラミング言語学習サービスなどのコードが答えと合っているかの答え合わせの部分です。

事前に用意しておいたプログラムと、誰かが書いたコードが合っているか、厳密に比較していくのに最適なプログラミング言語はなんでしょうか?

また、ProgateさんはRubyを扱っているようなのですが、簡単にどのような感じの流れで答え合わせがされているのか教えていただけると幸いです!

よろしくお願いします😃

ーーーーー追記ーーーーー

HTMLやCSSのコードが答えと合っているかをやりたいのですが、これをプログラム上で全て解決したいです。

例えばCSSでは、プロパティの順番が書く人それぞれで違うと思います。
ですが、順番はバラバラでも入れるべきプロパティが合致していれば正解とさせたいのです。

この作業に最適なプログラミング言語を教えて貰いたいです!

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2018/10/27 12:30 編集

    言語が知りたいのかアルゴリズムが知りたいのか、厳密というのはどういったことを指すのか(余分な空白も含め一文字一文字一致するかどうかを比較したいの?)、などとご質問がちょっと曖昧な気がします。比較対象の具体例を挙げてみては?また、具体例を挙げることで、自分自身で答えに近づくこともできるかと(人に聞くのも重要ですが)。

    キャンセル

  • m.ts10806

    2018/10/27 22:44

    解決は良いのですが結局どこを落としどころとしたのか解決した回答のコメントつけていただければと。意見集めたいだけならそれは質問ではなくアンケートになります。質問者さんが解決した状態をコメントするまでがひとつの基本的な流れです

    キャンセル

  • MITTE

    2018/10/28 11:21

    初めての質問でしたので、すみません。プログラムはどんなプログラムを書こうが実行してしまえば同じものが出来上がるということがあります。その実行した時を正解か不正解か見分ければいいと考えました!いい意見をありがとうございます😊

    キャンセル

  • m.ts10806

    2018/10/28 11:22 編集

    解決した回答にコメントつけていただければと。

    キャンセル

回答 6

checkベストアンサー

+5

HTMLやCSSのコードが答えと合っているかをやりたいのですが、これをプログラム上で全て解決したいです。
例えばCSSでは、プロパティの順番が書く人それぞれで違うと思います。
ですが、順番はバラバラでも入れるべきプロパティが合致していれば正解とさせたいのです。
この作業に最適なプログラミング言語を教えて貰いたいです! 

そういうプログラムを書けばどの言語でも可能です。
もし何かしら特定の言語を提示されたとしてあなたが触ったことはおろか聞いたことすらない言語だったらどうしますか

結局自身が得意な、または触ったことがあったり手持ちの環境で出来ることを模索することになりますよね。

大事なのはそこではないですね。
どのように書いても実現ができる以上は、自動的に正解不正解を完全に判定するのは無理があります。
その場で自動的に見れるのは実行エラーが起きないかどうかくらい。

もちろん作り込めば構文エラーがないかとか未定義の変数がないかとかはできないことはないですけど。
それは全ての仕様を把握していることが前提ですしね。
W3Cバリデータというものもありますが、このようなものを作ろうとしてます? 
どこか、「厳密な文字列比較」という言葉だけに捉えられすぎて本来やるべきことや考えること、考え方をすっ飛ばしてるような気がしてなりません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/28 11:26

    質問が初めてだったため、至らない点があったと思いますが、すみません!

    プログラムはどんなプログラムを書こうが実行してしまえば同じものが出来上がるということがあります。

    その実行した時を正解か不正解か見分ければいいと考えました!
    参考になる良い意見をありがとうございます😊

    キャンセル

+4

文字列の比較などどの言語でもできます。

でもそんなことをしても意味がありません。プログラムに要求されるのは目的が果たせるかどうかです。
変数の名前が pt でも point でもどうでもいいです。

正しい答えが出せたかどうか確かめるには、コンパイルして実行してください。
全角スペースなどの不正な文字が入っていたらそこでエラーメッセージが出ますから読んでください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

出力の比較であれば、文字列比較ではなく構文解析と組み立ての問題だと思います。
究極はブラウザなので、ヘッドレスブラウザでも使用して、出力結果を比較するのが良いと思います。

上記を考慮の上、ライブラリの充実した言語を選ぶと良いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

ソースコード整形ツールを通してdiffで比較で、

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/27 12:39

    回答ありがとうございます!
    それはプログラム上で自動でできますか?
    それとも手動でしょうか?

    キャンセル

  • 2018/10/27 12:47

    勿論シェルスクリプトで自動化です。

    キャンセル

+1

 CSSOM

例えばCSSでは、プロパティの順番が書く人それぞれで違うと思います。
ですが、順番はバラバラでも入れるべきプロパティが合致していれば正解とさせたいのです。

CSSパーサとDOM APIを備えている言語を調査してみては?

  1. document.styleSheets[0].cssRules の値を配列に格納
  2. Array.prototype.sort でソート
  3. JSON.stringify() でJSON化
  4. === で厳密比較

ただし、CSSプロパティ値の種類を明確に決める必要はあると思います。
上記では、宣言値と仮定しましたが、

  • link要素のN番目で宣言
  • style要素で宣言
  • style属性で制限

当然、いくつも宣言方法はありますから、どこまで宣言方法を指定するか、という要件定義上の問題はあるでしょう。
場合によっては、算出値で比較する方法もあります。

Re: MITTE さん

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

(※あんまり詳しくない人の回答です)

C#を使い慣れているし便利だし、初学者にもわかりやす方だと思うのでお勧めしますが、java、python、Rubyや、kotlin、Mac使いならSwift?、なんかもおすすめかもしれません。後ろ二つは使ったことありませんが。

初学者がWEBサービスとして実装してみたいというのであれば、それ込みでRubyなんかでもいいかもしれませんが。

以下炎上しそうなので、読み流してください(かなり適当に書いてます)
CやC++でもできないことはないですが、面倒かと。
pythonもちょっとわかりずらいかもしれませんね(インデントベースなのでコードのコピペに関してちょっと不向き、ちょっとかもしれないけれどおまじないがわかりずらい)。とは言え、機械学習、自然言語周りで流行りなので、文字列操作のライブラリは豊富かもしれません。

追記
この手の質問をするときは、「言語とその言語の周り(ライブラリやフレームワークやツール)を含めて考えたとき、どの言語が一番適していそうだと思われますか?ご存知の範囲で教えてください。」 としておいたほうが少しはよいかと。というのも、言語についてだけ問われても判断材料として微妙だし、とりあえず「わかってねーなお前」という回答が飛んできます。
また、チェックの仕組み(アルゴリズム)については言語とは別の話ですよね。ライブラリは多少関連していそうですが。なので、切り離すつもりで考えるのが妥当です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る