結果
| 問題 | No.18 うーさー暗号 | 
| コンテスト | |
| ユーザー |  sironekotoro | 
| 提出日時 | 2019-01-09 19:42:01 | 
| 言語 | Perl (5.40.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 4 ms / 5,000 ms | 
| コード長 | 1,350 bytes | 
| コンパイル時間 | 322 ms | 
| コンパイル使用メモリ | 5,248 KB | 
| 実行使用メモリ | 5,504 KB | 
| 最終ジャッジ日時 | 2024-11-24 00:58:04 | 
| 合計ジャッジ時間 | 956 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 13 | 
コンパイルメッセージ
Main.pl syntax OK
ソースコード
use v5.16.3;
# my $input
#     = 'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ';
my $input = <>;
chomp $input;
# 与えられた文字列を分割して配列に格納する
my @str = split //, $input;
my @abc = ( "A" .. "Z" );
my %hash;
my $answer = '';
# 配列に対してeachを使うと、
# インデックスと要素を取得することができる
while ( my ( $index, $char ) = each(@abc) ) {
    $hash{$char} = $index;
    # %h = ( A => 0, B => 1, C => 2,... )
    # というようなハッシュを作る
}
# 与えられた文字列(配列化済)を処理する
while ( my ( $index, $char ) = each @str ) {
   # $index 配列のインデックス = 何文字目を処理しているか
   # 0文字目は無いため、1を加える
    $index = $index + 1;
    # ずらす数がアルファベットの文字数を超えた
    # 場合のため、剰余を求める
    $index = $index % ( scalar @abc );
    # アルファベットの配列@abcの添え字に対応する
    # 文字を表示する
    # 添え字は%hashのkeyに対応するvalueから
    # 何文字目を処理しているかの$indexを
    # 引いた値
    #
    # 該当する文字列を $answer に連結していく
    $answer .= $abc[ $hash{$char} - $index ];
}
say $answer;
            
            
            
        