結果

問題 No.18 うーさー暗号
ユーザー yo-kondoyo-kondo
提出日時 2018-03-21 10:28:38
言語 Kotlin
(1.9.23)
結果
AC  
実行時間 287 ms / 5,000 ms
コード長 1,563 bytes
コンパイル時間 12,208 ms
コンパイル使用メモリ 434,544 KB
実行使用メモリ 54,424 KB
最終ジャッジ日時 2024-04-30 17:20:27
合計ジャッジ時間 16,881 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 281 ms
54,148 KB
testcase_01 AC 286 ms
54,376 KB
testcase_02 AC 287 ms
54,324 KB
testcase_03 AC 287 ms
54,376 KB
testcase_04 AC 283 ms
54,172 KB
testcase_05 AC 287 ms
54,256 KB
testcase_06 AC 285 ms
54,424 KB
testcase_07 AC 284 ms
54,308 KB
testcase_08 AC 284 ms
54,308 KB
testcase_09 AC 284 ms
54,292 KB
testcase_10 AC 280 ms
54,360 KB
testcase_11 AC 281 ms
54,204 KB
testcase_12 AC 286 ms
54,284 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.kt:9:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
         ^
Main.kt:25:9: warning: variable 'decode' is never used
    var decode = ""
        ^

ソースコード

diff #

package yukicoder.no18

import java.nio.charset.StandardCharsets

/**
 * エントリポイント
 * @param args コマンドライン引数
 */
fun main(args: Array<String>) {
    val in1 = readLine()
    println(decoding(in1))
}

/**
 * 暗号化された文字列を復号化して返します。
 * @param code 暗号化された文字列
 * @return 復号化した文字列
 */
fun decoding(code: String?): String {
    // nullチェックを事前に行っておけば、スマートキャストされて、not null になります。
    if (code == null) {
        return ""
    }

    var decode = ""

    // 文字列をbyte配列(アスキーコード)に変換します。
    var byteAry = code.toByteArray()

    // withIndex でインデックスと値を取得することができます。
    for ((i, ch) in byteAry.withIndex()) {

        // iの数だけ減算(iは0から始まるため-1)
        var ascii = ch - i - 1

        // A以前の文字になった場合はZに進めるため、26を足す
        // 1回だけだとA~Zにならない可能性があるため、A~Zになるまでループします。
        while (ascii < 65) {
            ascii += 26
        }

        // Z以降の文字になった場合はAに戻すため、26を引く
        while (ascii > 90) {
            ascii -= 26
        }

        byteAry[i] = ascii.toByte()
    }
    // String(bytes: ByteArray, charset: Charset) でアスキーコードを文字列に変換します。
    return String(byteAry, StandardCharsets.US_ASCII)
}
0