-1
using System;

namespace HiddenMessageC

{

    class Program

    {
        static void Main(string[] args)
        {
            string encodedPinNumber = Console.ReadLine();
            string startPostionString = Console.ReadLine();
            int step = Convert.ToInt32(Console.ReadLine());

            string pin = "";
            int startPostion = startPostionString[0] - 'a';
            pin += encodedPinNumber[startPostion] + encodedPinNumber[startPostion + step];
            pin += encodedPinNumber[startPostion + 2 * step] + encodedPinNumber[startPostion + 3 * step];

            Console.WriteLine(pin);
            Console.Read();
        }
    }
}

最初の行には、長さが 4 を超えるテキストがあり、0 から 9 までの数字のみで構成されています。

2 行目は、テキスト内の非表示の PIN コードが始まるインデックスをエンコードします。可能な値は文字 a、b、または c で、a は開始インデックスが 0、b は開始インデックスが 1、c は開始インデックスが 2 であることを示します。

3 行目は、PIN コードの 4 桁を検出するために、最初の行 (上記で指定した開始インデックスから始まる) からのテキストでスキップする必要がある文字数を示す数字です。

123456789、a、2 => 1357 の結果が得られるはずですが、私の結果は => 100108 です。

いくつか提案をお願いできますか?:)

4

2 に答える 2

0

Turo が言ったように、インデックスを使用して文字列にアクセスすると、 が返されcharます。2 つのcharフィールドが+演算を実行すると、自動的に に変換されintます。

したがって、String.Substring メソッドを使用して個々の文字を取得してみてください。

pin += encodedPinNumber.Substring(startPostion, 1) + encodedPinNumber.Substring(startPostion + step, 1);
pin += encodedPinNumber.Substring(startPostion + 2 * step, 1) + encodedPinNumber.Substring(startPostion + 3 * step, 1);

または、すべての文字をリストに格納し、インデックスを使用してそれらにアクセスします。

List<string> stringlist = encodedPinNumber.Select(c => c.ToString()).ToList();

pin += stringlist[startPostion] + stringlist[startPostion + step];
pin += stringlist[startPostion + 2 * step] + stringlist[startPostion + 3 * step];
于 2021-01-25T02:41:58.897 に答える
0

4 つの割り当てまたはループに分割してみてください。

encodedPinNumber[startPostion] + encodedPinNumber[startPostion + step]

私が推測していることをやっています:char値の追加。

'1' = 49、'3' = 51、100 を与える

'5' = 53、'7' = 55、108 を与える

または、char-Array として文字列を使用する代わりに、部分文字列を使用します。

于 2021-01-23T11:18:45.363 に答える