基本的に、私の割り当ては、2次元アレイの内部にメッセージを格納すると、そのメッセージは、特定のに元のメッセージの「上に配置」される必要が座標がダッシュ及びOの一連のあるカバーメッセージ(行、列に付属します)メッセージを明らかにします。私は現在、どのように「場所」のテキストをデコードするため、元のメッセージの上にカバーメッセージににこだわっています。私の友人は、メッセージの上にカバーを解析して、一連の書き込みに私に言ったif
、「Oがある場合は、2次元配列で、その次元を取り、メッセージの変数に追加してください」と言う-statementsを。
これはメッセージです。
「我々は、これらの中で幸福追求権であることを、彼らは特定のunalienable権利と彼らの創造主で恵まれていることを、すべての人が同じように作られていることを、自明であることをこれらの真理を保持する。それはこれらの権利を確保するために、各国政府政府のいずれかのフォームがこれらの端部の破壊的になったとき、変更するか、またはそれを廃止し、新たな政府を制定する人々の権利である--That、支配の同意から自分だけの力を引き出す、男性の間で制定されていますこのような原則に基盤を置くと、そのような形でその権限を組織し、それらにとして最も可能性が高い彼らの安全と幸福に影響を与えると思われるものとします。」
そして、これはカバーメッセージは次のとおりです。
-O------O-----O-------------------------
--O----O--------------------O------O----
------O---O-----------------------------
----------------------O--------------O--
------------------------------O-----O---
-----------------------------------O----
-------O---------------------O----------
すべてのヘルプは、感謝感謝です。
編集:これまでのところ私は、メッセージとカバーメッセージを持つ2次元配列で2次元配列を埋めてきました。カバーメッセージがで始まる元のメッセージ列にフィットすることになっています[2][5]
。お役に立てれば。
import java.io.*;
import java.util.*;
public class M {
public static void main(String[] args) throws FileNotFoundException {
File inFile = new File("input.txt");
Scanner scanFile = new Scanner(inFile);
int lines;
lines = scanFile.nextInt();
String message = "";
for (int i = 0; i <= lines; i++)
message += scanFile.nextLine();
message = message.replace(" ", "");
message = message.replace(",", "");
message = message.replace("-", "");
String[][] am = new String[lines][59];
fill2DArray(am, message);
print2DArray(am);
System.out.println(Arrays.deepToString(am).replace("], ", "]\n"));
String r = scanFile.nextLine();
r = r.replace(",", "");
String ro = r.substring(0,1);
String co = r.substring(1);
int crow = Integer.parseInt(ro);
int ccol = Integer.parseInt(co);
int cline = scanFile.nextInt();
System.out.println(cline);
String cover = "";
for (int u = 0; u <= cline; u++)
cover += scanFile.nextLine();
String[][] cm = new String[cline][40];
fill(cm, cover);
print2DArray(cm);
}
public static void fill2DArray(String[][] arr2D,String message)
{
int counterLetters = 0;
for(int i =0;i<arr2D.length;i++) //arr.2D.length gives row length
{
for(int j = 0;j<arr2D[i].length;j++)//arr2D[].length gives column length
{
arr2D[i][j] = message.substring(counterLetters, counterLetters+1);
counterLetters++;
}
System.out.println();
}
}
public static void fill(String[][] arr2D,String cover)
{
int counterLetters = 0;
for(int i =0;i<arr2D.length;i++) //arr.2D.length gives row length
{
for(int j = 0;j<arr2D[i].length;j++)//arr2D[].length gives column length
{
arr2D[i][j] = cover.substring(counterLetters, counterLetters+1);
counterLetters++;
}
System.out.println();
}
}
public static void print2DArray(String[][] arr2D)
{
for(int i =0;i<arr2D.length;i++) //arr.2D.length gives row length
{
for(int j = 0;j<arr2D[i].length;j++)//arr2D[].length gives column length
{
System.out.print(arr2D[i][j]);
}
System.out.println();
}
}
}
カバーアレイ内の特定のインデックスにある要素がある場合に何を行う可能性は、配列の長さとチェックを反復していますO
。それがある場合は、完全なメッセージが含まれています文字列へのメッセージ配列から要素を追加します。
// Assuming that the cover and message arrays are of type chars
String messageStr = "";
// Since the message and cover arrays should be the same length, it doesn't matter which one is used to get the length of the loop
for (int i = 0; i < messageArray.length; i++) {
for (int j = 0; j < messageArray[i].length; j++) {
if (cover[i][j] == 'O') {
messageStr += messageArray[i][j];
}
}
}