人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaScriptで下記のようなものを作っていただけませんでしょうか。
いくつかの文字列をあるルールに従って並べて書き出すスクリプトです。
作っていただけた方には少ないですが500ポイントを差し上げます。

具体的には、いくつかの文字の組み合わせで出来た文字列を与え、各行の文字数を決めると「下の文字列はすぐ上の文字列に1文字加えたものか、1文字減らしたものしか置けない」「各文字列は一度しか使えない」というルールにしたがって文字列を並べてくれるというものです。(ルールを満たす並べ方が複数ある場合はすべて書き出し、不可能な場合はエラーを返す)
例えばa,b,c3文字の組み合わせで出来た文字列、a,b,c,ab,bc,ac,abcを与え、各行の文字数を(1,2,1,2,1,2,3)と決めると、

a
ab
b
bc
c
ac
abc

等(実際は他にもあります)の結果を書き出してくれるスクリプトです。この例は3文字で出来た7つの文字列でしたが、文字数や文字列数が増えても対応出来るものを希望します。
説明に解りにくい部分があれば質問してください。
また、以前よく似た質問をしましたのでそちらも参考にしてください。
http://q.hatena.ne.jp/1207875536
よろしくお願いします。

●質問者: minapoo
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TransFreeBSD
●100ポイント ベストアンサー

http://jsdo.it/TransFreeBSD/2ZDS
コメント少なめ&ちょっと適当な感じですが。
あと、基本的なふるい分け後は全探査的なので、特に文字種が増えると時間食うかも知れません。

ところで、なんに使うんでしょう?
文字数の順番分かってる時点で正解分かってる気がするんですが。


minapooさんのコメント
早速ありがとうございます。 複数の解がある物についてはすべて書き出すようにしていただくとありがたいです。

TransFreeBSDさんのコメント
変えてみました。

minapooさんのコメント
素早く対応していただきありがとうございます。 6個解がああるもの→6個 144個の解があるもの2種→2種とも144個 60360個の解があるもの→60360個 すべて書き出されました。 本当にありがとうございました。 ポイントをお送りさせていただきます。

2 ● Hikaru
●0ポイント

最適化や値チェックもしてませんし、バグがあるかもしれないですがとりあえず
時間があれば多少修正します
不満な点があれば教えて下さい

短縮URL [ll.la] 9g6m

ついでに動かすブラウザも教えていただけるとより良く書けます


minapooさんのコメント
ありがとうございます。 解がある場合でもなぜか失敗になる場合があります。 ブラウザはGoogle Chromeです。

Hikaruさんのコメント
どのようなときですか? 末尾に改行を入れていたりしませんか?

minapooさんのコメント
ご返答ありがとうございます。 何度かのテストの結果、 6個解がああるもの→4個書き出されました。 144個の解があるもの2種→1種は2個書き出されました。もう1種は失敗 60360個の解があるもの→失敗 という結果でした。 せっかくお考えいただきましたが、TransFreeBSDさんにお作りいただいたものが条件を満たしておりますので質問を終了させていただきます。 ありがとうございました。

Hikaruさんのコメント
わかりました。 どこが間違っているか知りたいので どうかバグる組み合わせを1つ教えていただいてもよろしいですか?

minapooさんのコメント
はい、この質問の例にさせていただきました組み合せ、boaoaさんのスクリプトにも書いていただいている組み合せですね。これは解が6個あります。これにつきまして書き出された解が4個でした。

Hikaruさんのコメント
ああ、なるほど、真ん中に追加する場合があるのを忘れておりました。 お役に立てなくて申し訳ないですが私の良い勉強にすることがなできました。 どうもありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ