ある指定した単語を並び替えて、その単語を表示するプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Misa0531

ある指定した単語を並び替えて、その単語を表示するプログラム

#1

投稿記事 by Misa0531 » 9年前

申し訳ないですが、期限が明日までなのでできればプログラムを教えていただきたいです。
ある英単語を指定し、それを適当に並び替えたもので実際に辞書に載っているものを表示せよという問題なのですが、全くわかりません。
プログラムを実行した結果は以下のようになるみたいです。
指定した英単語: [h,o,r,s,e]
horse,hoers,shore

指定した英単語: [a,l,g,o,r,i,t,h,m]
algorithm,logarithm

また、辞書はwordlist.txtの中に入っていて、およそ10万語あります。

この問題は元々javascriptで答えなくてはならない問題なのですが、javascriptの質問掲示板らしきものが見当たらなかったので、c言語で作り、それをjavascriptに変換しようと思っています。
ここはc言語の質問掲示板なので無理かとは思いますが、できればjavascriptで教えていただけるとありがたいです。

hide

Re: ある指定した単語を並び替えて、その単語を表示するプログラム

#2

投稿記事 by hide » 9年前

期限が明日ということは今日まで頑張ってきた分があると思うのでそれをベースにしましょう。
なので、いったんそれを書き込んでください。

C言語なんでも質問掲示板という名前ですがふわっとプログラミング関係なら何でもありな空気なので、大丈夫なはずですよ。

hide

Re: ある指定した単語を並び替えて、その単語を表示するプログラム

#3

投稿記事 by hide » 9年前

明日まで、といった割にはのんびりなのですね。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ある指定した単語を並び替えて、その単語を表示するプログラム

#4

投稿記事 by みけCAT » 9年前

wordlist.txtのフォーマットがわかりませんが、1行に1単語ずつ書かれており、余計な空白などはないと仮定してRubyで書いてみました。

コード:

dict = {}

File.open('wordlist.txt') do |f|
  f.each_line do |line|
    dict[line.chomp] = true
  end
end

input = gets.chomp

ans = []

input.chars.permutation.map { |x| x.join '' }.each do |w|
  ans.push w if dict.key? w
end

puts '指定した英単語: [' + input.chars.join(',') + ']'
puts ans.join ','
テスト用wordlist.txt

コード:

horse
hoers
shore
algorithm
logarithm
入力例1

コード:

horse
出力例1

コード:

指定した英単語: [h,o,r,s,e]
horse,hoers,shore
入力例2

コード:

algorithm
出力例2

コード:

指定した英単語: [a,l,g,o,r,i,t,h,m]
algorithm,logarithm
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ある指定した単語を並び替えて、その単語を表示するプログラム

#5

投稿記事 by みけCAT » 9年前

Misa0531 さんが書きました:できればjavascriptで教えていただけるとありがたいです。
一口にjavascriptと言っても、普通のWebブラウザで実行する奴、SpiderMonkey、Rhino、Node.jsなど多くの種類があり、それによってファイルの読み込み方や英単語の指定の仕方も違うでしょう。
  • 具体的にどの処理系を使うか
  • wordlist.txtのフォーマット
  • 英単語の指定の仕方(標準入力、関数の引数、HTMLのフォーム、など)
  • 結果の出力の仕方(標準出力、関数の戻り値、divやtextareaなどのHTML要素、ダイアログ、Webブラウザのコンソール、など)
をまず決めて提示するべきでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かずま

Re: ある指定した単語を並び替えて、その単語を表示するプログラム

#6

投稿記事 by かずま » 9年前

C++ で書いてみました。アルゴリズムを示すだけなので、出力形式は適当です。

コード:

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
 
using namespace std;

int main()
{
    string chars;
    while (cout << ">> ", cin >> chars) {
        ifstream ifs("wordlist.txt");
        if (!ifs) return 1;
        size_t len = chars.size();
        sort(chars.begin(), chars.end());
        string word;
        while (ifs >> word)
            if (word.size() == len) {
                string str = word;
                sort(word.begin(), word.end());
                if (word == chars) cout << str << endl;
            }
    }
}

閉鎖

“C言語何でも質問掲示板” へ戻る