Javaで南京錠のプログラムを作成する方法を教えてください。
1 プログラムの仕様
(1)電子南京錠の仕様
入力された番号の中に、正しい番号が連続した正しい順番で含まれていれば開錠することができる。
(2)電子南京錠を開錠するための正しい番号LiがN個、やけくそで入力した番号IiがM個の時、M個のIiのなかに、N個のLiが同じ順番で含まれていた場合はunlock、含まれていない場合はlockと出力。
(3)もし、L のkey値の桁数(つまりn)より、I のkey 値の桁数(つまりm)が小さければ、同じ値が存在するはずがないので「lock」ということになる。
2.プログラムの説明
<桁数の条件を満たしている場合>
(例)Lのkey値が「3572」の値で、Iのkey値が「43633572」の値だったとする
① 3、5、7、2 ※先頭から一致しない
↕
4、3、6、3、3、5、7、2、9
② 4、5、7、2 ※先頭は一致するが、2文字目が一致しない
↕ ↕
4、3、6、3、3、5、7、2、9
③ 3、5、7、2 ※先頭から一致しない
↕
4、3、6、3、3、5、7、2、9
④ 3、5、7、2 ※先頭は一致するが、2文字目が一致しない
↕
4、3、6、3、3、5、7、2、9
⑤ 3、5、7、2 ※4文字全てが一致する。よって「unlock 」となる。
↕ ↕ ↕ ↕
4、3、6、3、3、5、7、2、9
<上記の動き>
① Iのkey 値の先頭から順に、Lのkey値が一致するかを調べている。
② もし、1文字目から違っていたら、Iの位置を1つずらして、またLの先頭文字と一致するか調べる。
③ もし、1文字目が一致していたら、2文字目、3文字目と順に一致するかを調べていく。
④ Lのkey値の最後まで全て一致していたら「unlock」
⑤ 途中で文字が違っていたら、Iの位置を1つずらして、またL の先頭文字と一致するかを調べていく。
⑥ これを繰り返し、Lのkey 値と全て一致するものが見つからなかったら「lock」となる。
3.作成方法
① nとmの桁数のチェックをする。
nの桁数が大きいときは必ず「lock 」となる。
桁数条件を満たしている場合は基準で動くのはIのkey 値(配列)
② I の配列の先頭から順に、最後のL の文字が取れるまで(Lの文字数分が取れないと×)1文字ずつ繰り返します。(for でもwhile でもOK)・・・ループ①
③ L の配列の繰り返しを行います。これはwhileで行うのが良い。・・・ループ②
L の文字数分繰り返せば良いが、L とI の配列の内容が異なった時点で繰り返しを終了した
いから。つまり条件は2つになる。
④ 繰り返しの中では、L とI の配列の添字をそれぞれカウントアップさせれば良い。
※ if 文を書く必要はありません。while の条件で抜け出てきますから。
⑤ 繰り返しを終了した時点で、L の添字と文字数が一致していれば全て一致していたと分かる。
A.全て一致の場合
何かしら印になる変数に印の値を入れて、ループを抜けて良い。
※ ループを抜けるための命令がある。
B.一致していない場合
途中で繰り返しを出てきたことになるので、それぞれLとIの2つの添字を次の処理のために設定し直す。
※ Lの添字は先頭に戻す。
※ Iの添字は、ループ①のカウントの次に合わせる。(for文の場合は自動的に次になります。)
★ 添字は全部で3つ必要
Ⅰ ループ①用の添字
Ⅱ Lの配列の添字
Ⅲ I の配列の途中から文字を調べるための添字
⑥ 全てのループ処理を終えたら、一致の有無のための印の値を判定して、「unlock」か「lock」を出力する。
4.入力値
N (電子南京錠を開錠するための番号の個数)
L_1 L_2 L_3 ... L_N (電子南京錠を開錠するための番号)
M (やけくそで入力された番号の個数)
I_1 I_2 I_3 ... I_M (やけくそで入力された番号)
5.出力値
M個のIiのなかに、N個のLiが同じ順番で含まれていた場合はunlock、含まれていない場合はlockと出力
No.2ベストアンサー
- 回答日時:
System.out.println("43633572".contains("3572")? "unlock": "lock");
参考)
https://docs.oracle.com/javase/jp/17/docs/api/ja …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- WordPress(ワードプレス) Wordpressの記事URLを自由に決めたい 3 2022/06/02 12:05
- Visual Basic(VBA) 先頭と末尾を指定して連続した数字を入力 1 2022/09/14 13:12
- Java Java モンスターブリーダー 1 2023/02/05 09:44
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) Excelについて質問です(ver2019) 1 2023/06/30 21:20
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Excel(エクセル) エクセル関数について教えてください 4 2023/02/05 14:47
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
- ・ちょっと先の未来クイズ第5問
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Do whileでExitせず、ループの...
-
画面を強制的に再描画させる方法
-
vb.netからエクセル関数書き込み
-
Escキーを押すと、中断する時と...
-
乱数の桁数指定、または範囲指定。
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
xmplayの使い方
-
VBAで3秒だけ時間を止めたい
-
範囲指定したセルを1つずつ飛...
-
vb2005 webbrowserでリンクを...
-
VBAの関して
-
テキストボックスの名前に変数...
-
Delphi6+SQLServerでSQLの抽出...
-
DOSコマンドのループ内のTIMEコ...
-
ループフリー
-
動きっぱなしです。止め方とプ...
-
多重ループの抜けだし方
-
StatementとResultSetのclose()...
-
VBA横データを縦にしたいです
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UWSCの終了の仕方
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
Escキーを押すと、中断する時と...
-
VB2010でCSVファイルの読み込み
-
DOSコマンドのループ内のTIMEコ...
-
VBAで3秒だけ時間を止めたい
-
範囲指定したセルを1つずつ飛...
-
vb.netからエクセル関数書き込み
-
DoEventsが必要な理由について
-
イベントの発生を待つ
-
流れ図(フローチャート)が分か...
-
CSVファイルの特定の行だけを読...
-
アクティブセルから、A列最終行...
-
CASL2のアセンブリ(?)で質問...
-
VBA横データを縦にしたいです
-
UWSCに制限時間を付けたいです
-
Do whileでExitせず、ループの...
-
VBA for i=1 to lastrow
-
テキストボックスの名前に変数...
おすすめ情報