Skip to content

Instantly share code, notes, and snippets.

@lbvf50mobile
Last active October 2, 2020 14:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lbvf50mobile/7a5f897806db9b248278a6b2dd3e81dd to your computer and use it in GitHub Desktop.
Save lbvf50mobile/7a5f897806db9b248278a6b2dd3e81dd to your computer and use it in GitHub Desktop.
Just PHP FUN 118.
<?php
# https://www.codewars.com/kata/526d42b6526963598d0004db Caesar Cipher Helper.
class CaesarCipher {
public $ch2n = ['A'=>1,'B'=>2,'C'=>3,'D'=>4,'E'=>5,'F'=>6,'G'=>7,'H'=>8,'I'=>9,'J'=>10,'K'=>11,'L'=>12,'M'=>13,'N'=>14,'O'=>15,'P'=>16,'Q'=>17,'R'=>18,'S'=>19,'T'=>20,'U'=>21,'V'=>22,'W'=>23,'X'=>24,'Y'=>25,'Z'=>26,];
public $n2ch = [1=>'A',2=>'B',3=>'C',4=>'D',5=>'E',6=>'F',7=>'G',8=>'H',9=>'I',10=>'J',11=>'K',12=>'L',13=>'M',14=>'N',15=>'O',16=>'P',17=>'Q',18=>'R',19=>'S',20=>'T',21=>'U',22=>'V',23=>'W',24=>'X',25=>'Y',26=>'Z',];
public $num = 0;
function __construct($n){ $this->num = $n;}
public function encode($str){
$answer = ""; $size = strlen($str);
$str = strtoupper($str);
for($i = 0; $i < $size; $i +=1)
if(preg_match('/[A-Z]/',$str[$i])){
$answer .= $this->n2ch[($this->ch2n[$str[$i]] + $this->num - 1) % 26 + 1];
}else{
$answer .= $str[$i];
}
return $answer;
}
public function decode($str){
$answer = ""; $size = strlen($str);
$str = strtoupper($str);
for($i = 0; $i < $size; $i +=1)
if(preg_match('/[A-Z]/',$str[$i])){
$number = $this->ch2n[$str[$i]] - 1;
$number = (26 + $number - $this->num)%26 + 1;
$answer .= $this->n2ch[$number];
}else{
$answer .= $str[$i];
}
return $answer;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment