結果
| 問題 | 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;
sironekotoro